CSS-এর float প্রপার্টি নির্ধারণ করে একটি এলিমেন্ট কীভাবে ফ্লোট করবে।
CSS-এর clear প্রপার্টি নির্ধারণ করে ক্লিয়ার করা এলিমেন্টের পাশে কোন এলিমেন্ট এবং কোন দিকে ফ্লোট করতে পারবে।
কনটেন্ট পজিশন ও ফরম্যাট করতে float প্রপার্টি ব্যবহার করা হয়, যেমন একটি কন্টেইনারে ইমেজকে টেক্সটের বামে ফ্লোট করানো।
float প্রপার্টির নিচের যেকোনো একটি মান থাকতে পারে:
সবচেয়ে সহজ ব্যবহারে, float প্রপার্টি ইমেজের চারপাশে টেক্সট মোড়ানোর জন্য ব্যবহার করা যায়।
নিচের উদাহরণে একটি ইমেজকে টেক্সটের ডানে ফ্লোট করতে বলা হয়েছে:
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus imperdiet, nulla et dictum interdum, nisi lorem egestas odio, vitae scelerisque enim ligula venenatis dolor. Maecenas nisl est, ultrices nec congue eget, auctor vitae massa. Fusce luctus vestibulum augue ut aliquet. Mauris ante ligula, facilisis sed ornare eu, lobortis in odio. Praesent convallis urna a lacus interdum ut hendrerit risus congue. Nunc sagittis dictum nisi, sed ullamcorper ipsum dignissim ac...
img {
float: right;
}নিচের উদাহরণে একটি ইমেজকে টেক্সটের বামে ফ্লোট করতে বলা হয়েছে:
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus imperdiet, nulla et dictum interdum, nisi lorem egestas odio, vitae scelerisque enim ligula venenatis dolor. Maecenas nisl est, ultrices nec congue eget, auctor vitae massa.
img {
float: left;
}নিচের উদাহরণে ইমেজটি টেক্সটে যেখানে থাকে ঠিক সেখানেই প্রদর্শিত হবে (float: none;):
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus imperdiet, nulla et dictum interdum, nisi lorem egestas odio, vitae scelerisque enim ligula venenatis dolor. Maecenas nisl est, ultrices nec congue eget, auctor vitae massa.
img {
float: none;
}clear প্রপার্টি নির্ধারণ করে ক্লিয়ার করা এলিমেন্টের পাশে কোন এলিমেন্ট এবং কোন দিকে ফ্লোট করতে পারবে।
clear প্রপার্টির নিচের যেকোনো একটি মান থাকতে পারে:
একটি এলিমেন্টে float প্রপার্টি ব্যবহার করার পর clear প্রপার্টি ব্যবহার করার সবচেয়ে সাধারণ উপায়।
ফ্লোট ক্লিয়ার করার সময়, clear-কে float-এর সাথে মিলিয়ে নেওয়া উচিত: একটি এলিমেন্ট বামে ফ্লোট করা থাকলে, তাহলে আপনার বামে ক্লিয়ার করা উচিত। আপনার ফ্লোট করা এলিমেন্ট ফ্লোট করতে থাকবে, কিন্তু ক্লিয়ার করা এলিমেন্টটি ওয়েব পেজে এর নিচে দেখা যাবে।
নিচের উদাহরণে বামে ফ্লোট ক্লিয়ার করা হয়েছে। অর্থাৎ (div-এর) বাম পাশে কোনো ফ্লোটিং এলিমেন্টের অনুমতি নেই:
img {
float: left;
}একটি এলিমেন্ট তার কন্টেইনিং এলিমেন্টের চেয়ে লম্বা হলে, এবং সেটি ফ্লোট করা থাকলে, এটি তার কন্টেইনারের বাইরে "ওভারফ্লো" হয়ে যাবে:
এরপর এই সমস্যা সমাধানে আমরা কন্টেইনিং এলিমেন্টে overflow: auto; যোগ করতে পারি:
.clearfix {
overflow: auto;
}overflow: auto clearfix ভালো কাজ করে যতক্ষণ আপনি আপনার margin এবং padding নিয়ন্ত্রণে রাখতে পারেন (নাহলে আপনি স্ক্রলবার দেখতে পারেন)। তবে, নতুন, আধুনিক clearfix হ্যাক ব্যবহার করা বেশি নিরাপদ, এবং বেশিরভাগ ওয়েবপেজে নিচের কোডটি ব্যবহার করা হয়:
.clearfix::after {
content: "";
clear: both;
display: table;
}পরের একটি চ্যাপ্টারে ::after সিউডো-এলিমেন্ট সম্পর্কে আরও জানবেন।
বক্স 1
বক্স 2
বক্স 1
বক্স 2
বক্স 3
float প্রপার্টি দিয়ে, কনটেন্টের বক্স পাশাপাশি ফ্লোট করা সহজ:
* {
box-sizing: border-box;
}
.box {
float: left;
width: 33.33%; /* তিনটি বক্স (চারটির জন্য 25%, দুটির জন্য 50% ইত্যাদি ব্যবহার করুন) */
padding: 50px; /* ইমেজগুলোর মধ্যে জায়গা চাইলে */
}box-sizing কী?
আপনি সহজেই পাশাপাশি তিনটি ফ্লোটিং বক্স তৈরি করতে পারেন। তবে, আপনি যখন এমন কিছু যোগ করেন যা প্রতিটি বক্সের প্রস্থ বাড়িয়ে দেয় (যেমন padding বা border), তখন বক্সটি ভেঙে যাবে। box-sizing প্রপার্টি আমাদের padding এবং border-কে বক্সের মোট প্রস্থে (এবং উচ্চতায়) অন্তর্ভুক্ত করতে দেয়, যাতে padding বক্সের ভেতরেই থাকে এবং এটি না ভাঙে।
আমাদের CSS Box Sizing চ্যাপ্টারে box-sizing প্রপার্টি সম্পর্কে আরও পড়তে পারেন।
বক্সের গ্রিড ইমেজ পাশাপাশি দেখাতেও ব্যবহার করা যায়:
.img-container {
float: left;
width: 33.33%; /* তিনটি কন্টেইনার (চারটির জন্য 25%, দুটির জন্য 50% ইত্যাদি ব্যবহার করুন) */
padding: 5px; /* ইমেজগুলোর মধ্যে জায়গা চাইলে */
}আগের উদাহরণে, আপনি শিখেছেন কীভাবে সমান প্রস্থের বক্স পাশাপাশি ফ্লোট করাতে হয়। তবে, সমান উচ্চতার ফ্লোটিং বক্স তৈরি করা সহজ নয়। একটি দ্রুত সমাধান হলো, নিচের উদাহরণের মতো একটি নির্দিষ্ট height সেট করা:
কিছু কনটেন্ট, কিছু কনটেন্ট, কিছু কনটেন্ট
কিছু কনটেন্ট, কিছু কনটেন্ট, কিছু কনটেন্ট
কিছু কনটেন্ট, কিছু কনটেন্ট, কিছু কনটেন্ট
কিছু কনটেন্ট, কিছু কনটেন্ট, কিছু কনটেন্ট
.box {
height: 300px;
}তবে, এটি খুব একটা নমনীয় নয়। আপনি যদি নিশ্চিত করতে পারেন যে বক্সগুলোতে সবসময় সমান পরিমাণ কনটেন্ট থাকবে, তাহলে এটি ঠিক আছে। কিন্তু অনেক সময়, কনটেন্ট সমান হয় না। আপনি যদি উপরের উদাহরণটি একটি মোবাইল ফোনে চেষ্টা করেন, তাহলে দেখবেন দ্বিতীয় বক্সের কনটেন্ট বক্সের বাইরে প্রদর্শিত হচ্ছে। এখানেই CSS3 Flexbox কাজে লাগে - কারণ এটি স্বয়ংক্রিয়ভাবে বক্সগুলোকে সবচেয়ে লম্বা বক্সের সমান দৈর্ঘ্যে প্রসারিত করতে পারে:
একটি অনুভূমিক মেনু তৈরি করতে হাইপারলিঙ্কের একটি লিস্টের সাথে float ব্যবহার করুন:
| প্রপার্টি | বিবরণ |
|---|---|
| box-sizing | একটি এলিমেন্টের width ও height কীভাবে হিসাব করা হবে তা নির্ধারণ করে: এতে padding ও border অন্তর্ভুক্ত থাকবে কিনা |
| clear | ক্লিয়ার করা এলিমেন্টের পাশে কোন এলিমেন্ট এবং কোন দিকে ফ্লোট করতে পারবে তা নির্ধারণ করে |
| float | একটি এলিমেন্ট কীভাবে ফ্লোট করবে তা নির্ধারণ করে |
| overflow | কনটেন্ট একটি এলিমেন্টের বক্স থেকে ওভারফ্লো হলে কী ঘটবে তা নির্ধারণ করে |
| overflow-x | কনটেন্ট এলিমেন্টের কনটেন্ট এরিয়া থেকে ওভারফ্লো হলে বাম/ডান এজের সাথে কী করতে হবে তা নির্ধারণ করে |
| overflow-y | কনটেন্ট এলিমেন্টের কনটেন্ট এরিয়া থেকে ওভারফ্লো হলে উপরের/নিচের এজের সাথে কী করতে হবে তা নির্ধারণ করে |