নিম্নলিখিত সিএসএস নিয়মটি কী করে:
.clear { clear: both; }
এবং কেন এটি আমাদের ব্যবহার করা দরকার?
নিম্নলিখিত সিএসএস নিয়মটি কী করে:
.clear { clear: both; }
এবং কেন এটি আমাদের ব্যবহার করা দরকার?
উত্তর:
আমি এখানে কীভাবে ভাসমানগুলি (বিশদভাবে) কাজ করে তা ব্যাখ্যা করব না, কেননা এই প্রশ্নটি কেন সাধারণভাবে কেন ব্যবহার করে clear: both;
বা clear: both;
ঠিক কী করে ...
আমি এই উত্তরটি সহজ এবং মূলে রাখব এবং গ্রাফিকভাবে আপনাকে ব্যাখ্যা করব কেন clear: both;
প্রয়োজনীয় বা এটি কী করে ...
সাধারণত ডিজাইনাররা উপাদানগুলি বাম বা ডানদিকে ভাসিয়ে দেয় যা অন্যদিকে একটি ফাঁকা স্থান তৈরি করে যা অন্যান্য উপাদানগুলিকে অবশিষ্ট স্থান গ্রহণ করতে দেয়।
যখন ডিজাইনার পাশাপাশি পাশাপাশি দুটি ব্লক স্তরের উপাদানগুলির প্রয়োজন হয় তখন উপাদানগুলি ভাসমান হয়। উদাহরণস্বরূপ বলুন যে আমরা একটি বেসিক ওয়েবসাইট ডিজাইন করতে চাই যা নীচের মত লেআউট আছে ...
ডেমো চিত্রের লাইভ উদাহরণ ।
ডেমোর জন্য কোড
নোট: আপনি যোগ করার জন্য থাকতে পারে header
, footer
, aside
, section
যেমন (এবং অন্যান্য HTML5 এর উপাদান) display: block;
স্পষ্টভাবে উল্লেখ যে উপাদান ব্লক স্তর উপাদান জন্য আপনার স্টাইলশীট হবে।
আমার একটি বেসিক লেআউট, 1 শিরোলেখ, 1 সাইড বার, 1 সামগ্রী অঞ্চল এবং 1 পাদচরণ রয়েছে।
এর জন্য কোনও ফ্লোট নেই, তারপরে ট্যাগটি header
আসবে aside
যা আমি আমার ওয়েবসাইটের সাইডবারে ব্যবহার করব, তাই আমি বামে উপাদানটি ভাসিয়ে দেব।
দ্রষ্টব্য: ডিফল্টরূপে, ব্লক স্তরের উপাদানটি নথিটি 100% প্রস্থ গ্রহণ করে, তবে বাম বা ডানদিকে ভাসতে থাকলে এটি ধারণ করা সামগ্রী অনুসারে এটি আকার পরিবর্তন করবে res
সুতরাং আপনি যেমন নোট করেছেন, বামে ভাসমান div
স্থানটি তার ডান অব্যবহৃত জায়গায় ছেড়ে দেয়, যা div
এটির পরে অবশিষ্ট স্থানটিতে স্থানান্তর করতে দেয় ।
div
তারা ভাসমান না হলে একের পর এক রেন্ডার দেবেdiv
বাম বা ডান দিকে ভাসতে থাকলে একে অপরের পাশে স্থানান্তরিত হবেঠিক আছে, সুতরাং ব্লক স্তরের উপাদানগুলি বাম বা ডানদিকে ভাসা অবস্থায় আচরণ করে, সুতরাং এখন কেন clear: both;
প্রয়োজন এবং কেন?
তাই আপনি যদি বিন্যাস করা ডেমো দ্রষ্টব্য - কেস তুমি ভুলে গেছ এ, এখানে এটা ..
আমি বলা ক্লাস ব্যবহার করছি .clear
এবং এটিতে clear
একটি মান সহ একটি সম্পত্তি রাখা আছে both
। সুতরাং এটির কেন প্রয়োজন তা দেখা যাক both
।
আমি ভাসিয়ে রেখেছি aside
এবং section
বামে উপাদানগুলি রেখেছি , সুতরাং একটি দৃশ্যটি ধরুন , যেখানে আমাদের একটি পুল আছে, যেখানে header
শক্ত জমি আছে, aside
এবং section
পুলটিতে ভাসছে এবং পাদলেখ আবার শক্ত জমি, এরকম কিছু ...
সুতরাং নীল জলের ভাসমান উপাদানগুলির ক্ষেত্র কী তা কোনও ধারণা নেই, সেগুলি পুলের চেয়ে বড় বা আরও ছোট হতে পারে, তাই এখানে একটি সাধারণ সমস্যা আসে যা 90% সিএসএসের প্রাথমিক সমস্যায় ফেলে: কেন একটি ধারক উপাদানটির পটভূমি প্রসারিত হয় না? যখন এটি ভাসমান উপাদান রাখে। এটি কারণ কনটেইনার উপাদানটি এখানে একটি পল এবং এটি পলটির কোনও ধারণা নেই যে কতগুলি বস্তু ভাসমান, বা ভাসমান উপাদানগুলির দৈর্ঘ্য বা প্রস্থ কত, তাই এটি প্রসারিত হবে না।
(এটি পরিষ্কার করার জন্য এই উত্তরটির [ক্লিয়ারফিক্স] বিভাগটি পড়ুন div
explanation ব্যাখ্যা করার উদ্দেশ্যে আমি ইচ্ছাকৃতভাবে একটি খালি উদাহরণ ব্যবহার করছি )
আমি উপরের 3 টি উদাহরণ সরবরাহ করেছি, প্রথমটি হ'ল ডকুমেন্ট প্রবাহ যেখানে red
ব্যাকগ্রাউন্ডটি কেবল প্রত্যাশা অনুযায়ী রেন্ডার হবে যেহেতু ধারকটি কোনও ভাসমান বস্তু রাখে না।
দ্বিতীয় উদাহরণে, যখন বস্তুটি বামে ভাসা করা হবে, তখন ধারক উপাদান (POOL) ভাসমান উপাদানগুলির মাত্রা জানতে পারবে না এবং তাই এটি ভাসমান উপাদানগুলির উচ্চতা পর্যন্ত প্রসারিত হবে না।
ব্যবহারের পরে clear: both;
, ধারক উপাদানটি তার ভাসমান উপাদান মাত্রায় প্রসারিত করা হবে।
আর একটি কারণ clear: both;
ব্যবহৃত হয় হ'ল উপাদানটি বাকী স্থানে স্থানান্তরিত করতে প্রতিরোধ করা।
বলুন যে আপনি পাশাপাশি 2 উপাদান এবং তাদের নীচে অন্য উপাদান চান ... সুতরাং আপনি 2 উপাদান বাম দিকে ভাসাবেন এবং আপনি তাদের নীচে অন্যটি চান।
div
বামে ভাসমান ফলে section
বাকী স্থানে চলে যাওয়ার ফলেdiv
তাই সাফ যে section
ট্যাগ বাড়ালো নিচে রেন্ডার করবে div
গুলি সর্বশেষে তবে সর্বনিম্ন নয়, footer
ট্যাগটি ফ্লোটেড উপাদানগুলির পরে রেন্ডার হবে কারণ আমি clear
আমার footer
ট্যাগগুলি ঘোষণার আগে ক্লাসটি ব্যবহার করেছি , যা নিশ্চিত করে যে সমস্ত ভাসমান উপাদান (বাম / ডান) এই পয়েন্ট পর্যন্ত সাফ হয়ে গেছে।
ক্লিয়ারফিক্সে আসছে যা ফ্লোট সম্পর্কিত to ইতিমধ্যে @ এলকির দ্বারা নির্ধারিত হিসাবে , আমরা যেভাবে এই ভাসমানগুলি সাফ করছি সেগুলি করার কোনও পরিষ্কার উপায় নয় কারণ আমরা খালি div
উপাদানটি ব্যবহার করছি যা একটি div
উপাদান নয় । সুতরাং এখানে ক্লিয়ারফিক্স আসে।
এটিকে ভার্চুয়াল উপাদান হিসাবে ভাবুন যা আপনার পিতামাতার উপাদান শেষ হওয়ার আগে একটি খালি উপাদান তৈরি করবে। এটি ভাসমান উপাদানগুলিকে ধারণ করে আপনার মোড়কের উপাদানটিকে স্বতঃসারণ করবে। এই উপাদানটি আপনার ডোমে অক্ষরে অক্ষরে উপস্থিত থাকবে না তবে কাজটি করবে।
ভাসমান উপাদান থাকা কোনও মোড়ক উপাদানকে স্ব-সাফ করতে আমরা ব্যবহার করতে পারি
.wrapper_having_floated_elements:after { /* Imaginary class name */
content: "";
clear: both;
display: table;
}
:after
আমার জন্য ব্যবহৃত সিউডো উপাদানটি নোট করুন class
। এটি মোড়কের উপাদানটি নিজেই বন্ধ হওয়ার ঠিক আগে একটি ভার্চুয়াল উপাদান তৈরি করবে। আমরা যদি ডোমটিতে দেখি তবে আপনি ডকুমেন্ট ট্রিতে এটি কীভাবে প্রদর্শিত হবে তা দেখতে পাবেন।
সুতরাং যদি আপনি দেখতে পান, এটি ভাসমান সন্তানের পরে রেন্ডার করা হয় div
যেখানে আমরা ভাসমানগুলি সাফ করি যা সম্পত্তিটির div
সাথে খালি উপাদান থাকার সমতুল্য কিছুই নয় clear: both;
যা আমরা এর জন্যও ব্যবহার করছি। এখন কেন display: table;
এবং content
এই উত্তরের সুযোগের বাইরে কেন তবে আপনি এখানে ছদ্ম উপাদান সম্পর্কে আরও শিখতে পারেন ।
নোট করুন যে এটি আইই 8 তেও কাজ করবে কারণ আইই 8 :after
সিউডো সমর্থন করে ।
বেশিরভাগ বিকাশকারী তাদের বিষয়বস্তুগুলি তাদের পৃষ্ঠাগুলিতে বাম বা ডানদিকে ভাসাবেন, সম্ভবত ডিভগুলি ধারণ করে লোগো, সাইডবার, সামগ্রী ইত্যাদি, অবশিষ্ট স্থানটিতেও ভাসমান, সুতরাং clear: both;
এটি ব্যবহার করা রোধ করতে , এটি বাম বা ডানদিকে ভাসমান সমস্ত উপাদান সাফ করে।
------------------ ----------------------------------
div1(Floated Left) Other div takes up the space here
------------------ ----------------------------------
এখন আপনি যদি নীচে অন্য ডিভেন্ডার রেন্ডার করতে চান তবে আপনি div1
ব্যবহার করবেন clear: both;
যাতে এটি আপনার সমস্ত ভাসমান, বাম বা ডান পরিষ্কার করে দেয়
------------------
div1(Floated Left)
------------------
<div style="clear: both;"><!--This <div> acts as a separator--></div>
----------------------------------
Other div renders here now
----------------------------------
display: inline-block
একটি উপাদান, এবং পিতা বা মাতা উপর আপনি ব্যবহার করতে পারেন text-align: left
, text-align: center
বা text-align: right
উদাহরণস্বরূপ।
clear
সম্পত্তি ইঙ্গিত করে যে বাম, ডান বা একটি উপাদান উভয় পক্ষের একই ব্লক বিন্যাস অনুষঙ্গের মধ্যে আগের বাড়ালো উপাদান সংলগ্ন হতে পারে না। সাফ উপাদানসমূহ সংশ্লিষ্ট ভাসমান উপাদানগুলির নীচে ঠেলাঠেলি করা হয়। উদাহরণ:
clear: none;
উপাদানগুলি ভাসমান উপাদানগুলির সাথে সংলগ্ন থাকেclear: left;
এলিমেন্ট বাম ভাসমান উপাদানগুলির নীচে ধাক্কাclear: right;
উপাদানটি ভাসমান উপাদানের নীচে ঠেলাঠেলি করেclear: both;
উপাদানটি ভাসমান সমস্ত উপাদানের নীচে ঠেলাঠেলি করেclear
বর্তমান ব্লক বিন্যাস প্রসঙ্গে বাহিরগুলি প্রভাবিত করে নাdisplay: inline-block;
এই দৃশ্য থেকে CSS সম্পত্তি সরিয়ে দিলে কী হবে ? এটি inline-block
পিতামাত্ত্বিক উপাদানটিকে তার সহোদর উপাদানগুলিতে প্রসারিত করবে যার ক্লাস রয়েছে float-left
। যা "ক্লিয়ারটি বর্তমান ব্লকের ফর্ম্যাটিং প্রসঙ্গের বাইরে ভাসমানকে প্রভাবিত করে না" বিবৃতিটিকে ভুল করে তোলে। কেউ দয়া করে ব্যাখ্যা করতে পারেন?
display: inline-block
অর্থ এটি আর কোনও ব্লক ফর্ম্যাটিং প্রসঙ্গে উত্পন্ন করে না (খ) সেই উপাদানটির অভ্যন্তরে ভাসমান / সাফ করে এবং প্রথম ভাসমান অংশগুলি একই ব্লক বিন্যাস প্রসঙ্গে (ভিউপোর্ট) অংশ হয়ে যায়।
কেবল clear:both
এর div
সাথে সম্পত্তি সরিয়ে দেওয়ার চেষ্টা করুন class
sample
এবং দেখুন এটি কীভাবে ভাসমান divs
।
মিঃ এলিয়েনের উত্তরটি সঠিক, তবে যাইহোক আমি ব্যবহার করার পরামর্শ দিচ্ছি না <div class="clear"></div>
কারণ এটি কেবল একটি হ্যাক যা আপনার মার্কআপটিকে মলিন করে দেয়। এটি div
খারাপ কাঠামো এবং শব্দার্থকতার দিক থেকে খালি নয় , এটি আপনার কোডটিকে নমনীয়ও করে না। কিছু ব্রাউজারগুলিতে এই ডিভিটি অতিরিক্ত উচ্চতার কারণ হয় এবং আপনাকে height: 0;
এটি আরও খারাপ করে যোগ করতে হয় । কিন্তু যখন আপনি আপনার ভাসমান উপাদানগুলির চারপাশে পটভূমি বা সীমানা যুক্ত করতে চান তখন আসল সমস্যাগুলি শুরু হয় - এটি কেবল ধসে পড়বে কারণ ওয়েবটি খারাপভাবে ডিজাইন করা হয়েছিল । আমি ভাসমান উপাদানগুলিকে ধারক করে মোড়ানোর পরামর্শ দিচ্ছি যার ক্লিয়ারফিক্স সিএসএস বিধি রয়েছে। এটি হ্যাক পাশাপাশি, তবে মানব, এসইও রোবোটগুলির জন্য ব্যবহারে আরও নমনীয় এবং পঠনযোগ্য।
clearfix
: স্ট্যাকওভারফ্লো
আপনি যখন একটি উপাদান নীচের অংশে রাখতে চান অন্য উপাদানগুলি আপনি সিএসএসে এই কোডটি ব্যবহার করেন। এটি ভাসমানদের জন্য ব্যবহৃত হয়।
আপনি যদি সামগ্রী ভাসা করেন তবে আপনি বাম বা ডানদিকে ভাসতে পারেন ... সুতরাং একটি সাধারণ বিন্যাসে আপনার একটি বাম নেভ, একটি সামগ্রী ডিভ এবং পাদচরণ থাকতে পারে।
পাদলেখ এই দুটি ভাসমানের নীচে থাকে তা নিশ্চিত করতে (আপনি যদি বাম এবং ডানদিকে ভাসতে থাকেন) তবে আপনি পাদলেখকে যেমন রাখেন তেমনই clear: both
।
এইভাবে এটি উভয় ফ্লোটের নীচে থাকবে।
(আপনি যদি কেবল বাম ক্লিয়ার করে থাকেন তবে আপনার কেবল সত্যই প্রয়োজন clear: left;
))
এই টিউটোরিয়াল মাধ্যমে যান:
float
এবং নীচে পরবর্তী উপাদান চান, ডান বা বাম দিকে নয়।