মৌলিক CSS এর নীতিগুলি শেখার সময়, রক্ষণাবেক্ষণযোগ্যতা নিশ্চিত করার জন্য একজনকে মডুলার, পুনরায় ব্যবহারযোগ্য এবং বর্ণনামূলক শৈলী লিখতে শেখানো হয়। কিন্তু যখন বিকাশকারীরা বাস্তব-বিশ্বের অ্যাপ্লিকেশনগুলির সাথে জড়িত হন, তখন প্রায়শই অনাকাঙ্ক্ষিত এলাকায় স্টাইল ফাঁস ছাড়া UI বৈশিষ্ট্যগুলি যোগ করা অসম্ভব বলে মনে হয়। এই সমস্যাটি প্রায়শই একটি স্ব-পূরণকারী লুপে পরিণত হয়; যে শৈলীগুলি তাত্ত্বিকভাবে একটি উপাদান বা শ্রেণীতে স্কোপ করা হয় সেগুলি দেখাতে শুরু করে যেখানে তারা অন্তর্ভুক্ত নয়। এটি বিকাশকারীকে ফাঁস হওয়া শৈলীগুলিকে ওভাররাইড করার জন্য আরও নির্দিষ্ট নির্বাচক তৈরি করতে বাধ্য করে, যা দুর্ঘটনাক্রমে গ্লোবাল স্টাইলগুলিকে ওভাররাইড করে এবং আরও অনেক কিছু। কঠোর শ্রেণির নাম কনভেনশন, যেমন BEM, এই সমস্যার একটি তাত্ত্বিক সমাধান। BEM (ব্লক, এলিমেন্ট, মডিফায়ার) পদ্ধতি হল CSS ফাইলের মধ্যে পুনঃব্যবহারযোগ্যতা এবং গঠন নিশ্চিত করার জন্য CSS ক্লাসের নামকরণের একটি পদ্ধতিগত উপায়। এই ধরনের নামকরণ প্রথাগুলি উপাদান এবং তাদের অবস্থা বর্ণনা করার জন্য ডোমেন ভাষা ব্যবহার করে জ্ঞানীয় লোড কমাতে পারে এবং সঠিকভাবে প্রয়োগ করা হলে, বড় অ্যাপ্লিকেশনগুলির জন্য শৈলী বজায় রাখা সহজ করে তুলতে পারে। বাস্তব জগতে, যাইহোক, এটি সবসময় এর মতো কাজ করে না। অগ্রাধিকার পরিবর্তন হতে পারে, এবং পরিবর্তনের সাথে, বাস্তবায়ন অসঙ্গত হয়ে যায়। এইচটিএমএল কাঠামোতে ছোট পরিবর্তনের জন্য অনেক CSS শ্রেণীর নাম সংশোধনের প্রয়োজন হতে পারে। অত্যন্ত ইন্টারেক্টিভ ফ্রন্ট-এন্ড অ্যাপ্লিকেশানগুলির সাথে, BEM প্যাটার্ন অনুসরণ করে ক্লাসের নামগুলি দীর্ঘ এবং অপ্রত্যাশিত হয়ে উঠতে পারে (যেমন, অ্যাপ-ব্যবহারকারী-ওভারভিউ__স্ট্যাটাস--প্রমাণিত করা হচ্ছে), এবং নামকরণের নিয়মগুলি সম্পূর্ণরূপে মেনে না চলা সিস্টেমের কাঠামোকে ভেঙে দেয়, যার ফলে এর সুবিধাগুলি অস্বীকার করে। এই চ্যালেঞ্জগুলির পরিপ্রেক্ষিতে, এতে অবাক হওয়ার কিছু নেই যে ডেভেলপাররা ফ্রেমওয়ার্কের দিকে ঝুঁকছেন, টেলউইন্ড হল সবচেয়ে জনপ্রিয় সিএসএস ফ্রেমওয়ার্ক। শৈলীগুলির মধ্যে একটি অজেয় নির্দিষ্টতার যুদ্ধের মতো লড়াই করার চেষ্টা করার পরিবর্তে, CSS ক্যাসকেড ছেড়ে দেওয়া এবং সম্পূর্ণ বিচ্ছিন্নতার গ্যারান্টি দেয় এমন সরঞ্জামগুলি ব্যবহার করা সহজ। ডেভেলপাররা ইউটিলিটিগুলির উপর আরও ঝুঁকছেন আমরা কিভাবে জানি যে কিছু বিকাশকারী ক্যাসকেড শৈলী এড়াতে আগ্রহী? এটি "আধুনিক" ফ্রন্ট-এন্ড টুলিংয়ের উত্থান - যেমন CSS-in-JS ফ্রেমওয়ার্ক - বিশেষভাবে সেই উদ্দেশ্যে ডিজাইন করা হয়েছে। বিচ্ছিন্ন শৈলীগুলির সাথে কাজ করা যা নির্দিষ্ট উপাদানগুলির জন্য শক্তভাবে স্কোপ করা তাজা বাতাসের শ্বাসের মতো মনে হতে পারে। এটি জিনিসগুলির নামকরণের প্রয়োজনীয়তাকে সরিয়ে দেয় - এখনও সবচেয়ে ঘৃণ্য এবং সময়সাপেক্ষ ফ্রন্ট-এন্ড কাজগুলির মধ্যে একটি - এবং বিকাশকারীদের সিএসএস উত্তরাধিকারের সুবিধাগুলি সম্পূর্ণরূপে না বুঝে বা লাভ না করেই উত্পাদনশীল হতে দেয়৷ কিন্তু CSS ক্যাসকেড ডিচ করা তার নিজস্ব সমস্যা নিয়ে আসে। উদাহরণস্বরূপ, জাভাস্ক্রিপ্টে স্টাইল রচনার জন্য ভারী বিল্ড কনফিগারেশনের প্রয়োজন হয় এবং প্রায়শই স্টাইলগুলিকে কম্পোনেন্ট মার্কআপ বা এইচটিএমএল এর সাথে বিশ্রীভাবে মিশে যায়। নামকরণের নিয়মগুলি সাবধানে বিবেচনা করার পরিবর্তে, আমরা আমাদের জন্য নির্বাচক এবং শনাক্তকারীগুলিকে স্বয়ংক্রিয়ভাবে তৈরি করার জন্য বিল্ড টুলগুলিকে অনুমতি দিই (যেমন, .jsx-3130221066), যার জন্য ডেভেলপারদের নিজের মধ্যে আরেকটি ছদ্ম-ভাষা বজায় রাখতে হবে। (যেন আপনার সমস্ত উপাদানের প্রভাবগুলি কী করে তা বোঝার জ্ঞানীয় লোড ইতিমধ্যে যথেষ্ট ছিল না!) টুলিং-এ ক্লাসের নামকরণের কাজটিকে আরও বিমূর্ত করার অর্থ হল যে বিকাশকারী সরঞ্জামগুলির মতো লাইভ ডিবাগিং সমর্থনকারী নেটিভ ব্রাউজার বৈশিষ্ট্যগুলিকে ব্যবহার করার পরিবর্তে, বিকাশের জন্য সংকলিত নির্দিষ্ট অ্যাপ্লিকেশন সংস্করণগুলিতে প্রাথমিক ডিবাগিং প্রায়ই সীমাবদ্ধ থাকে। এটি প্রায় এমনই যে ওয়েব ইতিমধ্যে যা সরবরাহ করে তা বিমূর্ত করার জন্য আমরা যে সরঞ্জামগুলি ব্যবহার করছি সেগুলি ডিবাগ করার জন্য আমাদের সরঞ্জামগুলি বিকাশ করতে হবে - সবই স্ট্যান্ডার্ড CSS লেখার "ব্যথা" থেকে দূরে থাকার জন্য। সৌভাগ্যবশত, আধুনিক CSS বৈশিষ্ট্যগুলি শুধুমাত্র স্ট্যান্ডার্ড CSS লেখাকে আরও নমনীয় করে তোলে না বরং আমাদের মতো ডেভেলপারদের ক্যাসকেড পরিচালনা করতে এবং এটিকে আমাদের জন্য কার্যকর করার জন্য অনেক বেশি শক্তি দেয়। CSS ক্যাসকেড স্তরগুলি একটি দুর্দান্ত উদাহরণ, তবে আরও একটি বৈশিষ্ট্য রয়েছে যা আশ্চর্যজনকভাবে মনোযোগের অভাব পায় - যদিও এটি এখন পরিবর্তিত হচ্ছে যে এটি সম্প্রতি বেসলাইন সামঞ্জস্যপূর্ণ হয়ে উঠেছে। CSS @স্কোপ অ্যাট-রুল আমি CSS @scope at-rule-কে আমরা কভার করেছি এমন ধরনের স্টাইল-লিক-জনিত উদ্বেগের জন্য একটি সম্ভাব্য প্রতিকার বলে মনে করি, যা আমাদেরকে বিমূর্ততা এবং অতিরিক্ত বিল্ড টুলিংয়ের জন্য নেটিভ ওয়েব সুবিধার সাথে আপস করতে বাধ্য করে না। "@স্কোপ CSS অ্যাট-রুল আপনাকে নির্দিষ্ট DOM সাবট্রিতে উপাদান নির্বাচন করতে সক্ষম করে, অত্যধিক-নির্দিষ্ট নির্বাচককে ওভাররাইড করা কঠিন, এবং আপনার নির্বাচকদের DOM কাঠামোর সাথে খুব শক্তভাবে সংযুক্ত না করেই উপাদানগুলিকে সুনির্দিষ্টভাবে লক্ষ্য করে।"- MDN

অন্য কথায়, আমরা উত্তরাধিকার, ক্যাসকেডিং বা এমনকি উদ্বেগের মৌলিক বিচ্ছেদ ছাড়াই নির্দিষ্ট ক্ষেত্রে বিচ্ছিন্ন শৈলীগুলির সাথে কাজ করতে পারি।যেটি ফ্রন্ট-এন্ড ডেভেলপমেন্টের একটি দীর্ঘমেয়াদি পথপ্রদর্শক নীতি। এছাড়াও, এটিতে দুর্দান্ত ব্রাউজার কভারেজ রয়েছে। আসলে, ফায়ারফক্স 146 ডিসেম্বরে @স্কোপের জন্য সমর্থন যোগ করেছে, এটিকে প্রথমবারের মতো বেসলাইন সামঞ্জস্যপূর্ণ করে তুলেছে। এখানে @স্কোপ নিয়ম বনাম BEM প্যাটার্ন ব্যবহার করে একটি বোতামের মধ্যে একটি সহজ তুলনা রয়েছে:

You May Also Like

Enjoyed This Article?

Get weekly tips on growing your audience and monetizing your content — straight to your inbox.

No spam. Join 138,000+ creators. Unsubscribe anytime.

Create Your Free Bio Page

Join 138,000+ creators on Seemless.

Get Started Free