আমি ক্লিয়ারফিক্সের কোন পদ্ধতি ব্যবহার করতে পারি?


864

আমার divদ্বি-কলামের লেআউট মোড়ানোর ক্ষেত্রে বহু বছরের সমস্যা রয়েছে । আমার সাইডবারটি ভাসমান, তাই আমার ধারক divসামগ্রী এবং সাইডবারটি মোড়াতে ব্যর্থ।

<div id="container">
  <div id="content"></div>
  <div id="sidebar"></div>
</div>

ফায়ারফক্সে পরিষ্কার বাগটি ঠিক করার অসংখ্য পদ্ধতি রয়েছে বলে মনে হচ্ছে:

  • <br clear="all"/>
  • overflow:auto
  • overflow:hidden

আমার পরিস্থিতিতে একমাত্র যেটি সঠিকভাবে কাজ করে বলে মনে হচ্ছে তা হল <br clear="all"/>সমাধান, যা সামান্য বিড়বিড়। overflow:autoআমাকে কদর্য স্ক্রোলবার দেয় এবং overflow:hiddenঅবশ্যই এর পার্শ্ব প্রতিক্রিয়া থাকতে হবে। এছাড়াও, আই 7 এর ভুল আচরণের কারণে স্পষ্টতই এই সমস্যায় ভুগতে হবে না, তবে আমার পরিস্থিতিতে এটি ফায়ারফক্সের মতোই ভুগছে।

বর্তমানে আমাদের কাছে উপলব্ধ কোন পদ্ধতিটি সবচেয়ে শক্তিশালী?


1
আমি ব্যবহার jqui.net/tips-tricks/css-clearfix এটা সাহায্য করে আমাকে ডট আড়াল :)
Val,

1
আইই 6 এবং আই 7 সম্পর্কে কী? তারা কখনই জিনিস পরিষ্কার করার সঠিক উপায় অনুসরণ করে না।
প্রবীণ কুমার পুরুষোথমণ

এখন আমরা একবছর অবধি , বড়-নাম ফ্রেমওয়ার্ক বোর্বান এবং ইনুইট সিএসএস-এ ব্যবহৃত হিসাবে এখানে বর্ণিত আধুনিক তিন-লাইনের ক্লিয়ারফিক্সের সঠিক উত্তরটি সংশোধন করার কি কোনও সম্ভাবনা আছে ? দেখুন নিচের আমার উত্তর
আয়নো

উত্তর:


1039

উত্পাদিত নকশার উপর নির্ভর করে, নীচের প্রতিটি ক্লিয়ারফিক্স সিএসএস সমাধানগুলির নিজস্ব সুবিধা রয়েছে।

ক্লিয়ারফিক্সে দরকারী অ্যাপ্লিকেশন রয়েছে তবে এটি হ্যাক হিসাবেও ব্যবহৃত হয়েছে। আপনি একটি ক্লিয়ারফিক্স ব্যবহার করার আগে সম্ভবত এই আধুনিক CSS সমাধানগুলি কার্যকর হতে পারে:


আধুনিক ক্লিয়ারফিক্স সলিউশন


সঙ্গে ধারক overflow: auto;

ভাসমান উপাদানগুলি সাফ করার সহজ উপায় হ'ল উপাদানটিতে থাকা স্টাইলটি ব্যবহার করা overflow: auto। এই সমাধানটি প্রতিটি আধুনিক ব্রাউজারে কাজ করে।

<div style="overflow: auto;">
  <img
    style="float: right;"
    src="path/to/floated-element.png"
    width="500"
    height="500"
  > 
  <p>Your content here…</p>
</div>

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

'ওভারফ্লো: লুকানো' ব্যবহার করাও একটি ক্লিয়ারফিক্স সমাধান, তবে এতে স্ক্রোলবার থাকবে না, তবে এটি ব্যবহার করে hiddenউপাদানগুলির বাইরে থাকা কোনও সামগ্রী ক্রপ করে দেবে।

দ্রষ্টব্য: ভাসমান উপাদানটি imgএই উদাহরণে একটি ট্যাগ, তবে কোনও HTML উপাদান হতে পারে।


ক্লিয়ারফিক্স রিলোড হয়েছে

সিএসএসমোজে থিয়েরি কোবলেন্টজ লিখেছেন: খুব সাম্প্রতিক ক্লিয়ারফিক্স পুনরায় লোড হয়েছে । তিনি উল্লেখ করেছিলেন যে ওল্ডআইইয়ের পক্ষে সমর্থন বাদ দিয়ে সমাধানটি একটি সিএসএসের বিবৃতিতে সহজ করা যায়। অতিরিক্তভাবে, display: block(পরিবর্তে display: table) ব্যবহারের ফলে ক্লিয়ারফিক্স সহ উপাদানগুলি ভাইবোন হলে মার্জিনগুলি সঠিকভাবে ধসে পড়তে দেয়।

.container::after {
  content: "";
  display: block;
  clear: both;
}

এটি ক্লিয়ারফিক্সের সবচেয়ে আধুনিক সংস্করণ।


পুরানো ক্লিয়ারফিক্স সলিউশন

আধুনিক ব্রাউজারগুলির জন্য নীচের সমাধানগুলি প্রয়োজনীয় নয় তবে এটি পুরানো ব্রাউজারগুলি লক্ষ্য করে কার্যকর হতে পারে।

নোট করুন যে এই সমাধানগুলি ব্রাউজার বাগগুলিতে নির্ভর করে এবং তাই উপরের সমাধানগুলির কোনওটি আপনার জন্য কাজ না করে কেবল তখনই ব্যবহার করা উচিত।

এগুলি প্রায় কালানুক্রমিক ক্রমে তালিকাভুক্ত করা হয়।


"বিট দ্যাট ক্লিয়ারফিক্স", আধুনিক ব্রাউজারগুলির জন্য একটি ক্লিয়ারফিক্স

এর থিয়েরি Koblentz ' সিএসএস মোজো নির্দিষ্ট করেছে যে যখন আধুনিক ব্রাউজারে লক্ষ্য করে, আমরা এখন ড্রপ করতে পারেন zoomএবং ::beforeসম্পত্তি / মূল্যবোধ ও কেবল ব্যবহার করুন:

.container::after {
    content: "";
    display: table;
    clear: both;
}

এই সমাধানটি IE 6/7 এর জন্য সমর্থন করে না ... উদ্দেশ্যে!

থিয়েরি এছাড়াও অফার করে: " সাবধানতার একটি শব্দ : আপনি যদি স্ক্র্যাচ থেকে কোনও নতুন প্রকল্প শুরু করেন, তবে এটির জন্য যান, তবে আপনার এখনকারটি দিয়ে এই কৌশলটি অদলবদল করবেন না, যদিও আপনি পুরানো সমর্থন করেন না, আপনার বিদ্যমান বিধিগুলি রোধ করে মার্সিন ভেঙে যাচ্ছে "


মাইক্রো ক্লিয়ারফিক্স

নিকোলাস গ্যালা’র মাইক্রো ক্লিয়ারফিক্স , সাম্প্রতিক ও বিশ্বব্যাপী গৃহীত ক্লিয়ারফিক্স সমাধান ।

পরিচিত সমর্থন: ফায়ারফক্স 3.5+, সাফারি 4+, ক্রোম, অপেরা 9+, আই 6+

.container::before, .container::after {
  content: "";
  display: table;
}
.container::after {
  clear: both;
}
.container {
  zoom: 1;
}

ওভারফ্লো সম্পত্তি

এই মৌলিক পদ্ধতিটি স্বাভাবিক ক্ষেত্রে পছন্দ করা হয়, যখন পজিশনের সামগ্রীটি ধারকটির সীমা ছাড়িয়ে দেখানো হয় না।

http://www.quirksmode.org/css/cleering.html - ব্যাখ্যা করে কীভাবে এই কৌশল সম্পর্কিত সাধারণ সমস্যাগুলি সমাধান করা যায়, যথা, ধারকটিতে সেট width: 100%করা।

.container {
  overflow: hidden;
  display: inline-block;
  display: block;
}

displayIE এর জন্য "hasLayout" সেট করার জন্য সম্পত্তিটি ব্যবহার করার পরিবর্তে , অন্যান্য বৈশিষ্ট্যগুলিকে একটি উপাদানটির জন্য "hasLayout" ট্রিগার করার জন্য ব্যবহার করা যেতে পারে ।

.container {
  overflow: hidden;
  zoom: 1;
  display: block;
}

overflowসম্পত্তি ব্যবহার করে ভাসমান সাফ করার আরেকটি উপায় হ'ল আন্ডারস্কোর হ্যাক ব্যবহার করা । আইআর আন্ডারস্কোরের সাথে পূর্বনির্ধারিত মানগুলি প্রয়োগ করবে, অন্য ব্রাউজারগুলি তা করবে না। zoomসম্পত্তি আরম্ভ করে hasLayout ইন্টারনেট দেখুন:

.container {
  overflow: hidden;
  _overflow: visible; /* for IE */
  _zoom: 1; /* for IE */
}

এটি যখন কাজ করে ... হ্যাকগুলি ব্যবহার করা আদর্শ নয়।


পিআইই: সহজ ক্লিয়ারিং পদ্ধতি

এই পুরানো "ইজি ক্লিয়ারিং" পদ্ধতিটি আরও জটিল সিএসএস ব্যয় করে স্থিত উপাদানগুলিকে ধারকটির গণ্ডির বাইরে ঝুলতে দেওয়ার সুযোগ দেয়।

এই সমাধানটি বেশ পুরানো, তবে আপনি পজিশটি হ'ল ইজ হিউরিওয়েজ ইজি ক্লিয়ারিং সম্পর্কে সমস্ত কিছু জানতে পারেন: http://www.positioniseverything.net/easycleering.html


"পরিষ্কার" সম্পত্তি ব্যবহার করে এলিমেন্ট

আপনি যখন কিছু দ্রুত একসাথে চড় মারছেন তখন এর দ্রুত এবং নোংরা সমাধান (কিছু ত্রুটি সহ):

<br style="clear: both" /> <!-- So dirty! -->

অপূর্ণতা

  • এটি প্রতিক্রিয়াশীল নয় এবং মিডিয়া প্রশ্নের উপর ভিত্তি করে লেআউট শৈলীগুলি পরিবর্তিত হলে পছন্দসই প্রভাব সরবরাহ করতে পারে না। খাঁটি সিএসএসে একটি সমাধান আরও আদর্শ।
  • এটি অগত্যা কোনও শব্দার্থক মান যুক্ত না করে এইচটিএমএল মার্কআপ যুক্ত করে adds
  • এটির এইচটিএমএলে CSS এবং শ্রেণি রেফারেন্সে একটি "ক্লিয়ারফিক্স" এর একক সমাধানের শ্রেণি রেফারেন্সের পরিবর্তে প্রতিটি উদাহরণের জন্য একটি ইনলাইন সংজ্ঞা এবং সমাধান প্রয়োজন।
  • এটি অন্যদের সাথে কাজ করা কোডটিকে কঠিন করে তোলে কারণ তাদের চারপাশে কাজ করার জন্য তাদের আরও হ্যাক লিখতে হতে পারে।
  • ভবিষ্যতে যখন আপনার অন্য / ক্লিয়ারফিক্স সমাধানটি ব্যবহার করতে হবে / প্রয়োজন হবে তখন আপনাকে আর ফিরে যেতে হবে না এবং <br style="clear: both" />মার্কআপের চারপাশে থাকা প্রতিটি ট্যাগ সরিয়ে ফেলতে হবে না ।

25
@ ডেভিড নদী: এটি: পদ্ধতিটি হ্যাক নয় কারণ এটি কোনও ব্রাউজারে পার্সিং ত্রুটিটি ব্যবহার করে না, এটি সমাধান হিসাবে সিএসএসের একটি বৈশিষ্ট্য ব্যবহার করে। অতিরিক্তভাবে: পরে আন্ডারস্কোর হ্যাকের বিপরীতে, ভবিষ্যতের ব্রাউজারগুলিতে সমর্থিত হবে। আদর্শভাবে এমন একটি CSS সম্পত্তি থাকবে যা এমন কোনও উপাদানের জন্য প্রয়োগ করা যেতে পারে যার ফলে এটিতে এর সমস্ত সামগ্রী থাকে contain
বিউ স্মিথ

7
ভাঙ্গনের জন্য ধন্যবাদ। আমি এটি খুঁজে পেয়েছি: "ইজি ক্লিয়ারিং" পদ্ধতির পরে "ওভারফ্লো: লুকানো" থেকে উন্নত, কারণ এটি CSS3 বক্সের ছায়া বা অবস্থানযুক্ত উপাদানগুলি ক্রপ করে না। কোডের অতিরিক্ত লাইনগুলি অবশ্যই এটির জন্য মূল্যবান।
অ্যানিয়ন

7
আমি উভয় সমাধানের পক্ষে পরামর্শ দিচ্ছি না, তবে এটির আপনার 'নোংরা' লেবেলিংয়ের সাথে আমি একমত নই। সিএসএসের বেশ কয়েকটি লাইনের তুলনায় এটি (এইচটিএমএল কোডের 1 টি স্বল্প লাইন), যা আপনার ব্রাউজারকেও লোড করতে হয়) 'যুক্ত ওজন / লোড ধীর' ​​যুক্তিটি নির্বোধ বলে মনে হয়। 'অর্থবোধক মান' যুক্তিটির জন্য, একটি ব্রায়ার স্পষ্ট: উভয়ই বোকা ফায়ারিং স্কোয়াড সিএসএসের গুচ্ছটি বের করার চেষ্টা করার চেয়ে বোঝা সহজ। স্পষ্টত: উভয়ই সংক্ষিপ্ত এবং সহজ, এবং 'পেশাদারিত্বের' তে ইমোর কোনও প্রভাব নেই।
ভিগারন্ড

16
জনপ্রিয় বিশ্বাসের বিপরীতে, overflow: hiddenবা overflow: autoফ্লোট সাফ করে না (এটিকে "ক্লিয়ারফিক্স" হিসাবে শ্রেণীবদ্ধ করা একটি মিসনোমার); পরিবর্তে এটির ফলে একটি উপাদান একটি নতুন ফর্ম্যাটিং প্রসঙ্গ তৈরি করে যার মধ্যে ভাসমানগুলি অন্তর্ভুক্ত থাকতে পারে। এটি কনটেইনারটি ভাসমানগুলির উচ্চতা পর্যন্ত প্রসারিত করে যাতে তা ধারণ করে। এখানে কোনও ছাড়পত্র জড়িত নেই - যা বলা হচ্ছে, আপনি এখনও আপনার লেআউটের উপর নির্ভর করে ধারকটির মধ্যে ভাসমান সাফ বা পরিষ্কার করতে বেছে নিতে পারেন।
বোল্টক্লক

3
আমরা আর আই 7 সমর্থন করা উচিত নয়। দয়া করে এখানে বর্ণিত তিন-লাইন পদ্ধতিতে এটি আপডেট করুন
আয়নো

70

আমরা কোন সমস্যাগুলি সমাধান করার চেষ্টা করছি?

ভাসমান জিনিসগুলি যখন দুটি গুরুত্বপূর্ণ বিবেচনা আছে:

  1. বংশোদ্ভূত ভাসমান সমন্বিত। এর অর্থ হল যে প্রশ্নে থাকা উপাদানটি সমস্ত ভাসমান বংশধরকে মোড়ানোর জন্য নিজেকে যথেষ্ট দীর্ঘ করে তোলে। (তারা বাইরে ঝুলছে না।)

    ভাসমান সামগ্রী এর ধারকের বাইরে ঝুলছে

  2. বাইরের ফ্লোট থেকে উত্তরাধিকারীদের অন্তরক করা। এর অর্থ হল যে কোনও উপাদানটির অভ্যন্তরের বংশধররা clear: bothএটি ব্যবহার করতে সক্ষম হওয়া উচিত এবং এটি উপাদানটির বাইরে ভাসমানদের সাথে ইন্টারঅ্যাক্ট না করে।

    <কোড> সাফ: উভয় </ em> ডিওএম-এর অন্য কোথাও ভাসমান সাথে আলাপচারিতা

বিন্যাসের প্রসঙ্গটি অবরুদ্ধ করুন

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

একটি ব্লক ফর্ম্যাটিং প্রসঙ্গ স্থাপনের বেশ কয়েকটি উপায় রয়েছে তবে আমার প্রস্তাবিত সমাধানটি display: inline-blockরয়েছে width: 100%। (অবশ্যই, আছে চলিত আদেশ সহকারে ব্যবহার করে width: 100%, তাই ব্যবহার box-sizing: border-boxবা করা padding, marginএবং borderএকটি ভিন্ন উপাদান।)

সবচেয়ে শক্তিশালী সমাধান

সম্ভবত ফ্লোটগুলির সর্বাধিক সাধারণ প্রয়োগ হ'ল দ্বি-কলাম লেআউট। (তিনটি কলামে বাড়ানো যেতে পারে))

প্রথমে মার্কআপ স্ট্রাকচার।

<div class="container">
  <div class="sidebar">
    sidebar<br/>sidebar<br/>sidebar
  </div>
  <div class="main">
    <div class="main-content">
      main content
      <span style="clear: both">
        main content that uses <code>clear: both</code>
      </span>
    </div>
  </div>
</div>

এবং এখন সিএসএস।

/* Should contain all floated and non-floated content, so it needs to
 * establish a new block formatting context without using overflow: hidden.
 */
.container {
  display: inline-block;
  width: 100%;
  zoom: 1; /* new block formatting context via hasLayout for IE 6/7 */
}

/* Fixed-width floated sidebar. */
.sidebar {
  float: left;
  width: 160px;
}

/* Needs to make space for the sidebar. */
.main {
  margin-left: 160px;
}

/* Establishes a new block formatting context to insulate descendants from
 * the floating sidebar. */
.main-content {
  display: inline-block;
  width: 100%;
  zoom: 1; /* new block formatting context via hasLayout for IE 6/7 */
}

এটি নিজে চেষ্টা করো

কোডটি নিয়ে চারদিকে খেলতে জেএস বিনে যান এবং দেখুন কীভাবে সমাধানটি স্থলভাগ থেকে তৈরি করা হয়েছে।

Ditionতিহ্যবাহী ক্লিয়ারফিক্স পদ্ধতিগুলি ক্ষতিকারক হিসাবে বিবেচিত

Traditionalতিহ্যগত ক্লিয়ারফিক্স সমাধানগুলির সমস্যাটি হ'ল তারা এবং অন্য সবার জন্য একই লক্ষ্য অর্জনের জন্য দুটি পৃথক রেন্ডারিং ধারণা ব্যবহার করে। আইই তে তারা একটি নতুন ব্লক ফর্ম্যাটিং প্রসঙ্গটি স্থাপন করতে হ্যাশলআউট ব্যবহার করে তবে অন্য সবার জন্য তারা উত্পন্ন বাক্সগুলি ( :after) ব্যবহার করে clear: bothযা কোনও নতুন ব্লক বিন্যাস প্রসঙ্গটি প্রতিষ্ঠিত করে না। এর অর্থ সমস্ত পরিস্থিতিতে জিনিসগুলি একই রকম আচরণ করবে না। কেন এই খারাপ একটি ব্যাখ্যা জন্য, দেখুন আপনি যা জানেন সবকিছু সম্পর্কে Clearfix ভুল হয়


"ব্যবহারের সাথে সাধারণ সতর্কতা" কী কী width: 100%? এছাড়াও, আপনি কি zoom: 1§2 এর ¶1 এ ব্যবহার করার পরামর্শ দিচ্ছেন ?
বাউমার

আকর্ষণীয় উত্তর, কিন্তু কি সম্পর্কে overflow: hidden, কী রেন্ডারিং ধারণাটি চালিত করে? এবং এটি কিভাবে আলাদা হতে পারে hasLayout?
বাউমার

সত্য, তবে যদি কেউ ব্যবহার থেকে বিরত থাকে position: absoluteতবে তা ঠিক আছে এবং একই রেন্ডারিং ধারণার অংশ হবে?
বাউমর

আমি দেখি. ধারণার রেন্ডারিং দ্বারা আমি বোঝাতে চাইছি যদি overflow: hiddenএমন একটি জিনিস প্রয়োগ করে যা লাউট এর চেয়ে পৃথক হয়?
বাউমর

2
স্ট্যাকওভারফ্লো . com/ জিজ্ঞাসা hasLayout/ 1794350/ কি- এটি- হাস্যআউট সম্পর্কে আরও পড়ুন । আমি এটিকে একটি নতুন ব্লক বিন্যাস প্রসঙ্গে স্থাপনের সমার্থক হিসাবে ভাবি think যে উপাদানগুলি এটি করে সেগুলি তাদের সমস্ত বংশধর উপাদানগুলির বিন্যাসের জন্য মূলত দায়ী। এর একটি ফল হ'ল যে উপাদানগুলি একটি নতুন ব্লক বিন্যাস প্রসঙ্গে স্থাপন করে তাদের মধ্যে ভাসমান বংশধর থাকে এবং উপাদানটির বাইরে ভাসমান থাকে যা clear: left|right|bothউপাদানগুলির অভ্যন্তরের সাথে যোগাযোগ করে না । (এটি উপরের উত্তরে রয়েছে))
ক্রিস কালো

54

নতুন মান, যেমন দ্বারা ব্যবহৃত Inuit.css এবং বোরবন - দুই খুব ব্যাপকভাবে ব্যবহার করা হয় এবং ভাল রক্ষণাবেক্ষণ সিএসএস / Sass অবকাঠামো:

.btcf:after {
    content:"";
    display:block;
    clear:both;
}

মন্তব্য

মনে রাখবেন যে ক্লিয়ারফিক্সগুলি মূলত ফ্লেক্সবক্স লেআউটগুলি আরও বেশি স্মার্ট পদ্ধতিতে কী সরবরাহ করতে পারে তার জন্য একটি হ্যাক । সিএসএস ফ্লোটগুলি মূলত চারদিকে প্রবাহিত করার জন্য ইনলাইন সামগ্রী হিসাবে তৈরি করা হয়েছিল - যেমন একটি দীর্ঘ পাঠ্য নিবন্ধে চিত্রগুলি - এবং গ্রিড লেআউট এবং এর মতো নয়। যদি আপনার টার্গেট ব্রাউজারগুলি ফ্লেক্সবক্সকে সমর্থন করে তবে তা সন্ধান করার মতো।

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

এই ক্লিয়ারফিক্সটি জুলাই ২০১২ সালে থিয়েরি কোবলেন্টজ ঘোষণা করেছিলেন এবং ব্যাখ্যা করেছিলেন It এটি নিকোলাস গ্যালাগারের ২০১১ সালের মাইক্রো ক্লিয়ারফিক্স থেকে অপ্রয়োজনীয় ওজন হ্রাস করে । প্রক্রিয়াটিতে এটি আপনার নিজের ব্যবহারের জন্য ছদ্ম-উপাদানকে মুক্ত করে। এটি ব্যবহার আপডেট করা হয়েছে display: blockবদলে display: table(আবার, থিয়েরি Koblentz কৃতিত্ব)।


3
আমি আপনার সাথে সম্পূর্ণরূপে একমত হওয়ায় আপনার উত্তর এতে আরও বেশি ভোট পাবে আশা করি। আবার, এটি ২০১৩ এবং আমি সত্যই বিশ্বাস করি এটিই লোকেদের সমাধান করা উচিত।
রাফেলব্যাটেন

2
একমত। theie7countdown.com আপনার নিজস্ব বিশ্লেষণ পরীক্ষা করুন এবং আশা করি দেখুন আই 7 আপনার সময়টির পক্ষে উপযুক্ত নয়।
জাস্টিন 21

1
@ জাস্টিন সম্মত; আপনার ব্যক্তিগত বিশ্লেষণগুলি এটিকে দেবে। আমি মনে করি না যে কাউন্টডাউন সাইটটি কিছু সময়ের মধ্যে আপডেট করা হয়েছে, যদিও - ক্যানিয়াসের পরিসংখ্যান ব্যবহার করা সবচেয়ে ভাল যা আই 7 কে বিশ্বব্যাপী 0.39% এ রেখেছিল
আয়নো

1
আশা করি, ক্লিয়ারফিক্সের মতো হ্যাকগুলি শীঘ্রই বিন্যাসের জন্য ফ্লোটসের পরিবর্তে ফ্লেক্সবক্স ব্যবহারের মাধ্যমে অপ্রয়োজনীয় রেন্ডার হবে।
আয়নো

আপনি যতটা চান আই 7 সমর্থন করার বিষয়ে আপত্তি জানাতে পারেন, তবে যদি এই ব্যবহারকারীদের (বিভিন্ন কারণে - সাধারণত অর্থ) সমর্থন করার ব্যবসায়ের শেষ প্রান্ত থেকে কোনও প্রয়োজনীয়তা থাকে তবে আপনি ইস্যুতে কেমন অনুভব করবেন তা বিবেচনা না করেই আপনি এটি করতে যাচ্ছেন
ক্রিস সেলবেক

27

আমি নিম্নলিখিতটি ব্যবহার করার পরামর্শ দিচ্ছি, যা http://html5boilerplate.com/ থেকে নেওয়া হয়েছে

/* >> The Magnificent CLEARFIX << */
.clearfix:after { 
  content: "."; 
  display: block; 
  height: 0; 
  clear: both; 
  visibility: hidden; 
}
.clearfix { 
  display: inline-block;  
}
* html .clearfix {  
  height: 1%;  
} /* Hides from IE-mac \*/
.clearfix {  
  display: block;  
}

8
আই-ম্যাক কে এখন মনে আছে? সমস্যাগুলির কারণে কেন এত জটিল জিনিস তৈরি হয় যা আরও প্রাসঙ্গিক নয়?
ইলিয়া স্ট্রেলটসিন

23

অতিরিক্ত চিহ্ন প্রবাহ ছাড়াই ভাসমান সাফ করতে ওভারফ্লো প্রপার্টি ব্যবহার করা যেতে পারে:

.container { overflow: hidden; }

এটি আইই except ব্যতীত সমস্ত ব্রাউজারের জন্য কাজ করে, যেখানে আপনাকে যা করতে হবে তা হ্যাশ লেআউট সক্ষম করে (জুম আমার পছন্দের পদ্ধতি হ'ল):

.container { zoom: 1; }

http://www.quirksmode.org/css/clearing.html


3
ওভারফ্লো: লুকানো PS3 ব্রাউজারে কাজ করে না। বেশিরভাগ লোকের কাজ করার দরকার নেই তা নয়, তবে PS3- এ আমার সাইটটি ফুটিয়ে তোলা সবচেয়ে উল্লেখযোগ্য বিষয় যা আমরা ব্যবসায়িক কারণে টার্গেট করার চেষ্টা করছি। বিতৃষ্ণা।
gtd

1
আপনি যদি ধারকটির বাইরে কিছু নির্দিষ্ট সামগ্রী আটকে রাখতে চান তবে এটি একটি সমস্যা।
সাইমন পূর্ব

ওভারফ্লো:
লুকানোতে

9
overflow:hiddenক্লিপিং কন্টেন্ট এর প্রভাব আছে ; এর
ধারকটি

ওভারফ্লো: অটোও একটি ব্লক ফর্ম্যাটিং প্রসঙ্গটি ট্রিগার করবে এবং এটি সামগ্রীটি ক্লিপ করবে না।
হ্যারি রবিনস

17

আমি অফিসিয়াল ক্লিয়ারিক্স-পদ্ধতিতে একটি বাগ পেয়েছি: ডটের একটি ফন্ট-আকার নেই। এবং আপনি যদি আপনার height = 0ডিওএম-ট্রি-তে প্রথম এলিমেন্টটি সেট করেন এবং ক্লিয়ার "ক্লিয়ারফিক্স" থাকে আপনার 12px এর পৃষ্ঠার নীচে একটি মার্জিন থাকবে :)

আপনাকে এটিকে এটি ঠিক করতে হবে:

/* float clearing for everyone else */
.clearfix:after{
  clear: both;
  content: ".";
  display: block;
  height: 0;
  visibility: hidden;
  font-size: 0;
}

এটি এখন ওয়াইএএমএল-লেআউটের অংশ ... এটি একবার দেখুন - এটি খুব আকর্ষণীয়! http://www.yaml.de/en/home.html


15

এটি বেশ পরিপাটি সমাধান:

/* For modern browsers */
.cf:before,
.cf:after {
    content:"";
    display:table;
}

.cf:after {
    clear:both;
}

/* For IE 6/7 (trigger hasLayout) */
.cf {
    zoom:1;
}

এটি ফায়ারফক্স 3.5+, সাফারি 4+, ক্রোম, অপেরা 9+, আই 6+ এ কাজ করার জন্য পরিচিত

অন্তর্ভুক্ত সহ: নির্বাচকের আগে ফ্লোটগুলি সাফ করার প্রয়োজন হয় না তবে এটি শীর্ষ ব্রাজিনগুলিকে আধুনিক ব্রাউজারগুলিতে পতন থেকে বাধা দেয়। এটি নিশ্চিত করে যে যখন জুম: 1 প্রয়োগ করা হয় তখন IE 6/7 এর সাথে ভিজ্যুয়াল সামঞ্জস্যতা রয়েছে।

Http://nicolasgallagher.com/micro-clearfix-hack/ থেকে


1
হ্যাঁ, ২০১১ সালের মাঝামাঝি হিসাবে এটি আমার প্রিয় সমাধান। এটি আপনাকে যদি প্রয়োজন হয় তবে আবশ্যক বাক্সের বাইরে বস্তুগুলি স্থাপন করতে দেয় (এড়ানো overflow: hidden)।
সাইমন পূর্ব

10

বুটস্ট্র্যাপ থেকে ক্লিয়ারফিক্স:

.clearfix {
  *zoom: 1;
}

.clearfix:before,
.clearfix:after {
  display: table;
  line-height: 0;
  content: "";
}

.clearfix:after {
  clear: both;
}

এটি বুটস্ট্র্যাপের কোন সংস্করণ?
এরিক

8

আমি কেবল ব্যবহার:

.clear:after{
  clear: both;
  content: "";
  display: block;
}

IE8 + :) এর সাথে সেরা এবং সামঞ্জস্যপূর্ণ কাজ করে


আইএস 7 তে কাজ করবে না কারণ এতে সিএসএস সিউডোলেমেন্টগুলির কোনও সমর্থন নেই।
সুপারলুমিনারি

4
... এজন্য তিনি "আই 8 + এর সাথে সামঞ্জস্যপূর্ণ বলেছিলেন।" বেশিরভাগ ওয়েবসাইটগুলিকে আর আই 7 সমর্থন করার দরকার নেই, এর ব্যবহার বিশ্বব্যাপী 1% এরও কম। theie7countdown.com
জাস্টিন

8

বিপুল পরিমাণ জবাব দেওয়া হলেও আমি পোস্ট দিচ্ছি না। তবে, এই পদ্ধতিটি কাউকে সহায়তা করতে পারে, যেমন এটি আমাকে সহায়তা করেছিল।

যখনই সম্ভব ভাসমান থেকে পথ রক্ষা করুন

এটি উল্লেখ করার মতো, আমি ইবোলার মতো ভাসমান এড়িয়ে চলি। এর অনেকগুলি কারণ রয়েছে এবং আমি একা নই; ক্লিয়ারফিক্স কী তা সম্পর্কে রিকুডো উত্তরটি পড়ুন এবং আপনি কী বোঝাতে চাইবেন তা আপনি দেখতে পাবেন। তাঁর নিজের ভাষায়:...the use of floated elements for layout is getting more and more discouraged with the use of better alternatives...

ভাসমান ব্যতীত অন্যান্য ভাল (এবং কখনও কখনও ভাল) বিকল্প রয়েছে। প্রযুক্তির অগ্রগতি এবং উন্নতি হিসাবে, ফ্লেক্সবক্স (এবং অন্যান্য পদ্ধতি) ব্যাপকভাবে গৃহীত হতে চলেছে এবং ভাসমানগুলি কেবল একটি খারাপ স্মৃতি হয়ে উঠবে। হয়ত সিএসএস 4?


ভাসা দুর্ব্যবহার এবং ব্যর্থ সাফ

প্রথমে, কখনও কখনও, আপনি ভাবতে পারেন যে আপনার জীবনকালকে খোঁচা দেওয়া এবং আপনার এইচটিএমএল প্রবাহ ডুবে যাওয়া অবধি আপনি ভাসা থেকে নিরাপদ are

নীচে কোডপেন http://codepen.io/omarjueda/pen/jEXBya এ , <div classs="clear"></div>(বা অন্যান্য উপাদান) দিয়ে একটি ফ্লোট সাফ করার অভ্যাসটি সাধারণ তবে ভ্রান্ত এবং বিরোধী-শব্দার্থক।

<div class="floated">1st</div>
<div class="floated">2nd</div>
<div class="floated">3nd</div>
<div classs="clear"></div> <!-- Acts as a wall -->
<section>Below</section>

সিএসএস

div {
    border: 1px solid #f00;
    width: 200px;
    height: 100px;
}

div.floated {
    float: left;
}

.clear {
    clear: both;
}
section {
    border: 1px solid #f0f;
}

যাইহোক , আপনি যখন ভেবেছিলেন আপনার ভাসাটি পাল হিসাবে উপযুক্ত ... বুম! পর্দার আকার ছোট এবং ছোট হওয়ার সাথে সাথে আপনি নীচের গ্রাফিকের মতো অদ্ভুত আচরণগুলি দেখতে পাবেন (একই http://codepen.io/omarjueda/pen/jEXBya ):

ফ্লোট বাগের নমুনা 1

কেন আপনার যত্ন করা উচিত? আমি সঠিক চিত্রের বিষয়ে নিশ্চিত নই তবে ব্যবহৃত ডিভাইসগুলির প্রায় 80% (বা আরও বেশি) ছোট স্ক্রিনযুক্ত মোবাইল ডিভাইস। ডেস্কটপ কম্পিউটার / ল্যাপটপ আর রাজা হয় না।


এটা সেখানে শেষ হয় না

এটি কেবল ভাসমান সমস্যা নয়। অনেক আছে, তবে এই উদাহরণে কেউ কেউ বলতে পারেন all you have to do is to place your floats in a container। তবে আপনি কোডেন এবং গ্রাফিকের মধ্যে যেমন দেখতে পাচ্ছেন, তেমনটি হয় না। এটি দৃশ্যত খারাপগুলি তৈরি করেছে:

এইচটিএমএল

<div id="container" class="">
  <div class="floated">1st</div>
  <div class="floated">2nd</div>
  <div class="floated">3nd</div>
</div> <!-- /#conteiner -->
<div classs="clear"></div> <!-- Acts as a wall -->
<section>Below</section>

সিএসএস

#container {
  min-height: 100px; /* To prevent it from collapsing */
  border: 1px solid #0f0;
}
.floated {
    float: left;
    border: 1px solid #f00;
    width: 200px;
    height: 100px;
}

.clear {
    clear: both;
}
section {
    border: 1px solid #f0f;
}

ফলাফল হিসাবে?

এটা একই! ফ্লোট বাগের নমুনা 2

অন্তত আপনি জানেন, আপনি একটি সিএসএস পার্টি শুরু করবেন, সমস্ত ধরণের নির্বাচক এবং বৈশিষ্ট্যগুলিকে পার্টিতে আমন্ত্রণ জানিয়ে; আপনি যেটি শুরু করেছিলেন তার থেকে আপনার সিএসএসের আরও বড় গণ্ডগোল তৈরি করছে। শুধু আপনার ভাসা ঠিক করতে।


সিএসএস ক্লিয়ারফিক্স উদ্ধার

সিএসএসের এই সাধারণ এবং খুব অভিযোজ্য টুকরোটি একটি সৌন্দর্য এবং একটি "ত্রাণকর্তা":

.clearfix:before, .clearfix:after { 
    content: "";
    display: table;
    clear: both;
    zoom: 1; /* ie 6/7 */
}

এটাই! এটি শব্দার্থবিজ্ঞান না ভেঙে সত্যিই কাজ করে এবং আমি কী এটি উল্লেখ করে কাজ করি? :

একই নমুনা থেকে ... এইচটিএমএল

<div class="clearfix">
    <div class="floated">1st</div>
    <div class="floated">2nd</div>
    <div class="floated">3nd</div>
</div>
<section>Below</section>

সিএসএস

div.floated {
    float: left;
    border: 1px solid #f00;
    width: 200px;
    height: 100px;
}
section {
        border: 4px solid #00f;
}


.clearfix:before, .clearfix:after { 
    content: "";
    display: table;
    clear: both;
    zoom: 1; /* ie 6/7 */
}

এখন আমাদের আর প্রয়োজন নেই <div classs="clear"></div> <!-- Acts as a wall -->এবং শব্দার্থ পুলিশকে খুশি রাখতে হবে। এটিই একমাত্র সুবিধা নয়। এই ক্লিয়ারফিক্সটি কোনও @mediaসর্বাধিক আকারে ব্যবহার না করে কোনও পর্দার আকারের জন্য প্রতিক্রিয়াশীল । অন্য কথায়, এটি আপনার ভাসমান ধারকটিকে বজায় রাখবে এবং বন্যা প্রতিরোধ করবে। শেষ অবধি, এটি পুরানো ব্রাউজারগুলির জন্য একটি ছোট কারাতে চ্যাপ = সমস্ত সমর্থন সরবরাহ করে

এখানে আবার ক্লিয়ারফিক্স

.clearfix:before, .clearfix:after { 
    content: "";
    display: table;
    clear: both;
    zoom: 1; /* ie 6/7 */
}

2
clearশ্রেণীর নাম সহ উপাদানটি কাজ না করার কারণটি হল আপনার বৈশিষ্ট্যটি classভুল। আপনি যা লিখেছেন তা হ'ল classsএকটি অতিরিক্ত s
চেস্টনট

ত্রুটি সংশোধন করেও আপনার উদাহরণটি আপনার দাবিটি প্রদর্শন করে না।
মনিকা পুনরায় ইনস্টল করুন - notmaynard

7

আমি সর্বদা আমার গ্রিডের প্রধান বিভাগগুলি ভাসিয়ে clear: both;রাখি এবং পাদলেখ প্রয়োগ করি । এর জন্য অতিরিক্ত ডিভি বা ক্লাসের প্রয়োজন নেই।


নীল, আমি অনুমান করি যে সমস্যাটি যখন আপনি উভয় কলাম (বা একটি পটভূমির রঙ / চিত্র) এর চারপাশে একটি সীমানা চান, আপনার একটি র‌্যাপার বিভাগের প্রয়োজন যা হ্যাকিং সহ প্রয়োজন।
সাইমন ইস্ট

5

সত্যি বলতে; সমস্ত সমাধান একটি রেন্ডারিং বাগ ঠিক করার জন্য একটি হ্যাক বলে মনে হচ্ছে ... আমি কি ভুল করছি?

আমি <br clear="all" />সবচেয়ে সহজ, সহজতম বলে মনে করেছি। যে class="clearfix"সব জায়গাতেই বহিরাগত বিপণনের উপাদানগুলির প্রতি আপত্তি আছে তার সংবেদনশীলতাগুলিকে সর্বত্র দেখানো সম্ভব, তাই না? আপনি সমস্যাটি অন্য একটি ক্যানভাসে আঁকছেন।

আমি display: hiddenসমাধানটিও ব্যবহার করি , যা দুর্দান্ত এবং এতে কোনও অতিরিক্ত শ্রেণীর ঘোষণাপত্র বা এইচটিএমএল মার্কআপ প্রয়োজন হয় না ... তবে কখনও কখনও আপনার পাত্রে উপচে পড়ার জন্য উপাদানগুলির প্রয়োজন হয়, উদাহরণস্বরূপ। সুন্দর ফিতা এবং sashes


5
overflow: hiddenআমি মনে করি আপনি বোঝাতে চেয়েছেন
আজবিওয়ান

কেউ কেউ ক্লাস নামে পরিচিত শ্রেণি ব্যবহারের পরামর্শ দেয় যা জিনিসগুলিকে আরও শব্দার্থক করে তোলে। আমি কেন স্পষ্টভাবে নিশ্চিত নই যে এটি কেন ধরা
দামন

আমি পুরোপুরি এই অবস্থান প্রত্যাহার। আমি এখন ক্লিয়ারফিক্স ব্যবহার করি। তবে খুব সাধারণ পাত্রে, শ্রেণিবদ্ধ বৈশিষ্ট্য দূষণ কমাতে আমি CSS এ 'বেক' করি। এছাড়াও, এটিকে 'গোষ্ঠী' নামকরণ করা দুর্দান্ত বলে মনে হচ্ছে। পাশাপাশি
লেখার


4

আমি এই সমস্ত সমাধানগুলির চেষ্টা করেছি, <html>আমি নীচের কোডটি ব্যবহার করার সময় স্বয়ংক্রিয়ভাবে উপাদানের সাথে একটি বড় মার্জিন যুক্ত হবে :

.clearfix:after {   
    visibility: hidden;   
    display: block;   
    content: ".";   
    clear: both;   
    height: 0;
}

শেষ পর্যন্ত, আমি font-size: 0;উপরের সিএসএসে যোগ করে মার্জিন সমস্যা সমাধান করেছি ।


2
কারণ আপনি একটি লাইন যুক্ত করছেন . , কেবল ব্যবহার করুনcontent: ""
চল্লিশ

4

SASS এর সাথে ক্লিয়ারফিক্সটি হ'ল:

@mixin clearfix {
    &:before, &:after {
        content: '';
        display: table;
    }
    &:after {
        clear: both;
    }
    *zoom: 1;
}

এবং এটি ব্যবহার করা হয়:

.container {
    @include clearfix;
}

আপনি যদি নতুন ক্লিয়ারফিক্স চান:

@mixin newclearfix {
    &:after {
        content:"";
        display:table;
        clear:both;
    }
}

4

কম ( http://lesscss.org/ ) দিয়ে, কেউ একটি সহজেই ক্লিয়ারফিক্স সহায়ক তৈরি করতে পারে:

.clearfix() {
  zoom: 1;
  &:before { 
    content: ''; 
    display: block; 
  }
  &:after { 
    content: ''; 
    display: table; 
    clear: both; 
  }
}

এবং তারপরে সমস্যাযুক্ত পাত্রে এটি ব্যবহার করুন, উদাহরণস্বরূপ:

<!-- HTML -->
<div id="container">
  <div id="content"></div>
  <div id="sidebar"></div>
</div>
/* LESS */
div#container {
  .clearfix();
}

4

ব্যবহার overflow:hidden/auto এবং উচ্চতা যদি ভাসমান ধারক একটি পিতা বা মাতা উপাদান আছে IE6 চলা হবে জন্য।

নয়তো এইচটিএমএলকে ভাসমান সাফ করার জন্য নীচে বর্ণিত # টির মধ্যে একটিও সর্বশেষতম কাজ করতে পারে।

#test {
  overflow:hidden; // or auto;
  _height:1%; forces hasLayout in IE6
}

<div id="test">
  <div style="floatLeft"></div>
  <div style="random"></div>
</div>

যখন এটি আই 6 এর সাথে কাজ করতে অস্বীকৃতি জানায়, কেবলমাত্র ফ্ল্যাট সাফ করার জন্য পিতামাতাকে ভাসাবেন।

#test {
  float: left; // using float to clear float
  width: 99%;
}

সত্যিকারের অন্য কোনও ধরণের ক্লিয়ারিংয়ের দরকার নেই। সম্ভবত এটি আমার HTML লিখার উপায়।


1
আমি কোনও উপাদান পরিষ্কার না করে আপনার এইচটিএমএল লেখার পদ্ধতিটি অধ্যয়ন করতে চাই। আপনি কিছু লিঙ্ক পোস্ট করতে পারেন?
স্টারেক্স

4

একটি নতুন ডিসপ্লে মান এক লাইনে কাজ মনে হচ্ছে।

display: flow-root;

ডাব্লু 3 স্পেস থেকে: "উপাদানটি একটি ব্লক ধারক বাক্স তৈরি করে এবং প্রবাহের বিন্যাসটি ব্যবহার করে এর বিষয়বস্তুগুলি দেয় It

তথ্য: https://www.w3.org/TR/css-display-3/#valdef-display-flow-root https://www.chromestatus.com/feature/5769454877147136

Above উপরের লিঙ্কে প্রদর্শিত হিসাবে, সমর্থন বর্তমানে সীমাবদ্ধ তাই নীচের মত ফ্যালব্যাক সমর্থন ব্যবহার হতে পারে: https://github.com/fliptheweb/postcss-flow-root


3

আমিও ভাসতে পারি #content, এইভাবে উভয় কলামেই ভাসমান। এছাড়াও এটি আপনাকে অভ্যন্তরের উপাদানগুলি সাফ করার অনুমতি দেবে#content পাশের বারটি সাফ না করেই ।

মোড়কের সাথে একই জিনিস, দুটি কলামটি মোড়ানোর জন্য আপনাকে এটিকে একটি ব্লক ফর্ম্যাটিং প্রসঙ্গে তৈরি করতে হবে।

এই নিবন্ধটিতে আপনি ব্যবহার করতে পারেন এমন কয়েকটি ট্রিগার উল্লেখ করেছেন: বিন্যাস বিন্যাস প্রসঙ্গে


3

একটি ক্লিয়ারফিক্স একটি উপাদান নিজেই পরে স্বয়ংক্রিয়ভাবে সাফ করার একটি উপায়, যাতে আপনাকে অতিরিক্ত মার্কআপ যুক্ত করার প্রয়োজন হয় না।

.clearfix:after {
   content: " "; /* Older browser do not support empty content */
   visibility: hidden;
   display: block;
   height: 0;
   clear: both;
}
.cleaner {
  clear: both;
}

সাধারণত আপনাকে নিম্নলিখিত হিসাবে কিছু করতে হবে:

<div style="float: left;">Sidebar</div>
<div class="cleaner"></div> <!-- Clear the float -->

ক্লিয়ারফিক্স সহ, আপনার কেবল প্রয়োজন

<div style="float: left;" class="clearfix">Sidebar</div>
<!-- No Clearing div! -->

2

১ টি লাইন এইচটিএমএল কী কাজ করে তা করতে কেন কেবল সিএসএস হ্যাক ব্যবহারের চেষ্টা করছেন। এবং কেন লাইনে ফিরে আসার জন্য শব্দার্থক এইচটিএমএল টিউ পুট ব্রেক ব্যবহার করবেন না?

Fo me ব্যবহার করা সত্যই আরও ভাল:

<br style="clear:both" />

এবং আপনি যদি এইচটিএমএলটিতে কোনও স্টাইল না চান তবে আপনাকে কেবল বিরতির জন্য ক্লাস ব্যবহার করতে হবে এবং .clear { clear:both; }আপনার সিএসএসে রাখতে হবে।

এর সুবিধা:

  • লাইনে ফিরে আসার জন্য এইচটিএমএল-এর অর্থগত ব্যবহার
  • কোনও সিএসএস লোড না হলে এটি কাজ করবে
  • অতিরিক্ত সিএসএস কোড এবং হ্যাকের দরকার নেই
  • সিএসএস দিয়ে বিআর অনুকরণ করার দরকার নেই, এটি ইতিমধ্যে এইচটিএমএলে উপস্থিত রয়েছে

2

ধরে নিচ্ছি আপনি এই এইচটিএমএল কাঠামোটি ব্যবহার করছেন:

<div id="container">
  <div id="content">
  </div>
  <div id="sidebar">
  </div>
</div>

আমি যে সিএসএস ব্যবহার করব তা এখানে:

div#container {
    overflow: hidden;    /* makes element contain floated child elements */
}

div#content, div#sidebar {
    float: left;
    display: inline;    /* preemptively fixes IE6 dobule-margin bug */
}

আমি এই সেটটি সর্বদা ব্যবহার করি এবং এটি আইআই 6 তেও আমার পক্ষে ভাল কাজ করে।


2

অন্যান্য ক্লিয়ারফিক্সগুলির বিপরীতে, এখানে কোনও ধারক ছাড়াই একটি উন্মুক্ত রয়েছে

অন্যান্য ক্লিয়ারফিক্সগুলির জন্য হয় ভাসমান উপাদানটি ভাল চিহ্নিত চিহ্নিত ধারকটিতে থাকতে হবে বা অতিরিক্ত, শব্দার্থিকভাবে খালি প্রয়োজন <div>। বিপরীতভাবে, সামগ্রী এবং মার্কআপের স্পষ্ট বিভাজনের জন্য এই সমস্যার জন্য কঠোর CSS সমাধান প্রয়োজন requires

একমাত্র সত্য যে একজনকে একটি ফ্লোটের শেষটি চিহ্নিত করতে হবে, অচিহ্নহীন সিএসএস টাইপসেটটিংয়ের জন্য অনুমতি দেয় না ।

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

এই কারণেই আমি নতুন শিরোনামগুলির সাথে নিম্নলিখিত ক্লিয়ারফিক্সটি ব্যবহার করছি:

h1 {
    clear: both;
    display: inline-block;
    width: 100%;
}

সমস্যাটি সমাধান করার জন্য এই সমাধানটি আমার ওয়েবসাইটে ব্যাপকভাবে ব্যবহৃত হয় : ভাসমান সংক্ষিপ্তের পাশের পাঠ্যটি সংক্ষিপ্ত এবং পরবর্তী ক্লিয়ারিং অবজেক্টের শীর্ষ-মার্জিনকে সম্মান করা হয় না।

সাইট থেকে স্বয়ংক্রিয়ভাবে পিডিএফ তৈরি করার সময় এটি কোনও ম্যানুয়াল হস্তক্ষেপ বাধা দেয় । এখানে একটি উদাহরণ পৃষ্ঠা


2

আমি সবসময় মাইক্রো ক্লিয়ারফিক্স ব্যবহার করি :

.cf:before,
.cf:after {
    content: " ";
    display: table;
}

.cf:after {
    clear: both;
}

/**
 * For IE 6/7 only
 */
.cf {
    *zoom: 1;
}

ইন ক্যাসকেড ফ্রেমওয়ার্ক আমি এমনকি ব্লক স্তর উপাদানে ডিফল্টরূপে এটি প্রযোজ্য। আইএমও, এটি ব্লক স্তরের উপাদানগুলিতে ডিফল্টরূপে প্রয়োগ করা ব্লক স্তরের উপাদানগুলিকে তাদের ট্রেটিটোনাল আচরণের চেয়ে স্বজ্ঞাত আচরণ দেয়। ক্যাসকেড ফ্রেমওয়ার্কে (যা আই 6-8 পাশাপাশি আধুনিক ব্রাউজারগুলিকে সমর্থন করে) পুরানো ব্রাউজারগুলির জন্য সমর্থন যুক্ত করা আমার পক্ষে আরও সহজ করে তুলেছিল।


0

আপনি এটি আপনার সিএসএসেও রাখতে পারেন:

.cb:after{
  visibility: hidden;
  display: block;
  content: ".";
  clear: both;
  height: 0;
}

*:first-child+html .cb{zoom: 1} /* for IE7 */

এবং আপনার পিতামাতার বিভাগে "সিবি" শ্রেণি যুক্ত করুন:

<div id="container" class="cb">

আপনার মূল কোডটিতে আপনাকে আর কিছু যুক্ত করতে হবে না ...



-2

আপনি কি এই চেষ্টা করেছেন:

<div style="clear:both;"/>

এই পদ্ধতিটি নিয়ে আমার কোনও সমস্যা হয়নি।


2
আমি মনে করি বিন্দুটি হ'ল আমরা এই সমাধান সহ অতিরিক্ত মার্কআপ এবং ইনলাইন উভয় স্টাইলই এড়াতে চাইছি। এটি নির্ভর করে যা মনে করে আপনার সাথে সবচেয়ে সুখী আপোষ করেছেন
স্যাম মারে-সাটন

1
এই পদ্ধতির সমস্যাটি হ'ল আইই ব্রাউজারগুলিতে ডিভের উচ্চতা থাকে, তাই আপনার স্পেসিং বন্ধ থাকবে। এজন্য সিএসএস পদ্ধতিগুলি উচ্চতা এবং ফন্ট-আকার নির্ধারণ করে।
zznq

যথাযথভাবে এক্সএইচটিএমএল অনুগত হওয়ার জন্য আপনাকে <ডি স্টাইল = "ক্লিয়ার: উভয়"> </div> বলতে হবে closing এটি না করার সময় আমার কাছে jQuery সমস্যা ছিল
সাইমন_উইভার

1
হাস্যকরভাবে, "অনুমিত হওয়া উচিত-স্ব-বদ্ধ" <div/> হ'ল এক্স (এইচটি) এমএল অনুগত, তবে এইচটিএমএল সামঞ্জস্যপূর্ণ নয় , সুতরাং text/htmlসমস্ত ব্রাউজার হিসাবে পরিবেশন করা নথির জন্য এটিকে ক্লোজড ট্যাগ হিসাবে বিবেচনা করবে। দুর্ভাগ্যক্রমে, ডক্টাইপ নির্বিশেষেtext/html নথির জন্য স্ব-ক্লোজিং ট্যাগগুলির মতো কোনও জিনিস নেই ।
ইলিয়া স্ট্রেলটসিন

-2

আমার প্রিয় পদ্ধতিটি নীচের মত আমার সিএসএস / এসএসএস ডকুমেন্টে একটি ক্লিয়ারফিক্স ক্লাস তৈরি করা

.clearfix{
    clear:both
}

এবং তারপরে নীচে দেখানো হিসাবে এটি আমার এইচটিএমএল নথিতে কল করুন

<html>
  <div class="div-number-one">
    Some Content before the clearfix
  </div>

  <!-- Let's say we need to clearfix Here between these two divs --->
  <div class="clearfix"></div>

  <div class="div-number-two">
    Some more content after the clearfix
  </div>
</html>

-2

এটি এত সহজ ক্লিয়ারফিক্সটি যখন ডিভ উপাদানটির অভ্যন্তরে ভাসমান বৈশিষ্ট্যগুলি ব্যবহার করি তখন বিষয়টি মুছে ফেলা হয় f যদি আমরা দুটি ডিভ উপাদানকে একটিকে ভাসা হিসাবে ব্যবহার করি: বাম; এবং অন্য এক হিসাবে ভাসা: অধিকার; আমরা দুটি ডিভ উপাদানটির পিতামাতার জন্য ক্লিয়ারফিক্স ব্যবহার করতে পারি। আমরা যদি ক্লিয়ারফিক্স ব্যবহার করতে অস্বীকার করি তবে নীচের বিষয়বস্তুতে অযথা শূন্যস্থান পূরণ করতে হবে এবং সাইটের কাঠামোটি নষ্ট হয়ে যাবে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.