HTML5 এর SVG (Scalable Vector Graphics) গাইড ও নোট

Web Development - এইচটিএমএল (HTML5)
466

HTML5 এর SVG (Scalable Vector Graphics) হলো একটি XML-ভিত্তিক ভাষা যা দুই-মাত্রিক ভেক্টর গ্রাফিক্স তৈরি এবং রেন্ডার করার জন্য ব্যবহৃত হয়। SVG ব্যবহার করে তৈরি করা গ্রাফিক্সগুলো স্কেলযোগ্য, অর্থাৎ কোনো মাপ পরিবর্তনের উপরেও তাদের মান ক্ষতি হয় না। এটি ওয়েব ডেভেলপারদের জন্য একটি শক্তিশালী টুল যা দিয়ে তারা ইন্টারেক্টিভ, অ্যানিমেটেড, এবং রেসপনসিভ ভেক্টর গ্রাফিক্স সহজে তৈরি করতে পারে।


১. SVG কী?

SVG হল একটি মার্কআপ ভাষা যা দুই-মাত্রিক ভেক্টর গ্রাফিক্সকে প্রকাশ এবং সংরক্ষণ করে। এটি HTML এর মতোই ট্যাগ-ভিত্তিক, তবে SVG নিজস্ব ট্যাগ এবং অ্যাট্রিবিউটস ব্যবহার করে গ্রাফিক্স তৈরি করে।

মৌলিক সিনট্যাক্স:

<svg width="500" height="400" xmlns="http://www.w3.org/2000/svg">
    <!-- SVG কন্টেন্ট এখানে -->
</svg>
  • <svg>: SVG এলিমেন্ট যা গ্রাফিক্স আঁকার জন্য ব্যবহৃত হয়।
  • width এবং height: SVG এর প্রস্থ এবং উচ্চতা নির্ধারণ করে।
  • xmlns: SVG এর namespace নির্ধারণ করে, যা SVG ট্যাগগুলোকে সঠিকভাবে রেন্ডার করতে প্রয়োজন।

২. SVG এর বৈশিষ্ট্যসমূহ

  1. স্কেলযোগ্যতা: SVG গ্রাফিক্স কোন মাপ পরিবর্তনের উপরেও স্পষ্ট এবং ঝকঝকে থাকে।
  2. বেসডেটিক: SVG কোড লেখা সহজ এবং এটিকে সরাসরি HTML ডকুমেন্টে এম্বেড করা যায়।
  3. ইন্টারেক্টিভিটি: SVG গ্রাফিক্সে ইভেন্ট হ্যান্ডলিং এবং অ্যানিমেশন যোগ করা যায়।
  4. স্টাইলিং: CSS ব্যবহার করে SVG গ্রাফিক্সের স্টাইল পরিবর্তন করা যায়।
  5. SEO ফ্রেন্ডলি: SVG ট্যাগগুলো টেক্সট ভিত্তিক হওয়ায় সার্চ ইঞ্জিন অপ্টিমাইজেশনের সুবিধা প্রদান করে।
  6. অ্যানিমেশন: SMIL, CSS, এবং JavaScript ব্যবহার করে SVG গ্রাফিক্সে অ্যানিমেশন যোগ করা যায়।

৩. SVG এর ভূমিকা

SVG ওয়েব ডেভেলপমেন্টে ভেক্টর গ্রাফিক্সের জন্য একটি গুরুত্বপূর্ণ ফরম্যাট হিসেবে কাজ করে। এটি বিভিন্ন ধরনের গ্রাফিক্স যেমন আইকন, লোগো, চার্ট, ইন্টারেক্টিভ ইলিমেন্ট, এবং অ্যানিমেটেড ভিজ্যুয়ালস তৈরি করতে ব্যবহৃত হয়। SVG এর সাহায্যে তৈরি গ্রাফিক্সগুলো বিভিন্ন স্ক্রিন সাইজে এবং রেজোলিউশনে ভালোভাবে দেখায় যায়, যা রেসপনসিভ ডিজাইনের জন্য অত্যন্ত উপকারী।


৪. SVG এর ব্যবহার ক্ষেত্র

  1. ওয়েব আইকনস এবং লোগো: স্কেলযোগ্য এবং স্টাইলিং সহজ হওয়ায় SVG আইকনস এবং লোগো তৈরিতে ব্যবহৃত হয়।
  2. ডেটা ভিজ্যুয়ালাইজেশন: চার্ট, গ্রাফ, এবং ডায়াগ্রাম তৈরি করতে SVG ব্যবহার করা হয়।
  3. ইন্টারেক্টিভ ইলিমেন্টস: বোতাম, মেনু, এবং অন্যান্য ইন্টারেক্টিভ উপাদান তৈরি করতে SVG ব্যবহার করা হয়।
  4. অ্যানিমেশন: মসৃণ অ্যানিমেশন তৈরি করতে SVG ব্যবহার করা হয়, যা ওয়েবসাইটকে আরও জীবন্ত করে তোলে।
  5. গেমস: দুই-মাত্রিক গেম ডেভেলপমেন্টে SVG ব্যবহার করা হয়।
  6. ইনফোগ্রাফিকস: তথ্যপূর্ণ ভিজ্যুয়াল উপস্থাপনার জন্য SVG গ্রাফিক্স ব্যবহৃত হয়।

৫. SVG এ বিভিন্ন Shapes তৈরি

SVG এ বিভিন্ন ধরনের শেপ তৈরি করা যায়, যেমন রেখা, বর্গ, বৃত্ত, এলিপস, পাথ ইত্যাদি। নিচে কিছু উদাহরণ দেওয়া হলো:

৫.১. রেখা আঁকা
<svg width="500" height="400" xmlns="http://www.w3.org/2000/svg">
    <line x1="50" y1="50" x2="450" y2="50" stroke="blue" stroke-width="2" />
</svg>

ব্যাখ্যা:

  • <line>: একটি সরল রেখা আঁকে।
  • x1, y1: রেখার শুরু পয়েন্ট।
  • x2, y2: রেখার শেষ পয়েন্ট।
  • stroke: রেখার রঙ নির্ধারণ করে।
  • stroke-width: রেখার পুরুত্ব নির্ধারণ করে।
৫.২. বর্গ আঁকা
<svg width="500" height="400" xmlns="http://www.w3.org/2000/svg">
    <rect x="100" y="100" width="150" height="150" fill="red" stroke="black" stroke-width="3" />
</svg>

ব্যাখ্যা:

  • <rect>: একটি রেক্ট্যাঙ্গেল (বর্গ বা আয়তক্ষেত্র) আঁকে।
  • x, y: রেক্ট্যাঙ্গেলের উপরের বাম কোণ।
  • width, height: রেক্ট্যাঙ্গেলের প্রস্থ এবং উচ্চতা।
  • fill: রেক্ট্যাঙ্গেলের ফিল রঙ।
  • stroke: রেক্ট্যাঙ্গেলের স্ট্রোক রঙ।
  • stroke-width: স্ট্রোকের পুরুত্ব।
৫.৩. বৃত্ত আঁকা
<svg width="500" height="400" xmlns="http://www.w3.org/2000/svg">
    <circle cx="250" cy="200" r="50" fill="green" stroke="black" stroke-width="2" />
</svg>

ব্যাখ্যা:

  • <circle>: একটি বৃত্ত আঁকে।
  • cx, cy: বৃত্তের কেন্দ্রের x এবং y কো-অর্ডিনেট।
  • r: বৃত্তের রেডিয়াস।
  • fill: বৃত্তের ফিল রঙ।
  • stroke: বৃত্তের স্ট্রোক রঙ।
  • stroke-width: স্ট্রোকের পুরুত্ব।
৫.৪. এলিপস আঁকা
<svg width="500" height="400" xmlns="http://www.w3.org/2000/svg">
    <ellipse cx="250" cy="200" rx="100" ry="50" fill="yellow" stroke="black" stroke-width="2" />
</svg>

ব্যাখ্যা:

  • <ellipse>: একটি এলিপস আঁকে।
  • cx, cy: এলিপসের কেন্দ্রের x এবং y কো-অর্ডিনেট।
  • rx, ry: এলিপসের রেডিয়াস এক্স এবং রেডিয়াস ওয়াই।
  • fill: এলিপসের ফিল রঙ।
  • stroke: এলিপসের স্ট্রোক রঙ।
  • stroke-width: স্ট্রোকের পুরুত্ব।
৫.৫. পাথ আঁকা
<svg width="500" height="400" xmlns="http://www.w3.org/2000/svg">
    <path d="M50 350 L150 50 L250 350 Z" fill="orange" stroke="black" stroke-width="2" />
</svg>

ব্যাখ্যা:

  • <path>: একটি জটিল পাথ আঁকে।
  • d: পাথের ডেটা যা পাথের ফর্ম নির্ধারণ করে।
    • M: মুভ টু (পাথের শুরু পয়েন্ট)।
    • L: লাইন টু (পথের মধ্যে রেখা আঁকে)।
    • Z: ক্লোজ পাথ (পাথকে বন্ধ করে)।
  • fill: পাথের ফিল রঙ।
  • stroke: পাথের স্ট্রোক রঙ।
  • stroke-width: স্ট্রোকের পুরুত্ব।

৬. টেক্সট রেন্ডারিং SVG এ

SVG এ টেক্সট যোগ করা যায় এবং এটি CSS এবং অন্যান্য SVG প্রপার্টি ব্যবহার করে কাস্টমাইজ করা যায়।

উদাহরণ: SVG এ টেক্সট যোগ করা
<svg width="500" height="400" xmlns="http://www.w3.org/2000/svg">
    <text x="250" y="200" font-family="Arial" font-size="30" fill="blue" text-anchor="middle">
        হ্যালো, SVG!
    </text>
</svg>
``

**ব্যাখ্যা:**
- **`<text>`**: SVG এ টেক্সট যোগ করে।
- **`x`, `y`**: টেক্সটের অবস্থান নির্ধারণ করে।
- **`font-family`**: টেক্সটের ফন্ট নির্ধারণ করে।
- **`font-size`**: টেক্সটের সাইজ নির্ধারণ করে।
- **`fill`**: টেক্সটের রঙ নির্ধারণ করে।
- **`text-anchor`**: টেক্সটের এলাইনমেন্ট নির্ধারণ করে, যেমন `'start'`, `'middle'`, `'end'`।

##### **স্টাইলিং এবং ফরম্যাটিং**
SVG টেক্সটে CSS ব্যবহার করে আরও স্টাইল যোগ করা যায়:
```html
<svg width="500" height="400" xmlns="http://www.w3.org/2000/svg">
    <style>
        .title {
            font-family: 'Verdana';
            font-size: 40px;
            fill: #FF6347;
            text-decoration: underline;
        }
    </style>
    <text x="250" y="100" class="title" text-anchor="middle">
        SVG টেক্সট
    </text>
</svg>

ব্যাখ্যা:

  • <style>: SVG এর মধ্যে CSS স্টাইল শিট।
  • .title ক্লাস: টেক্সটের ফন্ট, সাইজ, রঙ, এবং অন্যান্য স্টাইল নির্ধারণ করে।
  • class="title": টেক্সটে CSS ক্লাস অ্যাপ্লাই করে স্টাইলিং প্রয়োগ করা হয়।

৭. ইমেজ রেন্ডারিং SVG এ

SVG এ ইমেজ এম্বেড করা যায় যা ভেক্টর এবং রাষ্ট্রীয় ফরম্যাটের ইমেজকে অন্তর্ভুক্ত করে।

উদাহরণ: SVG এ ইমেজ যোগ করা
<svg width="500" height="400" xmlns="http://www.w3.org/2000/svg">
    <image href="your-image-file.jpg" x="50" y="50" width="200" height="150" />
</svg>

ব্যাখ্যা:

  • <image>: SVG এ ইমেজ যোগ করে।
  • href: ইমেজের উৎস নির্ধারণ করে।
  • x, y: ইমেজের অবস্থান নির্ধারণ করে।
  • width, height: ইমেজের প্রস্থ এবং উচ্চতা নির্ধারণ করে।
ইমেজ রোটেট এবং ট্রান্সফর্ম করা
<svg width="500" height="400" xmlns="http://www.w3.org/2000/svg">
    <image href="your-image-file.jpg" x="100" y="100" width="200" height="150" transform="rotate(45 200 175)" />
</svg>

ব্যাখ্যা:

  • transform="rotate(angle cx cy)": ইমেজকে নির্দিষ্ট কোণ (angle) এবং কেন্দ্র পয়েন্ট (cx, cy) অনুযায়ী রোটেট করে।

৮. SVG এ অ্যানিমেশন

SVG এ বিভিন্ন ধরণের অ্যানিমেশন যোগ করা যায় যেমন মুভমেন্ট, রঙ পরিবর্তন, স্কেলিং ইত্যাদি। SVG এ অ্যানিমেশন করার জন্য SMIL (Synchronized Multimedia Integration Language) ব্যবহার করা হয়, এছাড়াও CSS এবং JavaScript ব্যবহার করে অ্যানিমেশন করা যায়।

SMIL অ্যানিমেশন উদাহরণ:
<svg width="500" height="400" xmlns="http://www.w3.org/2000/svg">
    <circle cx="50" cy="200" r="30" fill="blue">
        <animate attributeName="cx" from="50" to="450" dur="5s" repeatCount="indefinite" />
    </circle>
</svg>

ব্যাখ্যা:

  • <animate>: একটি SVG ইলিমেন্টের অ্যাট্রিবিউট অ্যানিমেট করে।
  • attributeName: কোন অ্যাট্রিবিউট অ্যানিমেট হবে।
  • from এবং to: অ্যাট্রিবিউটের মান কিভাবে পরিবর্তিত হবে।
  • dur: অ্যানিমেশনের সময়কাল নির্ধারণ করে।
  • repeatCount: অ্যানিমেশন কতবার পুনরাবৃত্তি হবে।
CSS অ্যানিমেশন উদাহরণ:
<svg width="500" height="400" xmlns="http://www.w3.org/2000/svg">
    <style>
        .pulse {
            animation: pulse 2s infinite;
        }
        @keyframes pulse {
            0% { r: 20; fill: red; }
            50% { r: 30; fill: orange; }
            100% { r: 20; fill: red; }
        }
    </style>
    <circle cx="250" cy="200" r="20" fill="red" class="pulse" />
</svg>

ব্যাখ্যা:

  • .pulse ক্লাস: CSS অ্যানিমেশন ক্লাস যা বৃত্তের রেডিয়াস এবং রঙ পরিবর্তন করে।
  • @keyframes: অ্যানিমেশনের ধাপগুলি নির্ধারণ করে।
  • animation: অ্যানিমেশন প্রপার্টি যা নির্দিষ্ট @keyframes চালু করে।
JavaScript অ্যানিমেশন উদাহরণ:
<svg id="mySvg" width="500" height="400" xmlns="http://www.w3.org/2000/svg">
    <circle id="myCircle" cx="50" cy="200" r="30" fill="green" />
</svg>

<script>
    const circle = document.getElementById('myCircle');
    let posX = 50;
    let speed = 2;
    
    function animate() {
        posX += speed;
        if (posX > 450 || posX < 50) {
            speed = -speed;
        }
        circle.setAttribute('cx', posX);
        requestAnimationFrame(animate);
    }
    
    animate();
</script>

ব্যাখ্যা:

  • requestAnimationFrame: মসৃণ অ্যানিমেশন নিশ্চিত করতে ব্রাউজারের রিফ্রেশ রেট অনুযায়ী ফাংশন কল করে।
  • setAttribute: বৃত্তের cx অ্যাট্রিবিউট পরিবর্তন করে মুভমেন্ট তৈরি করে।

৯. SVG এ ইন্টারেক্টিভ গ্রাফিক্স

SVG ইন্টারেক্টিভ গ্রাফিক্স তৈরি করতে মাউস ইভেন্ট (ক্লিক, হোভার, মুভ) এবং কীবোর্ড ইভেন্ট ব্যবহার করা যায়। এছাড়াও, JavaScript এর মাধ্যমে আরও জটিল ইন্টারঅ্যাকশন তৈরি করা সম্ভব।

উদাহরণ: হোভার ইভেন্টে রঙ পরিবর্তন
<svg width="500" height="400" xmlns="http://www.w3.org/2000/svg">
    <style>
        .hover-circle:hover {
            fill: purple;
            cursor: pointer;
        }
    </style>
    <circle cx="250" cy="200" r="50" fill="blue" class="hover-circle" />
</svg>

ব্যাখ্যা:

  • :hover পছন্দ: মাউস হোভার করলে বৃত্তের রঙ পরিবর্তন করে এবং কার্সর পরিবর্তন করে।
  • class="hover-circle": CSS ক্লাস ব্যবহার করে হোভার ইফেক্ট প্রয়োগ করা হয়।
JavaScript ইন্টারঅ্যাকশন উদাহরণ: ক্লিক ইভেন্টে রঙ পরিবর্তন
<svg width="500" height="400" xmlns="http://www.w3.org/2000/svg">
    <circle id="interactiveCircle" cx="250" cy="200" r="50" fill="teal" />
</svg>

<script>
    const circle = document.getElementById('interactiveCircle');

    circle.addEventListener('click', function() {
        const currentColor = circle.getAttribute('fill');
        const newColor = currentColor === 'teal' ? 'orange' : 'teal';
        circle.setAttribute('fill', newColor);
    });
</script>

ব্যাখ্যা:

  • addEventListener('click'): বৃত্তে ক্লিক করলে ইভেন্ট ট্রিগার হয়।
  • রঙ পরিবর্তন: ক্লিকের ভিত্তিতে বৃত্তের রঙ পরিবর্তন করা হয়।

১০. SVG এর সাথে CSS এবং JavaScript ব্যবহার

SVG গ্রাফিক্সকে আরও স্টাইলিশ এবং ইন্টারেক্টিভ করার জন্য CSS এবং JavaScript ব্যবহার করা হয়।

CSS স্টাইলিং উদাহরণ:
<svg width="500" height="400" xmlns="http://www.w3.org/2000/svg">
    <style>
        .styled-rect {
            fill: lightblue;
            stroke: navy;
            stroke-width: 4;
        }
        .styled-rect:hover {
            fill: lightcoral;
            cursor: pointer;
        }
    </style>
    <rect x="100" y="100" width="150" height="100" class="styled-rect" />
</svg>

ব্যাখ্যা:

  • .styled-rect ক্লাস: রেক্ট্যাঙ্গেলের ফিল রঙ, স্ট্রোক রঙ, এবং স্ট্রোক পুরুত্ব নির্ধারণ করে।
  • :hover পছন্দ: হোভার করলে রঙ পরিবর্তন করে এবং কার্সর পরিবর্তন করে।
JavaScript ইন্টারঅ্যাকশন উদাহরণ:
<svg width="500" height="400" xmlns="http://www.w3.org/2000/svg">
    <circle id="animCircle" cx="250" cy="200" r="40" fill="green" />
</svg>

<script>
    const circle = document.getElementById('animCircle');
    let growing = true;

    function animateCircle() {
        let radius = parseInt(circle.getAttribute('r'));
        if (growing) {
            radius += 1;
            if (radius >= 60) growing = false;
        } else {
            radius -= 1;
            if (radius <= 40) growing = true;
        }
        circle.setAttribute('r', radius);
        requestAnimationFrame(animateCircle);
    }

    animateCircle();
</script>

ব্যাখ্যা:

  • অ্যানিমেশন লুপ: requestAnimationFrame ব্যবহার করে অ্যানিমেশন চালু রাখা হয়।
  • রেডিয়াস পরিবর্তন: বৃত্তের রেডিয়াস বাড়ানো এবং কমানো হয় যাতে এটি পাম্পিং ইফেক্ট তৈরি করে।

১১. Best Practices (শ্রেষ্ঠ অনুশীলন)

  1. সেমান্টিক এবং অ্যাক্সেসিবিলিটি:
    • Fallback কন্টেন্ট: SVG এলিমেন্টের ভিতরে fallback কন্টেন্ট প্রদান করুন যাতে Canvas বা SVG সমর্থন না করলে ব্যবহারকারীদের তথ্য প্রদান করা যায়।
    • ARIA অ্যাট্রিবিউটস: SVG গ্রাফিক্সকে স্ক্রিন রিডার ব্যবহারকারীদের জন্য বোধগম্য করতে ARIA অ্যাট্রিবিউটস ব্যবহার করুন, যেমন role="img" এবং aria-label
  2. পারফরমেন্স অপ্টিমাইজেশন:
    • Minimize SVG কোড: অপ্রয়োজনীয় স্পেস, কমেন্ট, এবং অতিরিক্ত ট্যাগ বাদ দিন।
    • Optimize ইমেজ এবং রিসোর্স: SVG ফাইলের সাইজ কমাতে টুলস ব্যবহার করুন যেমন SVGO।
  3. Responsive Design:
    • ViewBox ব্যবহার: viewBox অ্যাট্রিবিউট ব্যবহার করে SVG গ্রাফিক্সকে রেসপনসিভ করে তুলুন।
    • CSS ব্যবহার: CSS মিডিয়া কুয়েরি ব্যবহার করে SVG এর সাইজ এবং স্টাইল পরিবর্তন করুন বিভিন্ন ডিভাইসের জন্য।
  4. স্টাইলিং এবং কাস্টমাইজেশন:
    • CSS এর সাথে সমন্বয়: SVG গ্রাফিক্সকে CSS এর মাধ্যমে স্টাইলিশ করুন এবং তাদের রঙ, সাইজ, এবং অন্যান্য প্রপার্টি পরিবর্তন করুন।
    • JavaScript ইন্টারঅ্যাকশন: SVG গ্রাফিক্সে ইন্টারঅ্যাকশন এবং অ্যানিমেশন যোগ করতে JavaScript ব্যবহার করুন।
  5. ব্রাউজার সমর্থন:
    • Cross-Browser Compatibility: নিশ্চিত করুন যে আপনার SVG গ্রাফিক্স সব প্রধান ব্রাউজারে সঠিকভাবে প্রদর্শিত হচ্ছে।
    • Fallbacks প্রদান: পুরানো ব্রাউজারগুলির জন্য fallback ভ্যালিডেশন এবং বিকল্প উপায় বিবেচনা করুন।
  6. Accessibility (অ্যাক্সেসিবিলিটি):
    • স্পষ্ট লেবেল: SVG গ্রাফিক্সে স্পষ্ট লেবেল এবং টেক্সট ব্যবহার করুন যাতে স্ক্রিন রিডার ব্যবহারকারীরা সহজে বুঝতে পারে।
    • Keyboard Navigable: ইন্টারেক্টিভ SVG ইলিমেন্টগুলো কীবোর্ডের মাধ্যমে নিয়ন্ত্রণযোগ্য করে তুলুন।
  7. Maintenance এবং Readability:
    • কমেন্ট ব্যবহার: SVG কোডে কমেন্ট ব্যবহার করে বিভিন্ন অংশের ব্যাখ্যা দিন।
    • কোড অর্গানাইজেশন: SVG কোডকে সঠিকভাবে অর্গানাইজ করুন যাতে কোড মেইনটেইন করা সহজ হয়।

HTML5 এর SVG (Scalable Vector Graphics) ওয়েব ডেভেলপমেন্টে ভেক্টর গ্রাফিক্স তৈরির জন্য একটি অত্যন্ত কার্যকরী এবং বহুমুখী টুল। এটি ব্যবহার করে ডেভেলপাররা ইন্টারেক্টিভ, অ্যানিমেটেড, এবং রেসপনসিভ গ্রাফিক্স তৈরি করতে পারে যা ওয়েব পেজকে আরও আকর্ষণীয় এবং তথ্যবহুল করে তোলে। SVG এর স্কেলযোগ্যতা, ইন্টারেক্টিভিটি, এবং স্টাইলিং ক্ষমতা ওয়েব ডিজাইনে ভেক্টর গ্রাফিক্স ব্যবহারের ক্ষেত্রে এটিকে একটি আদর্শ পছন্দ করে তোলে।

টিপস:

  • ডকুমেন্টেশন রেফারেন্স: MDN Web Docs - SVG আরও বিস্তারিত জানতে।
  • প্র্যাকটিস করুন: বিভিন্ন প্রকল্পে SVG ব্যবহার করে দেখুন এবং বিভিন্ন শেপ, টেক্সট, এবং ইমেজ আঁকার অভ্যাস করুন।
  • স্টাইলিং এবং কাস্টমাইজেশন: CSS এবং JavaScript ব্যবহার করে SVG গ্রাফিক্সকে আরও আকর্ষণীয় এবং ইন্টারেক্টিভ করুন।
  • অ্যাক্সেসিবিলিটি নিশ্চিত করুন: SVG গ্রাফিক্সকে স্ক্রিন রিডার ব্যবহারকারীদের জন্য বোধগম্য করতে ARIA অ্যাট্রিবিউটস ব্যবহার করুন।
  • ব্রাউজার সমর্থন পরীক্ষা করুন: নিশ্চিত করুন যে আপনার টার্গেট অডিয়েন্সের ব্রাউজারগুলি SVG সমর্থন করে।
Content added || updated By

SVG কী এবং কিভাবে কাজ করে?

957

SVG (Scalable Vector Graphics) হল একটি XML-ভিত্তিক মার্কআপ ভাষা যা দুই-মাত্রিক ভেক্টর গ্রাফিক্স তৈরি এবং রেন্ডার করার জন্য ব্যবহৃত হয়। এটি ওয়েব ডেভেলপমেন্টে ভেক্টর গ্রাফিক্সের জন্য একটি মানসম্পন্ন ফরম্যাট হিসেবে কাজ করে, যা স্কেলযোগ্য, ইন্টারেক্টিভ এবং অ্যানিমেটেড গ্রাফিক্স তৈরিতে অত্যন্ত কার্যকর।


১. SVG কী?

SVG হলো একটি ওপেন স্ট্যান্ডার্ড ফরম্যাট যা ভেক্টর গ্রাফিক্স সংরক্ষণ এবং প্রদর্শন করার জন্য ব্যবহৃত হয়। ভেক্টর গ্রাফিক্স মানে হলো গ্রাফিক্সের প্রতিটি উপাদান পয়েন্ট, রেখা, আকার এবং বর্ণের সমন্বয়ে গঠিত, যা মাপ পরিবর্তন করার পরেও স্পষ্টতা বজায় রাখে। এটি বিভিন্ন রেজোলিউশনে ব্যবহার করা যেতে পারে, যেমন ডেস্কটপ, ট্যাবলেট, মোবাইল ইত্যাদি, এবং কোন মানের ক্ষতি ছাড়াই স্কেল করা যায়।

মৌলিক বৈশিষ্ট্যসমূহ:

  • স্কেলযোগ্যতা: ভেক্টর গ্রাফিক্স কোন মাপ পরিবর্তনের উপরেও স্পষ্ট এবং ঝকঝকে থাকে।
  • XML-ভিত্তিক: সহজে পড়া এবং সম্পাদনাযোগ্য, কারণ এটি XML ফরম্যাটে লেখা হয়।
  • ডম ইন্টিগ্রেশন: SVG এলিমেন্টগুলো ডকুমেন্ট অবজেক্ট মডেল (DOM) এর অংশ, ফলে JavaScript এবং CSS এর মাধ্যমে নিয়ন্ত্রণ করা যায়।
  • ইন্টারেক্টিভিটি: ইভেন্ট হ্যান্ডলিং এবং অ্যানিমেশন যোগ করা সম্ভব।
  • SEO ফ্রেন্ডলি: টেক্সট ভিত্তিক হওয়ায় সার্চ ইঞ্জিন অপ্টিমাইজেশনের সুবিধা প্রদান করে।

২. SVG কিভাবে কাজ করে?

SVG কাজ করে বিভিন্ন ভেক্টর গ্রাফিক্স এলিমেন্টগুলোকে XML ট্যাগের মাধ্যমে ডিফাইন করে এবং এই এলিমেন্টগুলোকে ব্রাউজার রেন্ডার করে। প্রতিটি এলিমেন্টের নিজস্ব অ্যাট্রিবিউটস থাকে যা তাদের অবস্থান, আকার, রঙ, স্ট্রোক ইত্যাদি নির্ধারণ করে।

মূল উপাদানসমূহ:

  • <svg> এলিমেন্ট: পুরো SVG ড্রয়িং এর জন্য কন্টেইনার হিসেবে কাজ করে।
  • গ্রাফিক্স এলিমেন্টস: যেমন <line>, <rect>, <circle>, <ellipse>, <path>, <polygon>, <polyline>, এবং <text>
  • স্টাইলিং: CSS ব্যবহার করে গ্রাফিক্সের স্টাইল পরিবর্তন করা যায়।
  • ট্রান্সফরমেশন: transform অ্যাট্রিবিউট ব্যবহার করে গ্রাফিক্সকে স্কেল, রোটেট, ট্রান্সলেট ইত্যাদি করা যায়।
  • অ্যানিমেশন: SMIL, CSS, এবং JavaScript ব্যবহার করে গ্রাফিক্সে অ্যানিমেশন যোগ করা যায়।

কিভাবে কাজ করে:

  1. SVG ডকুমেন্ট তৈরি: HTML ডকুমেন্টের মধ্যে <svg> ট্যাগ ব্যবহার করে SVG এলিমেন্ট তৈরি করা হয়।
  2. গ্রাফিক্স এলিমেন্ট যোগ করা: প্রয়োজনীয় গ্রাফিক্স এলিমেন্টগুলো <svg> এর মধ্যে যোগ করা হয় এবং তাদের অ্যাট্রিবিউটস সেট করা হয়।
  3. স্টাইলিং এবং ট্রান্সফরমেশন: CSS এবং SVG অ্যাট্রিবিউটস ব্যবহার করে গ্রাফিক্সের রঙ, সাইজ, এবং অন্যান্য স্টাইলিং প্রপার্টি নির্ধারণ করা হয়।
  4. ইন্টারেক্টিভিটি যোগ করা: JavaScript ব্যবহার করে ইভেন্ট হ্যান্ডলিং এবং অ্যানিমেশন যোগ করা হয়, যা গ্রাফিক্সকে ইন্টারেক্টিভ করে তোলে।

৩. SVG এর মৌলিক সিনট্যাক্স এবং উদাহরণ

৩.১. মৌলিক SVG এলিমেন্ট
<!DOCTYPE html>
<html lang="bn">
<head>
    <meta charset="UTF-8">
    <title>মৌলিক SVG উদাহরণ</title>
</head>
<body>
    <h2>মৌলিক SVG উদাহরণ</h2>
    <svg width="500" height="400" xmlns="http://www.w3.org/2000/svg">
        <!-- রেখা -->
        <line x1="50" y1="50" x2="450" y2="50" stroke="blue" stroke-width="2" />

        <!-- বর্গ -->
        <rect x="100" y="100" width="150" height="150" fill="red" stroke="black" stroke-width="3" />

        <!-- বৃত্ত -->
        <circle cx="250" cy="200" r="50" fill="green" stroke="black" stroke-width="2" />

        <!-- এলিপস -->
        <ellipse cx="400" cy="350" rx="100" ry="50" fill="yellow" stroke="black" stroke-width="2" />

        <!-- পাথ -->
        <path d="M50 350 L150 50 L250 350 Z" fill="orange" stroke="black" stroke-width="2" />

        <!-- টেক্সট -->
        <text x="250" y="50" font-family="Arial" font-size="30" fill="blue" text-anchor="middle">
            হ্যালো, SVG!
        </text>
    </svg>
</body>
</html>

ব্যাখ্যা:

  • <line>: একটি সরল রেখা আঁকে।
  • <rect>: একটি আয়তক্ষেত্র (বর্গ) আঁকে।
  • <circle>: একটি বৃত্ত আঁকে।
  • <ellipse>: একটি এলিপস আঁকে।
  • <path>: একটি জটিল পাথ আঁকে, যা বিভিন্ন পয়েন্ট এবং লাইন দিয়ে গঠিত।
  • <text>: SVG এ টেক্সট যোগ করে।

৪. SVG এ ইন্টারেক্টিভিটি এবং অ্যানিমেশন

৪.১. হোভার ইভেন্টে রঙ পরিবর্তন
<svg width="500" height="400" xmlns="http://www.w3.org/2000/svg">
    <style>
        .hover-circle:hover {
            fill: purple;
            cursor: pointer;
        }
    </style>
    <circle cx="250" cy="200" r="50" fill="blue" class="hover-circle" />
</svg>

ব্যাখ্যা:

  • CSS :hover পছন্দ: মাউস হোভার করলে বৃত্তের রঙ পরিবর্তন করে এবং কার্সর পরিবর্তন করে।
৪.২. ক্লিক ইভেন্টে রঙ পরিবর্তন (JavaScript ব্যবহার করে)
<svg width="500" height="400" xmlns="http://www.w3.org/2000/svg">
    <circle id="interactiveCircle" cx="250" cy="200" r="50" fill="teal" />
</svg>

<script>
    const circle = document.getElementById('interactiveCircle');

    circle.addEventListener('click', function() {
        const currentColor = circle.getAttribute('fill');
        const newColor = currentColor === 'teal' ? 'orange' : 'teal';
        circle.setAttribute('fill', newColor);
    });
</script>

ব্যাখ্যা:

  • JavaScript ইভেন্ট হ্যান্ডলার: বৃত্তে ক্লিক করলে এর রঙ পরিবর্তন হয়।
৪.৩. SMIL অ্যানিমেশন উদাহরণ
<svg width="500" height="400" xmlns="http://www.w3.org/2000/svg">
    <circle cx="50" cy="200" r="30" fill="blue">
        <animate attributeName="cx" from="50" to="450" dur="5s" repeatCount="indefinite" />
    </circle>
</svg>

ব্যাখ্যা:

  • <animate>: বৃত্তের cx অ্যাট্রিবিউট অ্যানিমেট করে, যা বৃত্তকে ডানদিকে সরিয়ে যায় এবং পুনরাবৃত্তি করে।

৫. Canvas এবং SVG এর তুলনা

বৈশিষ্ট্যCanvasSVG
গ্রাফিক্সের ধরনপিক্সেল-ভিত্তিক (Raster)ভেক্টর-ভিত্তিক (Vector)
স্কেলযোগ্যতাস্কেল করলে স্পষ্টতা হারায়স্কেল করলে স্পষ্টতা বজায় থাকে
ড্রয়িং মেথডপিক্সেল ম্যানিপুলেশনXML ট্যাগের মাধ্যমে এলিমেন্ট ডিফাইন করা
ইন্টারেক্টিভিটিজাভাস্ক্রিপ্টের মাধ্যমে ম্যানুয়ালি হ্যান্ডল করতে হয়DOM এর অংশ হওয়ায় সরাসরি CSS এবং জাভাস্ক্রিপ্ট দিয়ে ইন্টারঅ্যাক্ট করা যায়
অ্যানিমেশনজাভাস্ক্রিপ্ট ব্যবহার করে ম্যানুয়ালি অ্যানিমেশন তৈরি করতে হয়SMIL, CSS, এবং জাভাস্ক্রিপ্ট দিয়ে সহজে অ্যানিমেশন যোগ করা যায়
পারফরমেন্সমসৃণ অ্যানিমেশন এবং রেন্ডারিং এর জন্য উচ্চ পারফরমেন্সজটিল এবং বড় SVG ফাইলের ক্ষেত্রে পারফরমেন্স সমস্যা হতে পারে

নোট: Canvas সাধারণত এমন প্রজেক্টের জন্য ভালো যেখানে ডাইনামিক পিক্সেল ম্যানিপুলেশন প্রয়োজন হয়, যেমন গেমস এবং রিয়েল-টাইম গ্রাফিক্স। অন্যদিকে, SVG উপযুক্ত যেখানে ভেক্টর গ্রাফিক্স, স্কেলযোগ্যতা, এবং ইন্টারেক্টিভ এলিমেন্টস প্রয়োজন হয়, যেমন আইকন, লোগো, এবং ডেটা ভিজ্যুয়ালাইজেশন।


৬. SVG এর ব্যবহার ক্ষেত্র

  1. ওয়েব আইকনস এবং লোগো: স্কেলযোগ্য এবং স্টাইলিং সহজ হওয়ায় SVG আইকনস এবং লোগো তৈরিতে ব্যবহৃত হয়।
  2. ডেটা ভিজ্যুয়ালাইজেশন: চার্ট, গ্রাফ, এবং ডায়াগ্রাম তৈরি করতে SVG ব্যবহার করা হয়।
  3. ইন্টারেক্টিভ ইলিমেন্টস: বোতাম, মেনু, এবং অন্যান্য ইন্টারেক্টিভ উপাদান তৈরি করতে SVG ব্যবহার করা হয়।
  4. অ্যানিমেশন: মসৃণ অ্যানিমেশন তৈরি করতে SVG ব্যবহার করা হয়, যা ওয়েবসাইটকে আরও জীবন্ত করে তোলে।
  5. গেমস: দুই-মাত্রিক গেম ডেভেলপমেন্টে SVG ব্যবহার করা হয়।
  6. ইনফোগ্রাফিকস: তথ্যপূর্ণ ভিজ্যুয়াল উপস্থাপনার জন্য SVG গ্রাফিক্স ব্যবহৃত হয়।

৭. উদাহরণ: SVG দিয়ে একটি ইন্টারেক্টিভ বৃত্ত তৈরি

<!DOCTYPE html>
<html lang="bn">
<head>
    <meta charset="UTF-8">
    <title>ইন্টারেক্টিভ SVG উদাহরণ</title>
    <style>
        .interactive-circle {
            transition: fill 0.3s;
        }
        .interactive-circle:hover {
            fill: purple;
            cursor: pointer;
        }
    </style>
</head>
<body>
    <h2>ইন্টারেক্টিভ SVG বৃত্ত</h2>
    <svg width="500" height="400" xmlns="http://www.w3.org/2000/svg">
        <circle id="myCircle" cx="250" cy="200" r="50" fill="green" class="interactive-circle" />
    </svg>

    <script>
        const circle = document.getElementById('myCircle');

        circle.addEventListener('click', function() {
            const currentColor = circle.getAttribute('fill');
            const newColor = currentColor === 'green' ? 'orange' : 'green';
            circle.setAttribute('fill', newColor);
        });
    </script>
</body>
</html>

ব্যাখ্যা:

  • CSS স্টাইলিং: হোভার করলে বৃত্তের রঙ পরিবর্তন হয় এবং কার্সর পরিবর্তন হয়।
  • JavaScript ইন্টারেকশন: বৃত্তে ক্লিক করলে এর রঙ পরিবর্তন হয়।

৮. Best Practices (শ্রেষ্ঠ অনুশীলন)

  1. সেমান্টিক এবং অ্যাক্সেসিবিলিটি:
    • Fallback কন্টেন্ট: SVG এলিমেন্টের ভিতরে fallback কন্টেন্ট প্রদান করুন যাতে SVG সমর্থন না করলে ব্যবহারকারীদের তথ্য প্রদান করা যায়।
    • ARIA অ্যাট্রিবিউটস: SVG গ্রাফিক্সকে স্ক্রিন রিডার ব্যবহারকারীদের জন্য বোধগম্য করতে ARIA অ্যাট্রিবিউটস ব্যবহার করুন, যেমন role="img" এবং aria-label
  2. পারফরমেন্স অপ্টিমাইজেশন:
    • Minimize SVG কোড: অপ্রয়োজনীয় স্পেস, কমেন্ট, এবং অতিরিক্ত ট্যাগ বাদ দিন।
    • Optimize ইমেজ এবং রিসোর্স: SVG ফাইলের সাইজ কমাতে টুলস ব্যবহার করুন যেমন SVGO
  3. Responsive Design:
    • ViewBox ব্যবহার: viewBox অ্যাট্রিবিউট ব্যবহার করে SVG গ্রাফিক্সকে রেসপনসিভ করে তুলুন।
    • CSS ব্যবহার: CSS মিডিয়া কুয়েরি ব্যবহার করে SVG এর সাইজ এবং স্টাইল পরিবর্তন করুন বিভিন্ন ডিভাইসের জন্য।
  4. স্টাইলিং এবং কাস্টমাইজেশন:
    • CSS এর সাথে সমন্বয়: SVG গ্রাফিক্সকে CSS এর মাধ্যমে স্টাইলিশ করুন এবং তাদের রঙ, সাইজ, এবং অন্যান্য প্রপার্টি পরিবর্তন করুন।
    • JavaScript ইন্টারঅ্যাকশন: SVG গ্রাফিক্সে ইন্টারঅ্যাকশন এবং অ্যানিমেশন যোগ করতে JavaScript ব্যবহার করুন।
  5. ব্রাউজার সমর্থন:
    • Cross-Browser Compatibility: নিশ্চিত করুন যে আপনার SVG গ্রাফিক্স সব প্রধান ব্রাউজারে সঠিকভাবে প্রদর্শিত হচ্ছে।
    • Fallbacks প্রদান: পুরানো ব্রাউজারগুলির জন্য fallback ভ্যালিডেশন এবং বিকল্প উপায় বিবেচনা করুন।
  6. Accessibility (অ্যাক্সেসিবিলিটি):
    • স্পষ্ট লেবেল: SVG গ্রাফিক্সে স্পষ্ট লেবেল এবং টেক্সট ব্যবহার করুন যাতে স্ক্রিন রিডার ব্যবহারকারীরা সহজে বুঝতে পারে।
    • Keyboard Navigable: ইন্টারেক্টিভ SVG ইলিমেন্টগুলো কীবোর্ডের মাধ্যমে নিয়ন্ত্রণযোগ্য করে তুলুন।
  7. Maintenance এবং Readability:
    • কমেন্ট ব্যবহার: SVG কোডে কমেন্ট ব্যবহার করে বিভিন্ন অংশের ব্যাখ্যা দিন।
    • কোড অর্গানাইজেশন: SVG কোডকে সঠিকভাবে অর্গানাইজ করুন যাতে কোড মেইনটেইন করা সহজ হয়।

HTML5 এর SVG (Scalable Vector Graphics) ওয়েব ডেভেলপমেন্টে ভেক্টর গ্রাফিক্স তৈরির জন্য একটি অত্যন্ত কার্যকরী এবং বহুমুখী টুল। এটি ব্যবহার করে ডেভেলপাররা ইন্টারেক্টিভ, অ্যানিমেটেড, এবং রেসপনসিভ গ্রাফিক্স তৈরি করতে পারে যা ওয়েব পেজকে আরও আকর্ষণীয় এবং তথ্যবহুল করে তোলে। SVG এর স্কেলযোগ্যতা, ইন্টারেক্টিভিটি, এবং স্টাইলিং ক্ষমতা ওয়েব ডিজাইনে ভেক্টর গ্রাফিক্স ব্যবহারের ক্ষেত্রে এটিকে একটি আদর্শ পছন্দ করে তোলে।

টিপস:

  • ডকুমেন্টেশন রেফারেন্স: MDN Web Docs - SVG আরও বিস্তারিত জানতে।
  • প্র্যাকটিস করুন: বিভিন্ন প্রকল্পে SVG ব্যবহার করে দেখুন এবং বিভিন্ন শেপ, টেক্সট, এবং ইমেজ আঁকার অভ্যাস করুন।
  • স্টাইলিং এবং কাস্টমাইজেশন: CSS এবং JavaScript ব্যবহার করে SVG গ্রাফিক্সকে আরও আকর্ষণীয় এবং ইন্টারেক্টিভ করুন।
  • অ্যাক্সেসিবিলিটি নিশ্চিত করুন: SVG গ্রাফিক্সকে স্ক্রিন রিডার ব্যবহারকারীদের জন্য বোধগম্য করতে ARIA অ্যাট্রিবিউটস ব্যবহার করুন।
  • ব্রাউজার সমর্থন পরীক্ষা করুন: নিশ্চিত করুন যে আপনার টার্গেট অডিয়েন্সের ব্রাউজারগুলি SVG সমর্থন করে।
Content added By

SVG এর মাধ্যমে Vector Graphics তৈরি

388

SVG (Scalable Vector Graphics) হলো একটি শক্তিশালী XML-ভিত্তিক ফরম্যাট যা দুই-মাত্রিক ভেক্টর গ্রাফিক্স তৈরি এবং প্রদর্শন করার জন্য ব্যবহৃত হয়। ভেক্টর গ্রাফিক্স পিক্সেল-ভিত্তিক র‍্যাস্টার গ্রাফিক্সের বিপরীতে, যেখানে প্রতিটি উপাদান পয়েন্ট, রেখা, আকার এবং রঙের সমন্বয়ে গঠিত হয়। এর ফলে, SVG গ্রাফিক্স কোন মাপ পরিবর্তনের উপরেও স্পষ্ট এবং ঝকঝকে থাকে, যা ওয়েব ডিজাইন এবং অন্যান্য ডিজিটাল মিডিয়ায় অত্যন্ত উপকারী।


১. ভেক্টর গ্রাফিক্স কী?

ভেক্টর গ্রাফিক্স হলো এমন গ্রাফিক্স যা গাণিতিক নির্ধারিত পয়েন্ট, রেখা, বক্ররেখা এবং আকৃতির সমন্বয়ে গঠিত। এগুলো স্কেলযোগ্য, অর্থাৎ মাপ বাড়ানো বা কমানোর পরেও তাদের মান বা স্পষ্টতা পরিবর্তন হয় না। ভেক্টর গ্রাফিক্স সাধারণত লোগো, আইকনস, চার্ট, ডায়াগ্রাম, এবং অন্যান্য ডিজাইন উপাদান তৈরিতে ব্যবহৃত হয়।

বেনিফিটস:

  • স্কেলযোগ্যতা: কোন মাপ পরিবর্তনের উপরেও স্পষ্টতা বজায় থাকে।
  • ফাইল সাইজ: সাধারণত র‍্যাস্টার গ্রাফিক্সের তুলনায় ছোট।
  • সম্পাদনযোগ্যতা: সহজে কোড বা গ্রাফিক্স সফটওয়্যার দিয়ে সম্পাদন করা যায়।

২. SVG কিভাবে কাজ করে?

SVG কাজ করে বিভিন্ন ভেক্টর গ্রাফিক্স এলিমেন্টগুলোকে XML ট্যাগের মাধ্যমে ডিফাইন করে এবং এই এলিমেন্টগুলোকে ব্রাউজার রেন্ডার করে। প্রতিটি এলিমেন্টের নিজস্ব অ্যাট্রিবিউটস থাকে যা তাদের অবস্থান, আকার, রঙ, স্ট্রোক ইত্যাদি নির্ধারণ করে।

মূল উপাদানসমূহ:

  • <svg> এলিমেন্ট: পুরো SVG ড্রয়িং এর জন্য কন্টেইনার হিসেবে কাজ করে।
  • গ্রাফিক্স এলিমেন্টস: যেমন <line>, <rect>, <circle>, <ellipse>, <path>, <polygon>, <polyline>, এবং <text>
  • স্টাইলিং: CSS ব্যবহার করে গ্রাফিক্সের স্টাইল পরিবর্তন করা যায়।
  • ট্রান্সফরমেশন: transform অ্যাট্রিবিউট ব্যবহার করে গ্রাফিক্সকে স্কেল, রোটেট, ট্রান্সলেট ইত্যাদি করা যায়।
  • অ্যানিমেশন: SMIL, CSS, এবং JavaScript ব্যবহার করে SVG গ্রাফিক্সে অ্যানিমেশন যোগ করা যায়।

৩. SVG এর মৌলিক সিনট্যাক্স এবং এলিমেন্টস

৩.১. মৌলিক SVG এলিমেন্ট
    <h2>মৌলিক SVG উদাহরণ</h2>
    <svg width="500" height="400" xmlns="http://www.w3.org/2000/svg">
        <!-- রেখা -->
        <line x1="50" y1="50" x2="450" y2="50" stroke="blue" stroke-width="2" />

        <!-- বর্গ -->
        <rect x="100" y="100" width="150" height="150" fill="red" stroke="black" stroke-width="3" />

        <!-- বৃত্ত -->
        <circle cx="250" cy="200" r="50" fill="green" stroke="black" stroke-width="2" />

        <!-- এলিপস -->
        <ellipse cx="400" cy="350" rx="100" ry="50" fill="yellow" stroke="black" stroke-width="2" />

        <!-- পাথ -->
        <path d="M50 350 L150 50 L250 350 Z" fill="orange" stroke="black" stroke-width="2" />

        <!-- টেক্সট -->
        <text x="250" y="50" font-family="Arial" font-size="30" fill="blue" text-anchor="middle">
            হ্যালো, SVG!
        </text>
    </svg>

ব্যাখ্যা:

  • <line>: একটি সরল রেখা আঁকে।
    • x1, y1: রেখার শুরু পয়েন্ট।
    • x2, y2: রেখার শেষ পয়েন্ট।
    • stroke: রেখার রঙ।
    • stroke-width: রেখার পুরুত্ব।
  • <rect>: একটি আয়তক্ষেত্র (বর্গ) আঁকে।
    • x, y: রেক্ট্যাঙ্গেলের উপরের বাম কোণ।
    • width, height: রেক্ট্যাঙ্গেলের প্রস্থ এবং উচ্চতা।
    • fill: রেক্ট্যাঙ্গেলের ফিল রঙ।
    • stroke: রেক্ট্যাঙ্গেলের স্ট্রোক রঙ।
    • stroke-width: স্ট্রোকের পুরুত্ব।
  • <circle>: একটি বৃত্ত আঁকে।
    • cx, cy: বৃত্তের কেন্দ্রের x এবং y কো-অর্ডিনেট।
    • r: বৃত্তের রেডিয়াস।
    • fill: বৃত্তের ফিল রঙ।
    • stroke: বৃত্তের স্ট্রোক রঙ।
    • stroke-width: স্ট্রোকের পুরুত্ব।
  • <ellipse>: একটি এলিপস আঁকে।
    • cx, cy: এলিপসের কেন্দ্রের x এবং y কো-অর্ডিনেট।
    • rx, ry: এলিপসের রেডিয়াস এক্স এবং রেডিয়াস ওয়াই।
    • fill: এলিপসের ফিল রঙ।
    • stroke: এলিপসের স্ট্রোক রঙ।
    • stroke-width: স্ট্রোকের পুরুত্ব।
  • <path>: একটি জটিল পাথ আঁকে, যা বিভিন্ন পয়েন্ট এবং লাইন দিয়ে গঠিত।
    • d: পাথের ডেটা যা পাথের ফর্ম নির্ধারণ করে।
      • M: মুভ টু (পাথের শুরু পয়েন্ট)।
      • L: লাইন টু (পথের মধ্যে রেখা আঁকে)।
      • Z: ক্লোজ পাথ (পাথকে বন্ধ করে)।
    • fill: পাথের ফিল রঙ।
    • stroke: পাথের স্ট্রোক রঙ।
    • stroke-width: স্ট্রোকের পুরুত্ব।
  • <text>: SVG এ টেক্সট যোগ করে।
    • x, y: টেক্সটের অবস্থান নির্ধারণ করে।
    • font-family: টেক্সটের ফন্ট নির্ধারণ করে।
    • font-size: টেক্সটের সাইজ নির্ধারণ করে।
    • fill: টেক্সটের রঙ নির্ধারণ করে।
    • text-anchor: টেক্সটের এলাইনমেন্ট নির্ধারণ করে, যেমন 'start', 'middle', 'end'

৪. SVG এ বিভিন্ন Shapes তৈরি

৪.১. রেখা (Line)
<svg width="500" height="400" xmlns="http://www.w3.org/2000/svg">
    <line x1="50" y1="50" x2="450" y2="50" stroke="blue" stroke-width="2" />
</svg>

ব্যাখ্যা:

  • একটি সরল রেখা ৫০,৫০ থেকে ৪৫০,৫০ পয়েন্ট পর্যন্ত আঁকা হয়েছে।
  • stroke="blue" রেখার রঙ নির্ধারণ করে।
  • stroke-width="2" রেখার পুরুত্ব নির্ধারণ করে।
৪.২. বর্গ (Rectangle)
<svg width="500" height="400" xmlns="http://www.w3.org/2000/svg">
    <rect x="100" y="100" width="150" height="150" fill="red" stroke="black" stroke-width="3" />
</svg>

ব্যাখ্যা:

  • একটি আয়তক্ষেত্র ১০০,১০০ পয়েন্ট থেকে শুরু করে ১৫০ প্রস্থ এবং ১৫০ উচ্চতায় আঁকা হয়েছে।
  • fill="red" রেক্ট্যাঙ্গেলের ফিল রঙ নির্ধারণ করে।
  • stroke="black" এবং stroke-width="3" স্ট্রোকের রঙ এবং পুরুত্ব নির্ধারণ করে।
৪.৩. বৃত্ত (Circle)
<svg width="500" height="400" xmlns="http://www.w3.org/2000/svg">
    <circle cx="250" cy="200" r="50" fill="green" stroke="black" stroke-width="2" />
</svg>

ব্যাখ্যা:

  • একটি বৃত্ত ২৫০,২০০ পয়েন্টে কেন্দ্রস্থলে এবং ৫০ রেডিয়াসে আঁকা হয়েছে।
  • fill="green" বৃত্তের ফিল রঙ নির্ধারণ করে।
  • stroke="black" এবং stroke-width="2" স্ট্রোকের রঙ এবং পুরুত্ব নির্ধারণ করে।
৪.৪. এলিপস (Ellipse)
<svg width="500" height="400" xmlns="http://www.w3.org/2000/svg">
    <ellipse cx="400" cy="350" rx="100" ry="50" fill="yellow" stroke="black" stroke-width="2" />
</svg>

ব্যাখ্যা:

  • একটি এলিপস ৪০০,৩৫০ পয়েন্টে কেন্দ্রস্থলে এবং ১০০ এক্স রেডিয়াস এবং ৫০ ওয়াই রেডিয়াসে আঁকা হয়েছে।
  • fill="yellow" এলিপসের ফিল রঙ নির্ধারণ করে।
  • stroke="black" এবং stroke-width="2" স্ট্রোকের রঙ এবং পুরুত্ব নির্ধারণ করে।
৪.৫. পাথ (Path)
<svg width="500" height="400" xmlns="http://www.w3.org/2000/svg">
    <path d="M50 350 L150 50 L250 350 Z" fill="orange" stroke="black" stroke-width="2" />
</svg>

ব্যাখ্যা:

  • একটি জটিল পাথ ৫০,৩৫০ পয়েন্ট থেকে শুরু করে ১৫০,৫০ পয়েন্ট পর্যন্ত রেখা আঁকে, তারপর ২৫০,৩৫০ পয়েন্টে ফিরিয়ে আনে এবং পাথকে বন্ধ করে।
  • fill="orange" পাথের ফিল রঙ নির্ধারণ করে।
  • stroke="black" এবং stroke-width="2" স্ট্রোকের রঙ এবং পুরুত্ব নির্ধারণ করে।

৫. SVG এ টেক্সট রেন্ডারিং

৫.১. মৌলিক টেক্সট যোগ করা
<svg width="500" height="400" xmlns="http://www.w3.org/2000/svg">
    <text x="250" y="50" font-family="Arial" font-size="30" fill="blue" text-anchor="middle">
        হ্যালো, SVG!
    </text>
</svg>

ব্যাখ্যা:

  • <text> এলিমেন্ট SVG এ টেক্সট যোগ করে।
  • x="250" y="50" টেক্সটের অবস্থান নির্ধারণ করে।
  • font-family="Arial" টেক্সটের ফন্ট নির্ধারণ করে।
  • font-size="30" টেক্সটের সাইজ নির্ধারণ করে।
  • fill="blue" টেক্সটের রঙ নির্ধারণ করে।
  • text-anchor="middle" টেক্সটের এলাইনমেন্ট নির্ধারণ করে, এখানে কেন্দ্রে এলাইনমেন্ট করা হয়েছে।
৫.২. CSS ব্যবহার করে টেক্সট স্টাইলিং
<svg width="500" height="400" xmlns="http://www.w3.org/2000/svg">
    <style>
        .title {
            font-family: 'Verdana';
            font-size: 40px;
            fill: #FF6347;
            text-decoration: underline;
        }
    </style>
    <text x="250" y="100" class="title" text-anchor="middle">
        SVG টেক্সট
    </text>
</svg>

ব্যাখ্যা:

  • <style> এলিমেন্ট SVG এর মধ্যে CSS স্টাইল শিট।
  • .title ক্লাস টেক্সটের ফন্ট, সাইজ, রঙ, এবং অন্যান্য স্টাইল নির্ধারণ করে।
  • class="title" টেক্সটে CSS ক্লাস অ্যাপ্লাই করে স্টাইলিং প্রয়োগ করা হয়।

৬. SVG এ ইমেজ রেন্ডারিং

৬.১. SVG এ ইমেজ যোগ করা
<svg width="500" height="400" xmlns="http://www.w3.org/2000/svg">
    <image href="your-image-file.jpg" x="50" y="50" width="200" height="150" />
</svg>

ব্যাখ্যা:

  • <image> এলিমেন্ট SVG এ ইমেজ যোগ করে।
  • href="your-image-file.jpg" ইমেজের উৎস নির্ধারণ করে।
  • x="50" y="50" ইমেজের অবস্থান নির্ধারণ করে।
  • width="200" height="150" ইমেজের প্রস্থ এবং উচ্চতা নির্ধারণ করে।
৬.২. ইমেজ রোটেট এবং ট্রান্সফর্ম করা
<svg width="500" height="400" xmlns="http://www.w3.org/2000/svg">
    <image href="your-image-file.jpg" x="100" y="100" width="200" height="150" transform="rotate(45 200 175)" />
</svg>

ব্যাখ্যা:

  • transform="rotate(45 200 175)" ইমেজকে ৪৫ ডিগ্রি রোটেট করে এবং ২০০,১৭৫ পয়েন্টে কেন্দ্রস্থলে নিয়ে আসে।
    • rotate(angle cx cy): angle হল রোটেশনের কোণ, cx এবং cy হল রোটেশনের কেন্দ্র।

৭. SVG এ অ্যানিমেশন

৭.১. SMIL (Synchronized Multimedia Integration Language) অ্যানিমেশন
<svg width="500" height="400" xmlns="http://www.w3.org/2000/svg">
    <circle cx="50" cy="200" r="30" fill="blue">
        <animate attributeName="cx" from="50" to="450" dur="5s" repeatCount="indefinite" />
    </circle>
</svg>

ব্যাখ্যা:

  • <animate> এলিমেন্ট বৃত্তের cx অ্যাট্রিবিউট অ্যানিমেট করে, যা বৃত্তকে ডানদিকে সরিয়ে যায় এবং পুনরাবৃত্তি করে।
    • attributeName="cx": কোন অ্যাট্রিবিউট অ্যানিমেট হবে।
    • from="50" to="450": অ্যাট্রিবিউটের মান কিভাবে পরিবর্তিত হবে।
    • dur="5s": অ্যানিমেশনের সময়কাল।
    • repeatCount="indefinite": অ্যানিমেশন কতবার পুনরাবৃত্তি হবে।
৭.২. CSS অ্যানিমেশন
<svg width="500" height="400" xmlns="http://www.w3.org/2000/svg">
    <style>
        .pulse {
            animation: pulse 2s infinite;
        }
        @keyframes pulse {
            0% { r: 20; fill: red; }
            50% { r: 30; fill: orange; }
            100% { r: 20; fill: red; }
        }
    </style>
    <circle cx="250" cy="200" r="20" fill="red" class="pulse" />
</svg>

ব্যাখ্যা:

  • CSS @keyframes: অ্যানিমেশনের ধাপ নির্ধারণ করে।
  • .pulse ক্লাস: বৃত্তের রেডিয়াস এবং রঙ পরিবর্তন করে।
  • animation: pulse 2s infinite;: অ্যানিমেশন নাম, সময়কাল এবং পুনরাবৃত্তির সংখ্যা নির্ধারণ করে।
৭.৩. JavaScript অ্যানিমেশন
<svg id="mySvg" width="500" height="400" xmlns="http://www.w3.org/2000/svg">
    <circle id="myCircle" cx="50" cy="200" r="30" fill="green" />
</svg>

<script>
    const circle = document.getElementById('myCircle');
    let posX = 50;
    let speed = 2;
    
    function animate() {
        posX += speed;
        if (posX > 450 || posX < 50) {
            speed = -speed;
        }
        circle.setAttribute('cx', posX);
        requestAnimationFrame(animate);
    }
    
    animate();
</script>

ব্যাখ্যা:

  • requestAnimationFrame: মসৃণ অ্যানিমেশন নিশ্চিত করতে ব্রাউজারের রিফ্রেশ রেট অনুযায়ী ফাংশন কল করে।
  • setAttribute: বৃত্তের cx অ্যাট্রিবিউট পরিবর্তন করে মুভমেন্ট তৈরি করে।

৮. SVG এ ইন্টারেক্টিভ গ্রাফিক্স

৮.১. হোভার ইভেন্টে রঙ পরিবর্তন
<svg width="500" height="400" xmlns="http://www.w3.org/2000/svg">
    <style>
        .hover-circle:hover {
            fill: purple;
            cursor: pointer;
        }
    </style>
    <circle cx="250" cy="200" r="50" fill="blue" class="hover-circle" />
</svg>

ব্যাখ্যা:

  • CSS :hover পছন্দ: মাউস হোভার করলে বৃত্তের রঙ পরিবর্তন করে এবং কার্সর পরিবর্তন করে।
৮.২. ক্লিক ইভেন্টে রঙ পরিবর্তন (JavaScript ব্যবহার করে)
<svg width="500" height="400" xmlns="http://www.w3.org/2000/svg">
    <circle id="interactiveCircle" cx="250" cy="200" r="50" fill="teal" />
</svg>

<script>
    const circle = document.getElementById('interactiveCircle');

    circle.addEventListener('click', function() {
        const currentColor = circle.getAttribute('fill');
        const newColor = currentColor === 'teal' ? 'orange' : 'teal';
        circle.setAttribute('fill', newColor);
    });
</script>

ব্যাখ্যা:

  • JavaScript ইভেন্ট হ্যান্ডলার: বৃত্তে ক্লিক করলে এর রঙ পরিবর্তন হয়।
৮.৩. মাউস মুভ ইন্টারঅ্যাকশন
<svg width="500" height="400" xmlns="http://www.w3.org/2000/svg">
    <circle id="myCircle" cx="250" cy="200" r="30" fill="blue" />
</svg>

<script>
    const circle = document.getElementById('myCircle');

    document.addEventListener('mousemove', function(event) {
        const svg = document.getElementById('mySvg');
        const rect = svg.getBoundingClientRect();
        const mouseX = event.clientX - rect.left;
        const mouseY = event.clientY - rect.top;

        circle.setAttribute('cx', mouseX);
        circle.setAttribute('cy', mouseY);
    });
</script>

ব্যাখ্যা:

  • মাউস মুভ ইভেন্ট: মাউসের পজিশন অনুযায়ী বৃত্তের অবস্থান পরিবর্তন করে।

৯. Canvas এবং SVG এর তুলনা

বৈশিষ্ট্যCanvasSVG
গ্রাফিক্সের ধরনপিক্সেল-ভিত্তিক (Raster)ভেক্টর-ভিত্তিক (Vector)
স্কেলযোগ্যতাস্কেল করলে স্পষ্টতা হারায়স্কেল করলে স্পষ্টতা বজায় থাকে
ড্রয়িং মেথডপিক্সেল ম্যানিপুলেশনXML ট্যাগের মাধ্যমে এলিমেন্ট ডিফাইন করা
ইন্টারেক্টিভিটিজাভাস্ক্রিপ্টের মাধ্যমে ম্যানুয়ালি হ্যান্ডল করতে হয়DOM এর অংশ হওয়ায় সরাসরি CSS এবং জাভাস্ক্রিপ্ট দিয়ে ইন্টারঅ্যাক্ট করা যায়
অ্যানিমেশনজাভাস্ক্রিপ্ট ব্যবহার করে ম্যানুয়ালি অ্যানিমেশন তৈরি করতে হয়SMIL, CSS, এবং জাভাস্ক্রিপ্ট দিয়ে সহজে অ্যানিমেশন যোগ করা যায়
পারফরমেন্সমসৃণ অ্যানিমেশন এবং রেন্ডারিং এর জন্য উচ্চ পারফরমেন্সজটিল এবং বড় SVG ফাইলের ক্ষেত্রে পারফরমেন্স সমস্যা হতে পারে

নোট: Canvas সাধারণত এমন প্রজেক্টের জন্য ভালো যেখানে ডাইনামিক পিক্সেল ম্যানিপুলেশন প্রয়োজন হয়, যেমন গেমস এবং রিয়েল-টাইম গ্রাফিক্স। অন্যদিকে, SVG উপযুক্ত যেখানে ভেক্টর গ্রাফিক্স, স্কেলযোগ্যতা, এবং ইন্টারেক্টিভ এলিমেন্টস প্রয়োজন হয়, যেমন আইকন, লোগো, এবং ডেটা ভিজ্যুয়ালাইজেশন।


১০. Best Practices (শ্রেষ্ঠ অনুশীলন)

  1. সেমান্টিক এবং অ্যাক্সেসিবিলিটি:
    • Fallback কন্টেন্ট: SVG এলিমেন্টের ভিতরে fallback কন্টেন্ট প্রদান করুন যাতে SVG সমর্থন না করলে ব্যবহারকারীদের তথ্য প্রদান করা যায়।
    • ARIA অ্যাট্রিবিউটস: SVG গ্রাফিক্সকে স্ক্রিন রিডার ব্যবহারকারীদের জন্য বোধগম্য করতে ARIA অ্যাট্রিবিউটস ব্যবহার করুন, যেমন role="img" এবং aria-label
  2. পারফরমেন্স অপ্টিমাইজেশন:
    • Minimize SVG কোড: অপ্রয়োজনীয় স্পেস, কমেন্ট, এবং অতিরিক্ত ট্যাগ বাদ দিন।
    • Optimize ইমেজ এবং রিসোর্স: SVG ফাইলের সাইজ কমাতে টুলস ব্যবহার করুন যেমন SVGO
  3. Responsive Design:
    • ViewBox ব্যবহার: viewBox অ্যাট্রিবিউট ব্যবহার করে SVG গ্রাফিক্সকে রেসপনসিভ করে তুলুন।
    • CSS ব্যবহার: CSS মিডিয়া কুয়েরি ব্যবহার করে SVG এর সাইজ এবং স্টাইল পরিবর্তন করুন বিভিন্ন ডিভাইসের জন্য।
  4. স্টাইলিং এবং কাস্টমাইজেশন:
    • CSS এর সাথে সমন্বয়: SVG গ্রাফিক্সকে CSS এর মাধ্যমে স্টাইলিশ করুন এবং তাদের রঙ, সাইজ, এবং অন্যান্য প্রপার্টি পরিবর্তন করুন।
    • JavaScript ইন্টারঅ্যাকশন: SVG গ্রাফিক্সে ইন্টারঅ্যাকশন এবং অ্যানিমেশন যোগ করতে JavaScript ব্যবহার করুন।
  5. ব্রাউজার সমর্থন:
    • Cross-Browser Compatibility: নিশ্চিত করুন যে আপনার SVG গ্রাফিক্স সব প্রধান ব্রাউজারে সঠিকভাবে প্রদর্শিত হচ্ছে।
    • Fallbacks প্রদান: পুরানো ব্রাউজারগুলির জন্য fallback ভ্যালিডেশন এবং বিকল্প উপায় বিবেচনা করুন।
  6. Accessibility (অ্যাক্সেসিবিলিটি):
    • স্পষ্ট লেবেল: SVG গ্রাফিক্সে স্পষ্ট লেবেল এবং টেক্সট ব্যবহার করুন যাতে স্ক্রিন রিডার ব্যবহারকারীরা সহজে বুঝতে পারে।
    • Keyboard Navigable: ইন্টারেক্টিভ SVG ইলিমেন্টগুলো কীবোর্ডের মাধ্যমে নিয়ন্ত্রণযোগ্য করে তুলুন।
  7. Maintenance এবং Readability:
    • কমেন্ট ব্যবহার: SVG কোডে কমেন্ট ব্যবহার করে বিভিন্ন অংশের ব্যাখ্যা দিন।
    • কোড অর্গানাইজেশন: SVG কোডকে সঠিকভাবে অর্গানাইজ করুন যাতে কোড মেইনটেইন করা সহজ হয়।

উপসংহার

HTML5 এর SVG (Scalable Vector Graphics) ওয়েব ডেভেলপমেন্টে ভেক্টর গ্রাফিক্স তৈরির জন্য একটি অত্যন্ত কার্যকরী এবং বহুমুখী টুল। এটি ব্যবহার করে ডেভেলপাররা ইন্টারেক্টিভ, অ্যানিমেটেড, এবং রেসপনসিভ গ্রাফিক্স তৈরি করতে পারে যা ওয়েব পেজকে আরও আকর্ষণীয় এবং তথ্যবহুল করে তোলে। SVG এর স্কেলযোগ্যতা, ইন্টারেক্টিভিটি, এবং স্টাইলিং ক্ষমতা ওয়েব ডিজাইনে ভেক্টর গ্রাফিক্স ব্যবহারের ক্ষেত্রে এটিকে একটি আদর্শ পছন্দ করে তোলে।

টিপস:

  • ডকুমেন্টেশন রেফারেন্স: MDN Web Docs - SVG আরও বিস্তারিত জানতে।
  • প্র্যাকটিস করুন: বিভিন্ন প্রকল্পে SVG ব্যবহার করে দেখুন এবং বিভিন্ন শেপ, টেক্সট, এবং ইমেজ আঁকার অভ্যাস করুন।
  • স্টাইলিং এবং কাস্টমাইজেশন: CSS এবং JavaScript ব্যবহার করে SVG গ্রাফিক্সকে আরও আকর্ষণীয় এবং ইন্টারেক্টিভ করুন।
  • অ্যাক্সেসিবিলিটি নিশ্চিত করুন: SVG গ্রাফিক্সকে স্ক্রিন রিডার ব্যবহারকারীদের জন্য বোধগম্য করতে ARIA অ্যাট্রিবিউটস ব্যবহার করুন।
  • ব্রাউজার সমর্থন পরীক্ষা করুন: নিশ্চিত করুন যে আপনার টার্গেট অডিয়েন্সের ব্রাউজারগুলি SVG সমর্থন করে।
Content added By

Path, Circle, Rectangle, এবং Line আঁকা

275

SVG (Scalable Vector Graphics) হলো একটি শক্তিশালী XML-ভিত্তিক ফরম্যাট যা দুই-মাত্রিক ভেক্টর গ্রাফিক্স তৈরি এবং প্রদর্শন করার জন্য ব্যবহৃত হয়। SVG ব্যবহার করে বিভিন্ন ধরনের শেপ যেমন পাথ, বৃত্ত, আয়তক্ষেত্র, এবং রেখা আঁকা যায়। এই অংশে আমরা প্রতিটি শেপ আঁকার জন্য প্রয়োজনীয় SVG ট্যাগ এবং তাদের অ্যাট্রিবিউটসমূহ বিস্তারিতভাবে আলোচনা করব।


১. রেখা (Line) আঁকা

<line> ট্যাগ ব্যবহার করে SVG এ একটি সরল রেখা আঁকা হয়।

উদাহরণ: সরল রেখা আঁকা
<!DOCTYPE html>
<html lang="bn">
<head>
    <meta charset="UTF-8">
    <title>SVG Line উদাহরণ</title>
</head>
<body>
    <h2>SVG এ রেখা আঁকা</h2>
    <svg width="500" height="400" xmlns="http://www.w3.org/2000/svg">
        <!-- রেখা -->
        <line x1="50" y1="50" x2="450" y2="50" stroke="blue" stroke-width="2" />
    </svg>
</body>
</html>

ব্যাখ্যা:

  • <line>: সরল রেখা আঁকার জন্য ব্যবহৃত হয়।
  • x1, y1: রেখার শুরু পয়েন্টের কো-অর্ডিনেট।
  • x2, y2: রেখার শেষ পয়েন্টের কো-অর্ডিনেট।
  • stroke: রেখার রঙ নির্ধারণ করে।
  • stroke-width: রেখার পুরুত্ব নির্ধারণ করে।

২. বৃত্ত (Circle) আঁকা

<circle> ট্যাগ ব্যবহার করে SVG এ একটি বৃত্ত আঁকা হয়।

উদাহরণ: বৃত্ত আঁকা
<!DOCTYPE html>
<html lang="bn">
<head>
    <meta charset="UTF-8">
    <title>SVG Circle উদাহরণ</title>
</head>
<body>
    <h2>SVG এ বৃত্ত আঁকা</h2>
    <svg width="500" height="400" xmlns="http://www.w3.org/2000/svg">
        <!-- বৃত্ত -->
        <circle cx="250" cy="200" r="50" fill="green" stroke="black" stroke-width="2" />
    </svg>
</body>
</html>

ব্যাখ্যা:

  • <circle>: বৃত্ত আঁকার জন্য ব্যবহৃত হয়।
  • cx, cy: বৃত্তের কেন্দ্রের x এবং y কো-অর্ডিনেট।
  • r: বৃত্তের রেডিয়াস (অর্ধব্যাসার্ধ)।
  • fill: বৃত্তের ভরাট রঙ নির্ধারণ করে।
  • stroke: বৃত্তের স্ট্রোক (আউটলাইন) রঙ নির্ধারণ করে।
  • stroke-width: স্ট্রোকের পুরুত্ব নির্ধারণ করে।

৩. আয়তক্ষেত্র (Rectangle) আঁকা

<rect> ট্যাগ ব্যবহার করে SVG এ একটি আয়তক্ষেত্র আঁকা হয়।

উদাহরণ: আয়তক্ষেত্র আঁকা
<!DOCTYPE html>
<html lang="bn">
<head>
    <meta charset="UTF-8">
    <title>SVG Rectangle উদাহরণ</title>
</head>
<body>
    <h2>SVG এ আয়তক্ষেত্র আঁকা</h2>
    <svg width="500" height="400" xmlns="http://www.w3.org/2000/svg">
        <!-- আয়তক্ষেত্র -->
        <rect x="100" y="100" width="150" height="150" fill="red" stroke="black" stroke-width="3" />
    </svg>
</body>
</html>

ব্যাখ্যা:

  • <rect>: আয়তক্ষেত্র আঁকার জন্য ব্যবহৃত হয়।
  • x, y: আয়তক্ষেত্রের উপরের বাম কোণার x এবং y কো-অর্ডিনেট।
  • width, height: আয়তক্ষেত্রের প্রস্থ এবং উচ্চতা নির্ধারণ করে।
  • fill: আয়তক্ষেত্রের ভরাট রঙ নির্ধারণ করে।
  • stroke: আয়তক্ষেত্রের স্ট্রোক রঙ নির্ধারণ করে।
  • stroke-width: স্ট্রোকের পুরুত্ব নির্ধারণ করে।

৪. পাথ (Path) আঁকা

<path> ট্যাগ ব্যবহার করে SVG এ জটিল এবং কাস্টম আকৃতি আঁকা যায়। পাথের মাধ্যমে আপনি সরল রেখা, বক্ররেখা, এবং অন্যান্য জটিল আকৃতি তৈরি করতে পারেন।

উদাহরণ: পাথ আঁকা
<!DOCTYPE html>
<html lang="bn">
<head>
    <meta charset="UTF-8">
    <title>SVG Path উদাহরণ</title>
</head>
<body>
    <h2>SVG এ পাথ আঁকা</h2>
    <svg width="500" height="400" xmlns="http://www.w3.org/2000/svg">
        <!-- পাথ -->
        <path d="M50 350 L150 50 L250 350 Z" fill="orange" stroke="black" stroke-width="2" />
    </svg>
</body>
</html>

ব্যাখ্যা:

  • <path>: জটিল আকৃতি আঁকার জন্য ব্যবহৃত হয়।
  • d: পাথের ডেটা যা পাথের ফর্ম নির্ধারণ করে। এখানে:
    • M50 350: পাথের শুরু পয়েন্ট ৫০,৩৫০।
    • L150 50: রেখা আঁকে ১৫০,৫০ পয়েন্ট পর্যন্ত।
    • L250 350: রেখা আঁকে ২৫০,৩৫০ পয়েন্ট পর্যন্ত।
    • Z: পাথ বন্ধ করে (পাথের শেষ পয়েন্টকে শুরু পয়েন্টের সাথে সংযুক্ত করে)।
  • fill: পাথের ভরাট রঙ নির্ধারণ করে।
  • stroke: পাথের স্ট্রোক রঙ নির্ধারণ করে।
  • stroke-width: স্ট্রোকের পুরুত্ব নির্ধারণ করে।

৫. SVG এ টেক্সট যোগ করা

<text> ট্যাগ ব্যবহার করে SVG এ টেক্সট যোগ করা যায় এবং এটি বিভিন্ন স্টাইলিং এবং ফরম্যাটিং অপশন ব্যবহার করে কাস্টমাইজ করা যায়।

উদাহরণ: SVG এ টেক্সট যোগ করা
<!DOCTYPE html>
<html lang="bn">
<head>
    <meta charset="UTF-8">
    <title>SVG Text উদাহরণ</title>
</head>
<body>
    <h2>SVG এ টেক্সট যোগ করা</h2>
    <svg width="500" height="400" xmlns="http://www.w3.org/2000/svg">
        <!-- টেক্সট -->
        <text x="250" y="50" font-family="Arial" font-size="30" fill="blue" text-anchor="middle">
            হ্যালো, SVG!
        </text>
    </svg>
</body>
</html>

ব্যাখ্যা:

  • <text>: SVG এ টেক্সট যোগ করতে ব্যবহৃত হয়।
  • x, y: টেক্সটের অবস্থান নির্ধারণ করে।
  • font-family: টেক্সটের ফন্ট নির্ধারণ করে।
  • font-size: টেক্সটের সাইজ নির্ধারণ করে।
  • fill: টেক্সটের রঙ নির্ধারণ করে।
  • text-anchor: টেক্সটের এলাইনমেন্ট নির্ধারণ করে, যেমন 'start', 'middle', 'end'। এখানে 'middle' টেক্সটকে কেন্দ্রে এলাইন করে।
CSS ব্যবহার করে টেক্সট স্টাইলিং
<!DOCTYPE html>
<html lang="bn">
<head>
    <meta charset="UTF-8">
    <title>SVG Text Styling উদাহরণ</title>
    <style>
        .title {
            font-family: 'Verdana';
            font-size: 40px;
            fill: #FF6347;
            text-decoration: underline;
        }
    </style>
</head>
<body>
    <h2>CSS ব্যবহার করে SVG টেক্সট স্টাইলিং</h2>
    <svg width="500" height="400" xmlns="http://www.w3.org/2000/svg">
        <!-- টেক্সট -->
        <text x="250" y="100" class="title" text-anchor="middle">
            SVG টেক্সট
        </text>
    </svg>
</body>
</html>

ব্যাখ্যা:

  • <style>: SVG এর মধ্যে CSS স্টাইল শিট।
  • .title ক্লাস: টেক্সটের ফন্ট, সাইজ, রঙ, এবং অন্যান্য স্টাইল নির্ধারণ করে।
  • class="title": টেক্সটে CSS ক্লাস অ্যাপ্লাই করে স্টাইলিং প্রয়োগ করা হয়।

৬. SVG এ ইমেজ যোগ করা

<image> ট্যাগ ব্যবহার করে SVG এ ইমেজ এম্বেড করা যায়। এটি রাষ্ট্রীয় এবং র‍্যাস্টার ইমেজ উভয়ের সাথে কাজ করে।

উদাহরণ: SVG এ ইমেজ যোগ করা
<!DOCTYPE html>
<html lang="bn">
<head>
    <meta charset="UTF-8">
    <title>SVG Image উদাহরণ</title>
</head>
<body>
    <h2>SVG এ ইমেজ যোগ করা</h2>
    <svg width="500" height="400" xmlns="http://www.w3.org/2000/svg">
        <!-- ইমেজ -->
        <image href="your-image-file.jpg" x="50" y="50" width="200" height="150" />
    </svg>
</body>
</html>

ব্যাখ্যা:

  • <image>: SVG এ ইমেজ যোগ করতে ব্যবহৃত হয়।
  • href: ইমেজের উৎস নির্ধারণ করে। এটি একটি URL হতে পারে।
  • x, y: ইমেজের অবস্থান নির্ধারণ করে।
  • width, height: ইমেজের প্রস্থ এবং উচ্চতা নির্ধারণ করে।
ইমেজ রোটেট এবং ট্রান্সফর্ম করা
<!DOCTYPE html>
<html lang="bn">
<head>
    <meta charset="UTF-8">
    <title>SVG Image Transform উদাহরণ</title>
</head>
<body>
    <h2>SVG এ ইমেজ রোটেট এবং ট্রান্সফর্ম করা</h2>
    <svg width="500" height="400" xmlns="http://www.w3.org/2000/svg">
        <!-- ইমেজ রোটেট এবং ট্রান্সফর্ম -->
        <image href="your-image-file.jpg" x="100" y="100" width="200" height="150" transform="rotate(45 200 175)" />
    </svg>
</body>
</html>

ব্যাখ্যা:

  • transform="rotate(45 200 175)": ইমেজকে ৪৫ ডিগ্রি রোটেট করে এবং ২০০,১৭৫ পয়েন্টে কেন্দ্রস্থলে নিয়ে আসে।
    • rotate(angle cx cy): angle হল রোটেশনের কোণ, cx এবং cy হল রোটেশনের কেন্দ্র পয়েন্ট।

৭. SVG এ অ্যানিমেশন

SVG এ বিভিন্ন ধরণের অ্যানিমেশন যোগ করা যায় যেমন মুভমেন্ট, রঙ পরিবর্তন, স্কেলিং ইত্যাদি। SVG এ অ্যানিমেশন করার জন্য তিনটি প্রধান পদ্ধতি রয়েছে:

  1. SMIL (Synchronized Multimedia Integration Language)
  2. CSS অ্যানিমেশন
  3. JavaScript অ্যানিমেশন
৭.১. SMIL অ্যানিমেশন উদাহরণ
<!DOCTYPE html>
<html lang="bn">
<head>
    <meta charset="UTF-8">
    <title>SVG SMIL Animation উদাহরণ</title>
</head>
<body>
    <h2>SMIL অ্যানিমেশন দিয়ে বৃত্ত মুভমেন্ট</h2>
    <svg width="500" height="400" xmlns="http://www.w3.org/2000/svg">
        <!-- SMIL অ্যানিমেশন -->
        <circle cx="50" cy="200" r="30" fill="blue">
            <animate attributeName="cx" from="50" to="450" dur="5s" repeatCount="indefinite" />
        </circle>
    </svg>
</body>
</html>

ব্যাখ্যা:

  • <animate>: SVG ইলিমেন্টের একটি অ্যাট্রিবিউট অ্যানিমেট করে।
  • attributeName="cx": কোন অ্যাট্রিবিউট অ্যানিমেট হবে।
  • from="50" to="450": অ্যাট্রিবিউটের মান কিভাবে পরিবর্তিত হবে।
  • dur="5s": অ্যানিমেশনের সময়কাল নির্ধারণ করে।
  • repeatCount="indefinite": অ্যানিমেশন অনির্দিষ্টভাবে পুনরাবৃত্তি হবে।
৭.২. CSS অ্যানিমেশন উদাহরণ
<!DOCTYPE html>
<html lang="bn">
<head>
    <meta charset="UTF-8">
    <title>SVG CSS Animation উদাহরণ</title>
    <style>
        .pulse {
            animation: pulse 2s infinite;
        }
        @keyframes pulse {
            0% { r: 20; fill: red; }
            50% { r: 30; fill: orange; }
            100% { r: 20; fill: red; }
        }
    </style>
</head>
<body>
    <h2>CSS অ্যানিমেশন দিয়ে বৃত্ত পাম্পিং ইফেক্ট</h2>
    <svg width="500" height="400" xmlns="http://www.w3.org/2000/svg">
        <!-- CSS অ্যানিমেশন -->
        <circle cx="250" cy="200" r="20" fill="red" class="pulse" />
    </svg>
</body>
</html>

ব্যাখ্যা:

  • .pulse ক্লাস: বৃত্তের রেডিয়াস এবং রঙ পরিবর্তন করে।
  • @keyframes pulse: অ্যানিমেশনের ধাপ নির্ধারণ করে।
  • animation: pulse 2s infinite;: অ্যানিমেশন নাম, সময়কাল, এবং পুনরাবৃত্তির সংখ্যা নির্ধারণ করে।
৭.৩. JavaScript অ্যানিমেশন উদাহরণ
<!DOCTYPE html>
<html lang="bn">
<head>
    <meta charset="UTF-8">
    <title>SVG JavaScript Animation উদাহরণ</title>
</head>
<body>
    <h2>JavaScript অ্যানিমেশন দিয়ে বৃত্ত মুভমেন্ট</h2>
    <svg id="mySvg" width="500" height="400" xmlns="http://www.w3.org/2000/svg">
        <circle id="myCircle" cx="50" cy="200" r="30" fill="green" />
    </svg>

    <script>
        const circle = document.getElementById('myCircle');
        let posX = 50;
        let speed = 2;
        
        function animate() {
            posX += speed;
            if (posX > 450 || posX < 50) {
                speed = -speed;
            }
            circle.setAttribute('cx', posX);
            requestAnimationFrame(animate);
        }
        
        animate();
    </script>
</body>
</html>

ব্যাখ্যা:

  • requestAnimationFrame: মসৃণ অ্যানিমেশন নিশ্চিত করতে ব্রাউজারের রিফ্রেশ রেট অনুযায়ী ফাংশন কল করে।
  • setAttribute: বৃত্তের cx অ্যাট্রিবিউট পরিবর্তন করে মুভমেন্ট তৈরি করে।

৮. SVG এ ইন্টারেক্টিভ গ্রাফিক্স

৮.১. হোভার ইভেন্টে রঙ পরিবর্তন
<!DOCTYPE html>
<html lang="bn">
<head>
    <meta charset="UTF-8">
    <title>SVG Hover Interaction উদাহরণ</title>
    <style>
        .hover-circle:hover {
            fill: purple;
            cursor: pointer;
        }
    </style>
</head>
<body>
    <h2>হোভার ইভেন্টে রঙ পরিবর্তন করা বৃত্ত</h2>
    <svg width="500" height="400" xmlns="http://www.w3.org/2000/svg">
        <circle cx="250" cy="200" r="50" fill="blue" class="hover-circle" />
    </svg>
</body>
</html>

ব্যাখ্যা:

  • CSS :hover পছন্দ: মাউস হোভার করলে বৃত্তের রঙ পরিবর্তন করে এবং কার্সর পরিবর্তন করে।
  • .hover-circle ক্লাস: CSS ক্লাস ব্যবহার করে হোভার ইফেক্ট প্রয়োগ করা হয়।
৮.২. ক্লিক ইভেন্টে রঙ পরিবর্তন (JavaScript ব্যবহার করে)
<!DOCTYPE html>
<html lang="bn">
<head>
    <meta charset="UTF-8">
    <title>SVG Click Interaction উদাহরণ</title>
</head>
<body>
    <h2>ক্লিক ইভেন্টে রঙ পরিবর্তন করা বৃত্ত</h2>
    <svg width="500" height="400" xmlns="http://www.w3.org/2000/svg">
        <circle id="interactiveCircle" cx="250" cy="200" r="50" fill="teal" />
    </svg>
    
    <script>
        const circle = document.getElementById('interactiveCircle');

        circle.addEventListener('click', function() {
            const currentColor = circle.getAttribute('fill');
            const newColor = currentColor === 'teal' ? 'orange' : 'teal';
            circle.setAttribute('fill', newColor);
        });
    </script>
</body>
</html>

ব্যাখ্যা:

  • JavaScript ইভেন্ট হ্যান্ডলার: বৃত্তে ক্লিক করলে এর রঙ পরিবর্তন হয়।
  • getAttribute এবং setAttribute: বর্তমান রঙ চেক করে নতুন রঙ সেট করে।
৮.৩. মাউস মুভ ইন্টারঅ্যাকশন
<!DOCTYPE html>
<html lang="bn">
<head>
    <meta charset="UTF-8">
    <title>SVG Mouse Move Interaction উদাহরণ</title>
</head>
<body>
    <h2>মাউস মুভের সাথে বৃত্তের অবস্থান পরিবর্তন</h2>
    <svg id="mySvg" width="500" height="400" xmlns="http://www.w3.org/2000/svg">
        <circle id="myCircle" cx="250" cy="200" r="30" fill="blue" />
    </svg>
    
    <script>
        const circle = document.getElementById('myCircle');
        const svg = document.getElementById('mySvg');

        svg.addEventListener('mousemove', function(event) {
            const rect = svg.getBoundingClientRect();
            const mouseX = event.clientX - rect.left;
            const mouseY = event.clientY - rect.top;

            circle.setAttribute('cx', mouseX);
            circle.setAttribute('cy', mouseY);
        });
    </script>
</body>
</html>

ব্যাখ্যা:

  • মাউস মুভ ইভেন্ট: মাউসের পজিশন অনুযায়ী বৃত্তের অবস্থান পরিবর্তন করে।
  • getBoundingClientRect(): SVG এলিমেন্টের অবস্থান নির্ধারণ করে মাউসের সঠিক কো-অর্ডিনেট পেতে সাহায্য করে।
  • setAttribute: বৃত্তের cx এবং cy অ্যাট্রিবিউট পরিবর্তন করে মুভমেন্ট তৈরি করে।

৯. Canvas এবং SVG এর তুলনা

বৈশিষ্ট্যCanvasSVG
গ্রাফিক্সের ধরনপিক্সেল-ভিত্তিক (Raster)ভেক্টর-ভিত্তিক (Vector)
স্কেলযোগ্যতাস্কেল করলে স্পষ্টতা হারায়স্কেল করলে স্পষ্টতা বজায় থাকে
ড্রয়িং মেথডপিক্সেল ম্যানিপুলেশনXML ট্যাগের মাধ্যমে এলিমেন্ট ডিফাইন করা
ইন্টারেক্টিভিটিজাভাস্ক্রিপ্টের মাধ্যমে ম্যানুয়ালি হ্যান্ডল করতে হয়DOM এর অংশ হওয়ায় সরাসরি CSS এবং জাভাস্ক্রিপ্ট দিয়ে ইন্টারঅ্যাক্ট করা যায়
অ্যানিমেশনজাভাস্ক্রিপ্ট ব্যবহার করে ম্যানুয়ালি অ্যানিমেশন তৈরি করতে হয়SMIL, CSS, এবং জাভাস্ক্রিপ্ট দিয়ে সহজে অ্যানিমেশন যোগ করা যায়
পারফরমেন্সমসৃণ অ্যানিমেশন এবং রেন্ডারিং এর জন্য উচ্চ পারফরমেন্সজটিল এবং বড় SVG ফাইলের ক্ষেত্রে পারফরমেন্স সমস্যা হতে পারে

নোট:

  • Canvas সাধারণত এমন প্রজেক্টের জন্য ভালো যেখানে ডাইনামিক পিক্সেল ম্যানিপুলেশন প্রয়োজন হয়, যেমন গেমস এবং রিয়েল-টাইম গ্রাফিক্স।
  • SVG উপযুক্ত যেখানে ভেক্টর গ্রাফিক্স, স্কেলযোগ্যতা, এবং ইন্টারেক্টিভ এলিমেন্টস প্রয়োজন হয়, যেমন আইকন, লোগো, এবং ডেটা ভিজ্যুয়ালাইজেশন।

১০. Best Practices (শ্রেষ্ঠ অনুশীলন)

  1. সেমান্টিক এবং অ্যাক্সেসিবিলিটি:
    • Fallback কন্টেন্ট: SVG এলিমেন্টের ভিতরে fallback কন্টেন্ট প্রদান করুন যাতে SVG সমর্থন না করলে ব্যবহারকারীদের তথ্য প্রদান করা যায়।
    • ARIA অ্যাট্রিবিউটস: SVG গ্রাফিক্সকে স্ক্রিন রিডার ব্যবহারকারীদের জন্য বোধগম্য করতে ARIA অ্যাট্রিবিউটস ব্যবহার করুন, যেমন role="img" এবং aria-label
  2. পারফরমেন্স অপ্টিমাইজেশন:
    • Minimize SVG কোড: অপ্রয়োজনীয় স্পেস, কমেন্ট, এবং অতিরিক্ত ট্যাগ বাদ দিন।
    • Optimize ইমেজ এবং রিসোর্স: SVG ফাইলের সাইজ কমাতে টুলস ব্যবহার করুন যেমন SVGO
  3. Responsive Design:
    • ViewBox ব্যবহার: viewBox অ্যাট্রিবিউট ব্যবহার করে SVG গ্রাফিক্সকে রেসপনসিভ করে তুলুন।
    • CSS ব্যবহার: CSS মিডিয়া কুয়েরি ব্যবহার করে SVG এর সাইজ এবং স্টাইল পরিবর্তন করুন বিভিন্ন ডিভাইসের জন্য।
  4. স্টাইলিং এবং কাস্টমাইজেশন:
    • CSS এর সাথে সমন্বয়: SVG গ্রাফিক্সকে CSS এর মাধ্যমে স্টাইলিশ করুন এবং তাদের রঙ, সাইজ, এবং অন্যান্য প্রপার্টি পরিবর্তন করুন।
    • JavaScript ইন্টারঅ্যাকশন: SVG গ্রাফিক্সে ইন্টারঅ্যাকশন এবং অ্যানিমেশন যোগ করতে JavaScript ব্যবহার করুন।
  5. ব্রাউজার সমর্থন:
    • Cross-Browser Compatibility: নিশ্চিত করুন যে আপনার SVG গ্রাফিক্স সব প্রধান ব্রাউজারে সঠিকভাবে প্রদর্শিত হচ্ছে।
    • Fallbacks প্রদান: পুরানো ব্রাউজারগুলির জন্য fallback ভ্যালিডেশন এবং বিকল্প উপায় বিবেচনা করুন।
  6. Accessibility (অ্যাক্সেসিবিলিটি):
    • স্পষ্ট লেবেল: SVG গ্রাফিক্সে স্পষ্ট লেবেল এবং টেক্সট ব্যবহার করুন যাতে স্ক্রিন রিডার ব্যবহারকারীরা সহজে বুঝতে পারে।
    • Keyboard Navigable: ইন্টারেক্টিভ SVG ইলিমেন্টগুলো কীবোর্ডের মাধ্যমে নিয়ন্ত্রণযোগ্য করে তুলুন।
  7. Maintenance এবং Readability:
    • কমেন্ট ব্যবহার: SVG কোডে কমেন্ট ব্যবহার করে বিভিন্ন অংশের ব্যাখ্যা দিন।
    • কোড অর্গানাইজেশন: SVG কোডকে সঠিকভাবে অর্গানাইজ করুন যাতে কোড মেইনটেইন করা সহজ হয়।

SVG (Scalable Vector Graphics) হলো একটি শক্তিশালী এবং বহুমুখী ফরম্যাট যা ওয়েব ডেভেলপমেন্টে ভেক্টর গ্রাফিক্স তৈরি এবং প্রদর্শনের জন্য অত্যন্ত কার্যকর। SVG এর স্কেলযোগ্যতা, ইন্টারেক্টিভিটি, এবং স্টাইলিং ক্ষমতা ওয়েব পেজকে আরও আকর্ষণীয় এবং তথ্যবহুল করে তোলে। Path, Circle, Rectangle, এবং Line আঁকার মাধ্যমে আপনি বিভিন্ন ধরনের গ্রাফিক্স এবং ডিজাইন তৈরি করতে পারেন, যা ওয়েবসাইটকে আরও প্রাণবন্ত এবং ইন্টারেক্টিভ করে তোলে।

টিপস:

  • ডকুমেন্টেশন রেফারেন্স: MDN Web Docs - SVG আরও বিস্তারিত জানতে।
  • প্র্যাকটিস করুন: বিভিন্ন প্রকল্পে SVG ব্যবহার করে দেখুন এবং বিভিন্ন শেপ, টেক্সট, এবং ইমেজ আঁকার অভ্যাস করুন।
  • স্টাইলিং এবং কাস্টমাইজেশন: CSS এবং JavaScript ব্যবহার করে SVG গ্রাফিক্সকে আরও আকর্ষণীয় এবং ইন্টারেক্টিভ করুন।
  • অ্যাক্সেসিবিলিটি নিশ্চিত করুন: SVG গ্রাফিক্সকে স্ক্রিন রিডার ব্যবহারকারীদের জন্য বোধগম্য করতে ARIA অ্যাট্রিবিউটস ব্যবহার করুন।
  • ব্রাউজার সমর্থন পরীক্ষা করুন: নিশ্চিত করুন যে আপনার টার্গেট অডিয়েন্সের ব্রাউজারগুলি SVG সমর্থন করে।
Content added By

SVG এর সাথে CSS এবং JavaScript ইন্টিগ্রেশন

356

SVG (Scalable Vector Graphics) হলো একটি শক্তিশালী XML-ভিত্তিক ফরম্যাট যা ওয়েব পেজে ভেক্টর গ্রাফিক্স তৈরি এবং প্রদর্শন করার জন্য ব্যবহৃত হয়। CSS (Cascading Style Sheets) এবং JavaScript এর সাথে SVG ইন্টিগ্রেশন করলে আপনি SVG গ্রাফিক্সকে আরও স্টাইলিশ, ইন্টারেক্টিভ এবং অ্যানিমেটেড করতে পারেন। এই অংশে আমরা দেখব কিভাবে CSS এবং JavaScript ব্যবহার করে SVG গ্রাফিক্সকে কাস্টমাইজ এবং ইন্টারঅ্যাক্টিভ করা যায়।


১. CSS এর সাথে SVG স্টাইলিং

SVG গ্রাফিক্সকে CSS এর মাধ্যমে স্টাইল করা যায়, যা SVG এলিমেন্টগুলোর রঙ, সাইজ, ফন্ট, এবং অন্যান্য স্টাইল প্রপার্টি নিয়ন্ত্রণ করতে সাহায্য করে। CSS এর মাধ্যমে আপনি SVG এর বিভিন্ন অংশকে সহজে স্টাইল করতে পারেন, যেমন বৃত্ত, রেখা, আয়তক্ষেত্র ইত্যাদি।

১.১. ইনলাইন CSS স্টাইলিং

SVG এলিমেন্টের ভিতরে সরাসরি স্টাইল অ্যাট্রিবিউট ব্যবহার করে স্টাইল করা যায়।

<!DOCTYPE html>
<html lang="bn">
<head>
    <meta charset="UTF-8">
    <title>SVG ইনলাইন CSS স্টাইলিং উদাহরণ</title>
</head>
<body>
    <h2>SVG ইনলাইন CSS স্টাইলিং</h2>
    <svg width="500" height="400" xmlns="http://www.w3.org/2000/svg">
        <circle cx="150" cy="200" r="50" fill="red" stroke="black" stroke-width="3" />
        <rect x="250" y="150" width="100" height="100" fill="green" stroke="blue" stroke-width="2" />
    </svg>
</body>
</html>

ব্যাখ্যা:

  • fill: এলিমেন্টের ভরাট রঙ নির্ধারণ করে।
  • stroke: এলিমেন্টের আউটলাইন রঙ নির্ধারণ করে।
  • stroke-width: আউটলাইন পুরুত্ব নির্ধারণ করে।
১.২. এম্বেডেড CSS স্টাইলিং

SVG এর মধ্যে <style> ট্যাগ ব্যবহার করে CSS স্টাইল শিট এম্বেড করা যায়।

<!DOCTYPE html>
<html lang="bn">
<head>
    <meta charset="UTF-8">
    <title>SVG এম্বেডেড CSS স্টাইলিং উদাহরণ</title>
    <style>
        .blue-stroke {
            stroke: blue;
            stroke-width: 2;
        }
        .green-fill {
            fill: green;
        }
        .red-fill {
            fill: red;
        }
    </style>
</head>
<body>
    <h2>SVG এম্বেডেড CSS স্টাইলিং</h2>
    <svg width="500" height="400" xmlns="http://www.w3.org/2000/svg">
        <circle cx="150" cy="200" r="50" class="red-fill blue-stroke" />
        <rect x="250" y="150" width="100" height="100" class="green-fill blue-stroke" />
    </svg>
</body>
</html>

ব্যাখ্যা:

  • .blue-stroke, .green-fill, .red-fill: CSS ক্লাস যা বিভিন্ন স্টাইল প্রপার্টি অ্যাপ্লাই করে।
  • class: SVG এলিমেন্টে CSS ক্লাস অ্যাপ্লাই করে স্টাইলিং প্রয়োগ করা হয়।
১.৩. এক্সটার্নাল CSS স্টাইলিং

বাহ্যিক CSS ফাইল ব্যবহার করে SVG স্টাইল করা যায়, যা বড় প্রকল্পে কোডের পুনঃব্যবহারযোগ্যতা বাড়ায়।

styles.css

.blue-stroke {
    stroke: blue;
    stroke-width: 2;
}
.green-fill {
    fill: green;
}
.red-fill {
    fill: red;
}

index.html

<!DOCTYPE html>
<html lang="bn">
<head>
    <meta charset="UTF-8">
    <title>SVG এক্সটার্নাল CSS স্টাইলিং উদাহরণ</title>
    <link rel="stylesheet" href="styles.css">
</head>
<body>
    <h2>SVG এক্সটার্নাল CSS স্টাইলিং</h2>
    <svg width="500" height="400" xmlns="http://www.w3.org/2000/svg">
        <circle cx="150" cy="200" r="50" class="red-fill blue-stroke" />
        <rect x="250" y="150" width="100" height="100" class="green-fill blue-stroke" />
    </svg>
</body>
</html>

ব্যাখ্যা:

  • <link rel="stylesheet" href="styles.css">: বাহ্যিক CSS ফাইল লিঙ্ক করে।
  • SVG এলিমেন্টে CSS ক্লাস ব্যবহার করে স্টাইল প্রয়োগ করা হয়।
১.৪. CSS সিলেক্টর ব্যবহার করে স্টাইলিং

CSS সিলেক্টর ব্যবহার করে নির্দিষ্ট SVG এলিমেন্টগুলোকে টার্গেট করে স্টাইল করা যায়।

<!DOCTYPE html>
<html lang="bn">
<head>
    <meta charset="UTF-8">
    <title>SVG সিলেক্টর স্টাইলিং উদাহরণ</title>
    <style>
        svg circle {
            fill: purple;
            stroke: orange;
            stroke-width: 4;
        }
        svg rect {
            fill: teal;
            stroke: navy;
            stroke-width: 3;
        }
    </style>
</head>
<body>
    <h2>SVG সিলেক্টর স্টাইলিং</h2>
    <svg width="500" height="400" xmlns="http://www.w3.org/2000/svg">
        <circle cx="150" cy="200" r="50" />
        <rect x="250" y="150" width="100" height="100" />
    </svg>
</body>
</html>

ব্যাখ্যা:

  • svg circle: সকল SVG এর মধ্যে থাকা <circle> এলিমেন্টগুলোকে টার্গেট করে।
  • svg rect: সকল SVG এর মধ্যে থাকা <rect> এলিমেন্টগুলোকে টার্গেট করে।
১.৫. CSS অ্যানিমেশন ব্যবহার করে SVG অ্যানিমেট করা

CSS অ্যানিমেশন ব্যবহার করে SVG এলিমেন্টগুলোকে অ্যানিমেট করা যায়, যা গ্রাফিক্সকে আরও জীবন্ত করে তোলে।

<!DOCTYPE html>
<html lang="bn">
<head>
    <meta charset="UTF-8">
    <title>SVG CSS অ্যানিমেশন উদাহরণ</title>
    <style>
        .animated-circle {
            fill: red;
            stroke: black;
            stroke-width: 2;
            animation: move 4s infinite alternate;
        }

        @keyframes move {
            from { cx: 100; }
            to { cx: 400; }
        }
    </style>
</head>
<body>
    <h2>CSS অ্যানিমেশন দিয়ে SVG বৃত্ত মুভমেন্ট</h2>
    <svg width="500" height="400" xmlns="http://www.w3.org/2000/svg">
        <circle cy="200" r="30" class="animated-circle" />
    </svg>
</body>
</html>

ব্যাখ্যা:

  • .animated-circle ক্লাস: বৃত্তের স্টাইল এবং অ্যানিমেশন নির্ধারণ করে।
  • @keyframes move: অ্যানিমেশনের ধাপ নির্ধারণ করে, যেখানে বৃত্তটি বাম থেকে ডানে সরবে।
  • animation: move 4s infinite alternate;: অ্যানিমেশন নাম, সময়কাল, পুনরাবৃত্তি সংখ্যা, এবং অ্যালটারনেট মোড নির্ধারণ করে।

২. JavaScript এর সাথে SVG ইন্টিগ্রেশন

JavaScript ব্যবহার করে SVG গ্রাফিক্সে ইন্টারেক্টিভিটি এবং ডাইনামিক পরিবর্তন যোগ করা যায়। SVG এলিমেন্টগুলো DOM এর অংশ হওয়ায়, আপনি JavaScript এর মাধ্যমে সহজে তাদের অ্যাক্সেস এবং পরিবর্তন করতে পারেন।

২.১. SVG এলিমেন্টের DOM অ্যাক্সেস করা

JavaScript ব্যবহার করে SVG এলিমেন্টগুলোকে DOM থেকে অ্যাক্সেস করা যায় এবং তাদের অ্যাট্রিবিউটস পরিবর্তন করা যায়।

<!DOCTYPE html>
<html lang="bn">
<head>
    <meta charset="UTF-8">
    <title>JavaScript দিয়ে SVG পরিবর্তন উদাহরণ</title>
</head>
<body>
    <h2>JavaScript দিয়ে SVG রঙ পরিবর্তন</h2>
    <svg width="500" height="400" xmlns="http://www.w3.org/2000/svg">
        <circle id="myCircle" cx="250" cy="200" r="50" fill="green" stroke="black" stroke-width="2" />
    </svg>

    <button onclick="changeColor()">রঙ পরিবর্তন করুন</button>

    <script>
        function changeColor() {
            const circle = document.getElementById('myCircle');
            const currentColor = circle.getAttribute('fill');
            const newColor = currentColor === 'green' ? 'orange' : 'green';
            circle.setAttribute('fill', newColor);
        }
    </script>
</body>
</html>

ব্যাখ্যা:

  • getElementById: SVG এলিমেন্টকে DOM থেকে পেতে ব্যবহৃত হয়।
  • getAttribute এবং setAttribute: এলিমেন্টের অ্যাট্রিবিউটস পড়া এবং পরিবর্তন করা হয়।
  • changeColor ফাংশন: বৃত্তের রঙ পরিবর্তন করে।
২.২. SVG এর সাথে ইভেন্ট হ্যান্ডলিং

JavaScript ব্যবহার করে SVG এলিমেন্টগুলোর সাথে ইভেন্ট হ্যান্ডলিং করা যায়, যেমন ক্লিক, হোভার, মাউস মুভ ইত্যাদি।

<!DOCTYPE html>
<html lang="bn">
<head>
    <meta charset="UTF-8">
    <title>JavaScript ইভেন্ট হ্যান্ডলিং সহ SVG উদাহরণ</title>
    <style>
        .interactive-circle {
            transition: fill 0.3s;
        }
        .interactive-circle:hover {
            fill: purple;
            cursor: pointer;
        }
    </style>
</head>
<body>
    <h2>JavaScript ইভেন্ট হ্যান্ডলিং সহ SVG বৃত্ত</h2>
    <svg width="500" height="400" xmlns="http://www.w3.org/2000/svg">
        <circle id="interactiveCircle" cx="250" cy="200" r="50" fill="teal" class="interactive-circle" />
    </svg>

    <script>
        const circle = document.getElementById('interactiveCircle');

        // ক্লিক ইভেন্ট হ্যান্ডলার
        circle.addEventListener('click', function() {
            const currentColor = circle.getAttribute('fill');
            const newColor = currentColor === 'teal' ? 'orange' : 'teal';
            circle.setAttribute('fill', newColor);
        });

        // মাউস মুভ ইভেন্ট হ্যান্ডলার
        circle.addEventListener('mousemove', function(event) {
            const svg = circle.ownerSVGElement;
            const rect = svg.getBoundingClientRect();
            const mouseX = event.clientX - rect.left;
            const mouseY = event.clientY - rect.top;
            circle.setAttribute('cx', mouseX);
            circle.setAttribute('cy', mouseY);
        });
    </script>
</body>
</html>

ব্যাখ্যা:

  • .interactive-circle ক্লাস: CSS হোভার ইফেক্ট এবং ট্রানজিশন নির্ধারণ করে।
  • addEventListener('click'): বৃত্তে ক্লিক করলে রঙ পরিবর্তন করে।
  • addEventListener('mousemove'): মাউস মুভ করলে বৃত্তের অবস্থান পরিবর্তন করে।
২.৩. SVG এর সাথে অ্যানিমেশন (JavaScript ব্যবহার করে)

JavaScript ব্যবহার করে SVG এলিমেন্টগুলোর সাথে আরও জটিল অ্যানিমেশন তৈরি করা যায়।

<!DOCTYPE html>
<html lang="bn">
<head>
    <meta charset="UTF-8">
    <title>JavaScript অ্যানিমেশন সহ SVG উদাহরণ</title>
</head>
<body>
    <h2>JavaScript অ্যানিমেশন দিয়ে SVG বৃত্ত মুভমেন্ট</h2>
    <svg id="mySvg" width="500" height="400" xmlns="http://www.w3.org/2000/svg">
        <circle id="animCircle" cx="50" cy="200" r="30" fill="blue" />
    </svg>

    <script>
        const circle = document.getElementById('animCircle');
        let posX = 50;
        let speed = 2;

        function animate() {
            posX += speed;
            if (posX > 450 || posX < 50) {
                speed = -speed;
            }
            circle.setAttribute('cx', posX);
            requestAnimationFrame(animate);
        }

        animate();
    </script>
</body>
</html>

ব্যাখ্যা:

  • requestAnimationFrame: ব্রাউজারের রিফ্রেশ রেট অনুযায়ী অ্যানিমেশন ফাংশন কল করে, যা মসৃণ অ্যানিমেশন নিশ্চিত করে।
  • animate ফাংশন: বৃত্তের cx অ্যাট্রিবিউট পরিবর্তন করে মুভমেন্ট তৈরি করে।

৩. CSS এবং JavaScript এর সাথে আরও উন্নত ইন্টিগ্রেশন

৩.১. CSS ট্রানজিশন এবং ট্রান্সফরমেশন

CSS ট্রানজিশন এবং ট্রান্সফরমেশন ব্যবহার করে SVG এলিমেন্টগুলোর স্টাইল পরিবর্তন মসৃণভাবে করা যায়।

<!DOCTYPE html>
<html lang="bn">
<head>
    <meta charset="UTF-8">
    <title>CSS ট্রানজিশন ও ট্রান্সফরমেশন সহ SVG</title>
    <style>
        .transform-rect {
            fill: lightblue;
            stroke: navy;
            stroke-width: 2;
            transition: transform 0.5s, fill 0.5s;
        }
        .transform-rect:hover {
            fill: lightcoral;
            transform: rotate(45deg);
            cursor: pointer;
        }
    </style>
</head>
<body>
    <h2>CSS ট্রানজিশন ও ট্রান্সফরমেশন সহ SVG আয়তক্ষেত্র</h2>
    <svg width="500" height="400" xmlns="http://www.w3.org/2000/svg">
        <rect x="200" y="150" width="100" height="100" class="transform-rect" />
    </svg>
</body>
</html>

ব্যাখ্যা:

  • .transform-rect ক্লাস: আয়তক্ষেত্রের স্টাইল এবং ট্রানজিশন নির্ধারণ করে।
  • :hover পছন্দ: হোভার করলে আয়তক্ষেত্রের রঙ পরিবর্তন হয় এবং এটি রোটেট করে।
৩.২. JavaScript দিয়ে ডাইনামিক স্টাইল পরিবর্তন

JavaScript ব্যবহার করে SVG এলিমেন্টগুলোর স্টাইল ডাইনামিকভাবে পরিবর্তন করা যায়।

<!DOCTYPE html>
<html lang="bn">
<head>
    <meta charset="UTF-8">
    <title>JavaScript দিয়ে SVG স্টাইল পরিবর্তন</title>
    <style>
        .styled-circle {
            transition: fill 0.3s, r 0.3s;
        }
    </style>
</head>
<body>
    <h2>JavaScript দিয়ে SVG বৃত্ত স্টাইল পরিবর্তন</h2>
    <svg width="500" height="400" xmlns="http://www.w3.org/2000/svg">
        <circle id="styledCircle" cx="250" cy="200" r="40" fill="purple" class="styled-circle" />
    </svg>

    <button onclick="changeStyle()">স্টাইল পরিবর্তন করুন</button>

    <script>
        function changeStyle() {
            const circle = document.getElementById('styledCircle');
            const currentFill = circle.getAttribute('fill');
            const currentRadius = parseInt(circle.getAttribute('r'));

            // রঙ পরিবর্তন
            const newFill = currentFill === 'purple' ? 'pink' : 'purple';
            circle.setAttribute('fill', newFill);

            // রেডিয়াস পরিবর্তন
            const newRadius = currentRadius === 40 ? 60 : 40;
            circle.setAttribute('r', newRadius);
        }
    </script>
</body>
</html>

ব্যাখ্যা:

  • .styled-circle ক্লাস: বৃত্তের স্টাইল এবং ট্রানজিশন নির্ধারণ করে।
  • changeStyle ফাংশন: বৃত্তের রঙ এবং রেডিয়াস পরিবর্তন করে।
  • button: বাটনে ক্লিক করলে changeStyle ফাংশন কল হয়।
৩.৩. JavaScript দিয়ে SVG এ ড্র্যাগ অ্যান্ড ড্রপ ইন্টারঅ্যাকশন

JavaScript ব্যবহার করে SVG এলিমেন্টগুলিকে ড্র্যাগ অ্যান্ড ড্রপ ইন্টারঅ্যাকশন যোগ করা যায়।

<!DOCTYPE html>
<html lang="bn">
<head>
    <meta charset="UTF-8">
    <title>JavaScript দিয়ে SVG ড্র্যাগ অ্যান্ড ড্রপ</title>
    <style>
        .draggable {
            cursor: move;
        }
    </style>
</head>
<body>
    <h2>JavaScript দিয়ে SVG বৃত্ত ড্র্যাগ অ্যান্ড ড্রপ</h2>
    <svg id="dragSvg" width="500" height="400" xmlns="http://www.w3.org/2000/svg">
        <circle id="dragCircle" cx="250" cy="200" r="50" fill="orange" class="draggable" />
    </svg>

    <script>
        const svg = document.getElementById('dragSvg');
        const circle = document.getElementById('dragCircle');
        let isDragging = false;
        let offsetX, offsetY;

        circle.addEventListener('mousedown', function(event) {
            isDragging = true;
            const rect = svg.getBoundingClientRect();
            offsetX = event.clientX - rect.left - parseInt(circle.getAttribute('cx'));
            offsetY = event.clientY - rect.top - parseInt(circle.getAttribute('cy'));
        });

        document.addEventListener('mousemove', function(event) {
            if (isDragging) {
                const rect = svg.getBoundingClientRect();
                let newX = event.clientX - rect.left - offsetX;
                let newY = event.clientY - rect.top - offsetY;

                // সীমানার মধ্যে সীমাবদ্ধ রাখা
                newX = Math.max(parseInt(circle.getAttribute('r')), Math.min(500 - parseInt(circle.getAttribute('r')), newX));
                newY = Math.max(parseInt(circle.getAttribute('r')), Math.min(400 - parseInt(circle.getAttribute('r')), newY));

                circle.setAttribute('cx', newX);
                circle.setAttribute('cy', newY);
            }
        });

        document.addEventListener('mouseup', function() {
            isDragging = false;
        });
    </script>
</body>
</html>

ব্যাখ্যা:

  • .draggable ক্লাস: বৃত্তের কার্সর পরিবর্তন করে ড্র্যাগ ইন্টারঅ্যাকশন ইঙ্গিত করে।
  • mousedown ইভেন্ট: ড্র্যাগ শুরু করার জন্য।
  • mousemove ইভেন্ট: বৃত্তের অবস্থান পরিবর্তন করে ড্র্যাগ করে।
  • mouseup ইভেন্ট: ড্র্যাগ বন্ধ করার জন্য।

৪. CSS এবং JavaScript এর সাথে SVG এর আরও উন্নত ইন্টিগ্রেশন

৪.১. CSS ট্রান্সিশন ব্যবহার করে SVG এলিমেন্ট পরিবর্তন

CSS ট্রান্সিশন ব্যবহার করে SVG এলিমেন্টগুলোর স্টাইল পরিবর্তনকে মসৃণ করে তোলা যায়।

<!DOCTYPE html>
<html lang="bn">
<head>
    <meta charset="UTF-8">
    <title>CSS ট্রান্সিশন সহ SVG</title>
    <style>
        .transition-rect {
            fill: lightblue;
            stroke: navy;
            stroke-width: 2;
            transition: fill 0.5s, transform 0.5s;
        }
        .transition-rect:hover {
            fill: coral;
            transform: scale(1.2);
            cursor: pointer;
        }
    </style>
</head>
<body>
    <h2>CSS ট্রান্সিশন সহ SVG আয়তক্ষেত্র</h2>
    <svg width="500" height="400" xmlns="http://www.w3.org/2000/svg">
        <rect x="200" y="150" width="100" height="100" class="transition-rect" />
    </svg>
</body>
</html>

ব্যাখ্যা:

  • .transition-rect ক্লাস: আয়তক্ষেত্রের স্টাইল এবং ট্রান্সিশন নির্ধারণ করে।
  • :hover পছন্দ: হোভার করলে আয়তক্ষেত্রের রঙ পরিবর্তন হয় এবং এটি স্কেল হয়।
  • transition প্রপার্টি: স্টাইল পরিবর্তনের সময়কাল নির্ধারণ করে।
৪.২. JavaScript দিয়ে SVG এ ডাইনামিক ক্লাস অ্যাসাইন করা

JavaScript ব্যবহার করে SVG এলিমেন্টগুলোতে ক্লাস অ্যাসাইন করে স্টাইল পরিবর্তন করা যায়।

<!DOCTYPE html>
<html lang="bn">
<head>
    <meta charset="UTF-8">
    <title>JavaScript দিয়ে SVG ক্লাস পরিবর্তন</title>
    <style>
        .highlight {
            fill: gold;
            stroke: red;
            stroke-width: 4;
        }
    </style>
</head>
<body>
    <h2>JavaScript দিয়ে SVG ক্লাস পরিবর্তন</h2>
    <svg width="500" height="400" xmlns="http://www.w3.org/2000/svg">
        <circle id="dynamicCircle" cx="250" cy="200" r="50" fill="blue" stroke="black" stroke-width="2" />
    </svg>

    <button onclick="toggleHighlight()">হাইলাইট/অহাইলাইট করুন</button>

    <script>
        function toggleHighlight() {
            const circle = document.getElementById('dynamicCircle');
            circle.classList.toggle('highlight');
        }
    </script>
</body>
</html>

ব্যাখ্যা:

  • .highlight ক্লাস: বৃত্তের স্টাইল পরিবর্তন করে হাইলাইট ইফেক্ট দেয়।
  • toggleHighlight ফাংশন: বাটনে ক্লিক করলে বৃত্তের .highlight ক্লাস অ্যাসাইন বা রিমুভ করে।
৪.৩. JavaScript দিয়ে SVG এ টুলটিপ যোগ করা

JavaScript এবং CSS ব্যবহার করে SVG এলিমেন্টগুলোর উপর টুলটিপ যোগ করা যায়, যা ব্যবহারকারীদের আরও তথ্য প্রদান করে।

<!DOCTYPE html>
<html lang="bn">
<head>
    <meta charset="UTF-8">
    <title>JavaScript ও CSS সহ SVG টুলটিপ</title>
    <style>
        .tooltip {
            position: absolute;
            background-color: rgba(0, 0, 0, 0.7);
            color: white;
            padding: 5px 10px;
            border-radius: 4px;
            pointer-events: none;
            opacity: 0;
            transition: opacity 0.3s;
            font-size: 14px;
        }
    </style>
</head>
<body>
    <h2>JavaScript ও CSS সহ SVG টুলটিপ</h2>
    <svg id="tooltipSvg" width="500" height="400" xmlns="http://www.w3.org/2000/svg">
        <rect id="tooltipRect" x="200" y="150" width="100" height="100" fill="lightgreen" stroke="black" stroke-width="2" />
    </svg>
    <div id="tooltip" class="tooltip">এটি একটি আয়তক্ষেত্র</div>

    <script>
        const svg = document.getElementById('tooltipSvg');
        const rect = document.getElementById('tooltipRect');
        const tooltip = document.getElementById('tooltip');

        rect.addEventListener('mousemove', function(event) {
            const rectBounds = svg.getBoundingClientRect();
            const mouseX = event.clientX - rectBounds.left;
            const mouseY = event.clientY - rectBounds.top;

            tooltip.style.left = `${event.pageX + 10}px`;
            tooltip.style.top = `${event.pageY + 10}px`;
            tooltip.style.opacity = 1;
            tooltip.textContent = 'এটি একটি আয়তক্ষেত্র';
        });

        rect.addEventListener('mouseout', function() {
            tooltip.style.opacity = 0;
        });
    </script>
</body>
</html>

ব্যাখ্যা:

  • .tooltip ক্লাস: টুলটিপের স্টাইল নির্ধারণ করে।
  • mousemove ইভেন্ট: মাউসের অবস্থান অনুযায়ী টুলটিপের পজিশন আপডেট করে এবং টুলটিপ দেখায়।
  • mouseout ইভেন্ট: মাউস আউট হলে টুলটিপ লুকিয়ে দেয়।

৫. SVG এর সাথে CSS এবং JavaScript এর ইন্টিগ্রেশন: আরও উন্নত উদাহরণ

৫.১. SVG আইকনসের সাথে CSS হোভার ইফেক্ট এবং JavaScript ইন্টারঅ্যাকশন
<!DOCTYPE html>
<html lang="bn">
<head>
    <meta charset="UTF-8">
    <title>CSS হোভার এবং JavaScript ইন্টারঅ্যাকশন সহ SVG আইকন</title>
    <style>
        .icon {
            fill: #555;
            transition: fill 0.3s, transform 0.3s;
        }
        .icon:hover {
            fill: #FF6347;
            transform: scale(1.2);
            cursor: pointer;
        }
    </style>
</head>
<body>
    <h2>CSS হোভার এবং JavaScript ইন্টারঅ্যাকশন সহ SVG আইকন</h2>
    <svg width="100" height="100" xmlns="http://www.w3.org/2000/svg">
        <!-- হোম আইকন -->
        <path id="homeIcon" class="icon" d="M10 40 L50 10 L90 40 V90 H10 Z" />
    </svg>

    <p id="iconMessage">আপনি হোম আইকনে ক্লিক করুন!</p>

    <script>
        const homeIcon = document.getElementById('homeIcon');
        const message = document.getElementById('iconMessage');

        homeIcon.addEventListener('click', function() {
            message.textContent = 'হোম আইকনে ক্লিক করা হয়েছে!';
        });
    </script>
</body>
</html>

ব্যাখ্যা:

  • .icon ক্লাস: SVG পাথের স্টাইল এবং ট্রানজিশন নির্ধারণ করে।
  • :hover পছন্দ: হোভার করলে আইকনের রঙ পরিবর্তন হয় এবং এটি স্কেল হয়।
  • JavaScript ইভেন্ট হ্যান্ডলার: আইকনে ক্লিক করলে একটি মেসেজ পরিবর্তন হয়।
৫.২. SVG চার্টে CSS এবং JavaScript ব্যবহার করা
<!DOCTYPE html>
<html lang="bn">
<head>
    <meta charset="UTF-8">
    <title>CSS এবং JavaScript সহ SVG চার্ট</title>
    <style>
        .bar {
            fill: steelblue;
            transition: fill 0.3s;
        }
        .bar:hover {
            fill: orange;
            cursor: pointer;
        }
        .bar.selected {
            fill: green;
        }
    </style>
</head>
<body>
    <h2>CSS এবং JavaScript সহ SVG বার চার্ট</h2>
    <svg id="barChart" width="500" height="400" xmlns="http://www.w3.org/2000/svg">
        <!-- বার চার্টের বর্গগুলি -->
        <rect class="bar" x="50" y="150" width="50" height="200" data-value="20" />
        <rect class="bar" x="150" y="100" width="50" height="250" data-value="40" />
        <rect class="bar" x="250" y="180" width="50" height="170" data-value="30" />
        <rect class="bar" x="350" y="80" width="50" height="270" data-value="50" />
    </svg>

    <p id="chartInfo">বারের উপর হোভার বা ক্লিক করুন!</p>

    <script>
        const bars = document.querySelectorAll('.bar');
        const chartInfo = document.getElementById('chartInfo');

        bars.forEach(bar => {
            // হোভার ইভেন্ট
            bar.addEventListener('mouseover', function() {
                const value = this.getAttribute('data-value');
                chartInfo.textContent = `বারের মান: ${value}`;
            });

            bar.addEventListener('mouseout', function() {
                chartInfo.textContent = 'বারের উপর হোভার বা ক্লিক করুন!';
            });

            // ক্লিক ইভেন্ট
            bar.addEventListener('click', function() {
                bars.forEach(b => b.classList.remove('selected'));
                this.classList.add('selected');
                const value = this.getAttribute('data-value');
                chartInfo.textContent = `আপনি একটি বার নির্বাচন করেছেন যার মান: ${value}`;
            });
        });
    </script>
</body>
</html>

ব্যাখ্যা:

  • .bar ক্লাস: বার চার্টের বর্গগুলোর স্টাইল এবং ট্রানজিশন নির্ধারণ করে।
  • :hover পছন্দ: হোভার করলে বারটির রঙ পরিবর্তন হয়।
  • data-value অ্যাট্রিবিউট: প্রতিটি বারটির মান সংরক্ষণ করে।
  • JavaScript ইভেন্ট হ্যান্ডলার: হোভার করলে বারটির মান প্রদর্শন করে এবং ক্লিক করলে নির্বাচিত বারটি হাইলাইট করে।

৬. Best Practices (শ্রেষ্ঠ অনুশীলন)

  1. সেমান্টিক এবং অ্যাক্সেসিবিলিটি:
    • Fallback কন্টেন্ট: SVG এলিমেন্টের ভিতরে fallback কন্টেন্ট প্রদান করুন যাতে SVG সমর্থন না করলে ব্যবহারকারীদের তথ্য প্রদান করা যায়।
    • ARIA অ্যাট্রিবিউটস: SVG গ্রাফিক্সকে স্ক্রিন রিডার ব্যবহারকারীদের জন্য বোধগম্য করতে ARIA অ্যাট্রিবিউটস ব্যবহার করুন, যেমন role="img" এবং aria-label
  2. পারফরমেন্স অপ্টিমাইজেশন:
    • Minimize SVG কোড: অপ্রয়োজনীয় স্পেস, কমেন্ট, এবং অতিরিক্ত ট্যাগ বাদ দিন।
    • Optimize ইমেজ এবং রিসোর্স: SVG ফাইলের সাইজ কমাতে টুলস ব্যবহার করুন যেমন SVGO
  3. Responsive Design:
    • ViewBox ব্যবহার: viewBox অ্যাট্রিবিউট ব্যবহার করে SVG গ্রাফিক্সকে রেসপনসিভ করে তুলুন।
    • CSS ব্যবহার: CSS মিডিয়া কুয়েরি ব্যবহার করে SVG এর সাইজ এবং স্টাইল পরিবর্তন করুন বিভিন্ন ডিভাইসের জন্য।
  4. স্টাইলিং এবং কাস্টমাইজেশন:
    • CSS এর সাথে সমন্বয়: SVG গ্রাফিক্সকে CSS এর মাধ্যমে স্টাইলিশ করুন এবং তাদের রঙ, সাইজ, এবং অন্যান্য প্রপার্টি পরিবর্তন করুন।
    • JavaScript ইন্টারঅ্যাকশন: SVG গ্রাফিক্সে ইন্টারঅ্যাকশন এবং অ্যানিমেশন যোগ করতে JavaScript ব্যবহার করুন।
  5. ব্রাউজার সমর্থন:
    • Cross-Browser Compatibility: নিশ্চিত করুন যে আপনার SVG গ্রাফিক্স সব প্রধান ব্রাউজারে সঠিকভাবে প্রদর্শিত হচ্ছে।
    • Fallbacks প্রদান: পুরানো ব্রাউজারগুলির জন্য fallback ভ্যালিডেশন এবং বিকল্প উপায় বিবেচনা করুন।
  6. Accessibility (অ্যাক্সেসিবিলিটি):
    • স্পষ্ট লেবেল: SVG গ্রাফিক্সে স্পষ্ট লেবেল এবং টেক্সট ব্যবহার করুন যাতে স্ক্রিন রিডার ব্যবহারকারীরা সহজে বুঝতে পারে।
    • Keyboard Navigable: ইন্টারেক্টিভ SVG ইলিমেন্টগুলো কীবোর্ডের মাধ্যমে নিয়ন্ত্রণযোগ্য করে তুলুন।
  7. Maintenance এবং Readability:
    • কমেন্ট ব্যবহার: SVG কোডে কমেন্ট ব্যবহার করে বিভিন্ন অংশের ব্যাখ্যা দিন।
    • কোড অর্গানাইজেশন: SVG কোডকে সঠিকভাবে অর্গানাইজ করুন যাতে কোড মেইনটেইন করা সহজ হয়।

উপসংহার

SVG (Scalable Vector Graphics) হলো একটি শক্তিশালী এবং বহুমুখী ফরম্যাট যা ওয়েব ডেভেলপমেন্টে ভেক্টর গ্রাফিক্স তৈরি এবং প্রদর্শনের জন্য অত্যন্ত কার্যকর। CSS এবং JavaScript এর সাথে ইন্টিগ্রেশন করলে SVG গ্রাফিক্সকে আরও স্টাইলিশ, ইন্টারেক্টিভ এবং অ্যানিমেটেড করা যায়। Path, Circle, Rectangle, এবং Line আঁকার মাধ্যমে আপনি বিভিন্ন ধরনের গ্রাফিক্স এবং ডিজাইন তৈরি করতে পারেন, যা ওয়েবসাইটকে আরও প্রাণবন্ত এবং ইন্টারেক্টিভ করে তোলে।

টিপস:

  • ডকুমেন্টেশন রেফারেন্স: MDN Web Docs - SVG আরও বিস্তারিত জানতে।
  • প্র্যাকটিস করুন: বিভিন্ন প্রকল্পে SVG ব্যবহার করে দেখুন এবং বিভিন্ন শেপ, টেক্সট, এবং ইমেজ আঁকার অভ্যাস করুন।
  • স্টাইলিং এবং কাস্টমাইজেশন: CSS এবং JavaScript ব্যবহার করে SVG গ্রাফিক্সকে আরও আকর্ষণীয় এবং ইন্টারেক্টিভ করুন।
  • অ্যাক্সেসিবিলিটি নিশ্চিত করুন: SVG গ্রাফিক্সকে স্ক্রিন রিডার ব্যবহারকারীদের জন্য বোধগম্য করতে ARIA অ্যাট্রিবিউটস ব্যবহার করুন।
  • ব্রাউজার সমর্থন পরীক্ষা করুন: নিশ্চিত করুন যে আপনার টার্গেট অডিয়েন্সের ব্রাউজারগুলি SVG সমর্থন করে।
Content added By
Promotion

Are you sure to start over?

Loading...