ছবির উপাদান

পূর্ববর্তী মডিউলটি দেখিয়েছে কিভাবে srcset বৈশিষ্ট্য আপনাকে একই চিত্রের বিভিন্ন আকারের সংস্করণ প্রদান করতে দেয়। ব্রাউজার তখন সিদ্ধান্ত নিতে পারে কোনটি সঠিক সংস্করণ ব্যবহার করতে হবে। আপনি যদি ছবিটি সম্পূর্ণভাবে পরিবর্তন করতে চান তবে আপনার picture উপাদানটির প্রয়োজন হবে।

একইভাবে srcset src বৈশিষ্ট্যের উপর তৈরি করে, picture উপাদানটি img উপাদানের উপর তৈরি করে। picture উপাদানটি একটি img উপাদানের চারপাশে মোড়ানো হয়।

<picture>
 
<img src="image.jpg" alt="A description of the image.">
</picture>

যদি picture উপাদানের ভিতরে কোনো img উপাদান না থাকে, তাহলে picture উপাদানটি কাজ করবে না।

srcset অ্যাট্রিবিউটের মতো, picture উপাদানটি সেই img এলিমেন্টে src অ্যাট্রিবিউটের মান আপডেট করবে। পার্থক্য হল যেখানে srcset অ্যাট্রিবিউট ব্রাউজারকে পরামর্শ দেয়, picture উপাদান কমান্ড দেয়। এটি আপনাকে নিয়ন্ত্রণ দেয়।

source

আপনি একটি picture উপাদানের মধ্যে একাধিক source উপাদান নির্দিষ্ট করতে পারেন, প্রতিটির নিজস্ব srcset বৈশিষ্ট্য সহ। ব্রাউজার তারপর প্রথমটি কার্যকর করে যা এটি করতে পারে।

ইমেজ ফরম্যাট

এই উদাহরণে, তিনটি ভিন্ন বিন্যাসে তিনটি ভিন্ন চিত্র রয়েছে:

<picture>
 
<source srcset="image.avif" type="image/avif">
 
<source srcset="image.webp" type="image/webp">
 
<img src="image.jpg" alt="A description of the image."
   
width="300" height="200" loading="lazy" decoding="async">
</picture>

প্রথম source উপাদানটি নতুন AVIF বিন্যাসে একটি চিত্রকে নির্দেশ করে। যদি ব্রাউজারটি AVIF চিত্রগুলি রেন্ডার করতে সক্ষম হয়, তবে এটি সেই চিত্র ফাইলটি বেছে নেয়। অন্যথায়, এটি পরবর্তী source উপাদানে চলে যায়।

দ্বিতীয় source উপাদানটি WebP বিন্যাসে একটি চিত্রকে নির্দেশ করে। যদি ব্রাউজার WebP ছবি রেন্ডার করতে সক্ষম হয়, তাহলে এটি সেই ইমেজ ফাইলটি ব্যবহার করবে।

অন্যথায় ব্রাউজারটি img এলিমেন্টের src অ্যাট্রিবিউটে ইমেজ ফাইলে ফিরে যাবে। সেই ছবিটি একটি JPEG।

এর মানে হল আপনি পশ্চাদগামী সামঞ্জস্যের বলিদান ছাড়াই নতুন চিত্র বিন্যাস ব্যবহার শুরু করতে পারেন।

সেই উদাহরণে, type অ্যাট্রিবিউট ব্রাউজারকে বলেছে কোন ধরনের ইমেজ ফরম্যাট নির্দিষ্ট করা হয়েছে।

ছবির মাপ

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

<picture>
 
<source srcset="large.png" media="(min-width: 75em)">
 
<source srcset="medium.png" media="(min-width: 40em)">
 
<img src="small.png" alt="A description of the image."
   
width="300" height="200" loading="lazy" decoding="async">
</picture>

এখানে আপনি ব্রাউজারকে বলছেন যে ভিউপোর্টের প্রস্থ যদি 75em এর চেয়ে বেশি হয় তবে এটি অবশ্যই বড় চিত্র ব্যবহার করবে। 40em এবং 75em এর মধ্যে ব্রাউজারকে মাঝারি ছবি ব্যবহার করতে হবে। 40em এর নিচে ব্রাউজারকে ছোট ইমেজ ব্যবহার করতে হবে।

এটি img এলিমেন্টে srcset এবং sizes অ্যাট্রিবিউট ব্যবহার করার থেকে আলাদা। সেক্ষেত্রে আপনি ব্রাউজারকে পরামর্শ প্রদান করছেন। source উপাদানটি একটি পরামর্শের চেয়ে একটি কমান্ডের মতো।

আপনি একটি source উপাদানের srcset বৈশিষ্ট্যের ভিতরে পিক্সেল ঘনত্ব বর্ণনাকারীও ব্যবহার করতে পারেন।

<picture>
 
<source srcset="large.png 1x" media="(min-width: 75em)">
 
<source srcset="medium.png 1x, large.png 2x" media="(min-width: 40em)">
 
<img src="small.png" alt="A description of the image." width="300" height="200" loading="lazy" decoding="async"
   
srcset="small.png 1x, medium.png 2x, large.png 3x">
</picture>

সেই উদাহরণে আপনি এখনও ব্রাউজারকে বিভিন্ন ব্রেকপয়েন্টে কী করতে হবে তা বলছেন, কিন্তু এখন ব্রাউজারে ডিভাইসের পিক্সেল ঘনত্বের জন্য সবচেয়ে উপযুক্ত ছবি বেছে নেওয়ার বিকল্প রয়েছে।

ক্রপিং

আপনি যদি একই চিত্রের ভিন্ন আকারের সংস্করণগুলি পরিবেশন করতে চান তবে srcset আপনার সেরা বিকল্প। কিন্তু যদি একটি ছবি ছোট আকারে ভালো না লাগে, তাহলে আপনি পরিবর্তে ছবিটির একটি ক্রপ করা সংস্করণ তৈরি করার চেষ্টা করতে পারেন।

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

এখানে একটি হিরো ইমেজের একটি উদাহরণ যা ভিউপোর্ট প্রস্থের উপর ভিত্তি করে এর বিষয়বস্তু এবং এর আকৃতি পরিবর্তন করে। প্রতিটি source উপাদানে width এবং height বৈশিষ্ট্য যোগ করুন।

<picture>
 
<source srcset="full.jpg" media="(min-width: 75em)" width="1200" height="500">
 
<source srcset="regular.jpg" media="(min-width: 50em)" width="800" height="400">
 
<img src="cropped.jpg" alt="A description of the image." width="400" height="400" loading="eager" decoding="sync">
</picture>

মনে রাখবেন যে আপনি ছবির উৎসের উপর নির্ভর করে alt বৈশিষ্ট্য পরিবর্তন করতে পারবেন না। আপনাকে একটি alt অ্যাট্রিবিউট লিখতে হবে যা পূর্ণ আকারের চিত্র এবং ক্রপ করা চিত্র উভয়ই বর্ণনা করে।

আপনার বেশিরভাগ প্রতিক্রিয়াশীল চিত্রগুলির জন্য আপনাকে সম্ভবত picture উপাদানটি ব্যবহার করতে হবে না — img উপাদানের srcset এবং sizes বৈশিষ্ট্যগুলি অনেকগুলি ব্যবহারের ক্ষেত্রে কভার করে৷ কিন্তু সেই পরিস্থিতিগুলির জন্য যখন আপনার আরও সূক্ষ্ম নিয়ন্ত্রণের প্রয়োজন হয়, picture উপাদানটি একটি শক্তিশালী হাতিয়ার।

এক ধরণের চিত্র রয়েছে যেখানে আপনার উভয় সমাধানের প্রয়োজন নাও হতে পারে: আইকন। সেটাই পরের কথা

আপনার উপলব্ধি পরীক্ষা করুন

ছবির উপাদান সম্পর্কে আপনার জ্ঞান পরীক্ষা করুন

যেখানে srcset অ্যাট্রিবিউট ব্রাউজারে ________ দেয়, <picture> উপাদানটি দেয় ________।

আদেশ, পরামর্শ
পরামর্শ, আদেশ

<picture> উপাদানের কিছু ক্ষমতা হল:

বিকল্প বিন্যাস
বিকল্প অনুপাত
বিকল্প ফসল
বিকল্প মাপ
বিকল্প ঘনত্ব