গত বছর আমরা CSS লেআউট এবং সোর্স অর্ডার সংযোগ বিচ্ছিন্ন করার ব্লগ পোস্টটি প্রকাশ করেছি। এটি CSS ওয়ার্কিং গ্রুপে আলোচনা করা একটি প্রস্তাবের বিশদ বিবরণ রয়েছে, যেখানে ফ্লেক্সবক্স এবং গ্রিডে আইটেমগুলিকে পুনরায় সাজানোর ফলে একটি সংযোগ বিচ্ছিন্ন ট্যাবিং অভিজ্ঞতার কারণ হয় সেই সমস্যাটি সমাধান করার লক্ষ্যে। সেই পোস্টের শুরুর অংশটি সেই সমস্যার রূপরেখা দেয় যা ওয়ার্কিং গ্রুপ সমাধান করার চেষ্টা করছে। তারপর থেকে জিনিসগুলি এগিয়ে গেছে, এবং এই পোস্টটি আমরা এখন কোথায় আছি তার একটি সংক্ষিপ্ত আপডেট দেয়। আমাদের একটি নির্দিষ্ট ক্ষেত্রও রয়েছে যেখানে আমাদের আপনার প্রতিক্রিয়া প্রয়োজন— আমরা কীভাবে display-contents
আছে এমন আইটেমগুলির সাথে মোকাবিলা করব?
প্রস্তাবের আপডেট
CSS ডিসপ্লে লেভেল 4 স্পেসিফিকেশনে এখন খসড়া স্পেসিফিকেশন টেক্সট আছে। এটি reading-flow
নামে একটি নতুন সম্পত্তি প্রবর্তন করে। এই বৈশিষ্ট্যটি ফ্লেক্স বা গ্রিড লেআউটের জন্য থাকা উপাদানে যোগ করা হয় ( display: grid
বা display: flex
)।
সম্পত্তি নিম্নলিখিত মান গ্রহণ করে:
-
normal
: DOM-এ উপাদানের ক্রম অনুসরণ করুন, যা বর্তমান আচরণ। -
flex-visual
: শুধুমাত্র ফ্লেক্স পাত্রে কার্যকর হয়। লেখার মোডকে বিবেচনায় নিয়ে ফ্লেক্স আইটেমগুলির ভিজ্যুয়াল রিডিং অর্ডার অনুসরণ করে। -
flex-flow
: শুধুমাত্র ফ্লেক্স পাত্রে কার্যকর হয়। ফ্লেক্স-প্রবাহের দিক অনুসরণ করে। -
grid-rows
: শুধুমাত্র গ্রিড পাত্রে কার্যকর হয়। লেখার মোডকে বিবেচনায় রেখে সারি অনুসারে গ্রিড আইটেমের ভিজ্যুয়াল ক্রম অনুসরণ করে। -
grid-columns
: শুধুমাত্র গ্রিড পাত্রে কার্যকর হয়। কলাম দ্বারা গ্রিড আইটেমগুলির চাক্ষুষ ক্রম অনুসরণ করে, লেখার মোডকে বিবেচনায় নিয়ে। -
grid-order
: শুধুমাত্র গ্রিড পাত্রে কার্যকর হয়।order
সম্পত্তি অ্যাকাউন্টে নেয়, কিন্তু অন্যথায়normal
মত কাজ করে।
উদাহরণস্বরূপ, যদি আপনার একটি পাত্রে তিনটি ফ্লেক্স আইটেম থাকে এবং তাদের flex-direction
row-reverse
সেট করেন, তারা ফ্লেক্স কন্টেইনারের শেষ থেকে লাইন আপ করে এবং ট্যাব অর্ডার ডান থেকে বামে চলে যায়।
.flex {
display: flex;
flex-direction: row-reverse;
}
flex-flow: visual
তারপর পড়ার প্রবাহ ইংরেজিতে ভিজ্যুয়াল ক্রম অনুসরণ করবে, তাই বাম থেকে ডানে।
.flex {
display: flex;
flex-direction: row-reverse;
reading-flow: flex-visual;
}
গ্রিড লেআউটে সোর্স অর্ডারের পরিবর্তে ভিজ্যুয়াল সারি বা কলাম অনুসরণ করতে reading-flow
ব্যবহার করে। নিম্নলিখিত উদাহরণে পঠন প্রবাহ সারি অনুসরণ করে।
.wrapper {
display: grid;
grid-template-columns: repeat(3, 150px);
grid-template-areas: "d b b"
"c c a";
reading-flow: grid-rows;
}
.a { grid-area: a; }
.b { grid-area: b; }
.c { grid-area: c; }
.d { grid-area: d; }
চেষ্টা করে দেখুন
এই CSS সম্পত্তি বর্তমানে পরীক্ষামূলক, তবে এটি পরীক্ষার জন্য সক্ষম করা সম্ভব। এটি ব্যবহার করে দেখতে, Chrome Dev বা Canary সংস্করণ 128 বা উচ্চতর ইনস্টল করুন এবং রানটাইম ফ্ল্যাগ CSSReadingFlow
সক্ষম করুন। আপনাকে শুরু করার জন্য কিছু উদাহরণ রয়েছে, যেগুলি ক্যানারিতে পতাকা সক্ষম করে কাজ করে।
display: contents
ক্ষেত্রে এখনও একটি কাজ চলছে এবং এই পোস্টের নিম্নলিখিত বিভাগটি পড়ার পরে আপনার দেওয়া প্রতিক্রিয়ার উপর ভিত্তি করে পরিবর্তন হতে পারে।
display: contents
এবং ওয়েব উপাদান
সিএসএস ওয়ার্কিং গ্রুপের জন্য একটি অসামান্য সমস্যা রয়েছে কিভাবে পরিস্থিতি মোকাবেলা করতে হবে যেখানে রিডিং-ফ্লো সহ একটি উপাদানের বাচ্চাদের মধ্যে একটির display: contents
, এবং একইভাবে যদি আইটেমটি <slot>
হয়।
নিম্নলিখিত উদাহরণে, <div>
উপাদানগুলির display: contents
। এই কারণে, সমস্ত <button>
উপাদানগুলিকে ফ্লেক্স লেআউটে অংশগ্রহণের জন্য উন্নীত করা হয়, এবং সেইজন্য reading-flow
তাদের ক্রম বিবেচনা করে।
.wrapper {
display: flex;
reading-flow: flex-visual;
}
<div class="wrapper">
<div style="display: contents" id="contents1">
<button style="order: 3" id="o3">3</button>
<button style="order: 1" id="o1">1</button>
<div style="display: contents" id=contents2>
<button style="order: 4" id="o4">4</button>
<button style="order: 2" id=o2>2</button>
</div>
</div>
</div>
আমরা জানতে চাই যে আপনার কাছে এমন কোনো বাস্তব-বিশ্বের উদাহরণ আছে যা এই উদাহরণে দেখা পরিস্থিতি সৃষ্টি করে। আপনার কি কখনও এমন একটি উপাদানের ভিতরে থাকা আইটেমগুলিকে পুনরায় সাজাতে হবে যার মধ্যে display: contents
যা ভাইবোন নয়, যে আইটেমের ভাইবোন হওয়ার কারণে display: contents
।
উপরন্তু, আমরা display: contents
সংক্রান্ত সমস্যাগুলি সমাধান করার জন্য কাজ করি এমন যেকোন উদাহরণ দেখতে সহায়ক হবে যেখানে আপনি প্রদর্শনের সাথে reading-flow
বৈশিষ্ট্য ব্যবহার করতে চান display: contents
। আপনার কাছে থাকা বাস্তব-বিশ্ব ব্যবহারের ক্ষেত্রে বোঝা আমাদেরকে আপনার চাহিদা পূরণ করে এমন একটি সমাধান ডিজাইন করতে সাহায্য করবে।
CSS ওয়ার্কিং গ্রুপ ইস্যুতে ব্যবহারের ক্ষেত্রে যোগ করুন। যদি আপনার কাছে লাইভ সাইটগুলিতে উদাহরণ থাকে বা কোডপেন বা JSFiddle-এ একটি ডেমো তৈরি করতে পারেন যা অবিশ্বাস্যভাবে কার্যকর হবে যখন আমরা একটি গ্রুপ হিসাবে এই সমস্যাটি নিয়ে আলোচনা করতে আসি। আপনি কি ঘটতে আশা করবেন সে সম্পর্কে আপনার যদি চিন্তা থাকে তবে এটিও দরকারী। যাইহোক, সবচেয়ে গুরুত্বপূর্ণ জিনিস বাস্তব ব্যবহারের ক্ষেত্রে দেখতে হয়.