निर्मित किए जा रहे डिज़ाइन के आधार पर, नीचे दिए गए प्रत्येक स्पष्ट सीएसएस समाधान के अपने फायदे हैं।
क्लीयरफिक्स के पास उपयोगी अनुप्रयोग हैं लेकिन इसका उपयोग हैक के रूप में भी किया गया है। इससे पहले कि आप एक स्पष्ट उपसर्ग का उपयोग करें शायद ये आधुनिक सीएसएस समाधान उपयोगी हो सकते हैं:
आधुनिक क्लीयरफिक्स सॉल्यूशंस
के साथ कंटेनर 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 तत्व हो सकता है।
क्लियरफिक्स रीलोडेड
CSSMojo पर थियरी कोब्लेन्टज़ ने लिखा: बहुत नवीनतम क्लीयरफिक्स पुनः लोड किया गया । उन्होंने कहा कि OldIE के लिए समर्थन छोड़ने से, समाधान को एक css कथन में सरल बनाया जा सकता है। इसके अतिरिक्त, 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+, IE 6+
.container::before, .container::after {
content: "";
display: table;
}
.container::after {
clear: both;
}
.container {
zoom: 1;
}
ओवरफ्लो संपत्ति
यह मूल विधि सामान्य मामले के लिए पसंद की जाती है, जब तैनात सामग्री कंटेनर की सीमा के बाहर नहीं दिखाई देगी।
http://www.quirksmode.org/css/clearing.html
- बताते हैं कि इस तकनीक से संबंधित सामान्य समस्याओं को कैसे हल करना है, अर्थात् width: 100%
कंटेनर पर सेटिंग करना।
.container {
overflow: hidden;
display: inline-block;
display: block;
}
display
IE के लिए "hasLayout" सेट करने के लिए संपत्ति का उपयोग करने के बजाय , अन्य गुणों का उपयोग किसी तत्व के लिए "hasLayout" को ट्रिगर करने के लिए किया जा सकता है ।
.container {
overflow: hidden;
zoom: 1;
display: block;
}
overflow
संपत्ति का उपयोग करके फ़्लोट को साफ़ करने का दूसरा तरीका अंडरस्कोर हैक का उपयोग करना है । IE अंडरस्कोर के साथ उपसर्गों को लागू करेगा, अन्य ब्राउज़र नहीं करेंगे। zoom
संपत्ति से चलाता है hasLayout IE में:
.container {
overflow: hidden;
_overflow: visible; /* for IE */
_zoom: 1; /* for IE */
}
जबकि यह काम करता है ... यह हैक का उपयोग करने के लिए आदर्श नहीं है।
PIE: आसान समाशोधन विधि
इस पुराने "ईज़ी क्लियरिंग" पद्धति में अधिक चालित सीएसएस की कीमत पर, कंटेनर की सीमा के बाहर तैनात तत्वों को रखने की अनुमति देने का लाभ है।
यह समाधान काफी पुराना है, लेकिन आप स्थिति के बारे में आसान समाशोधन के बारे में सब कुछ जान सकते हैं: http://www.positioniseverything.net/easearear.html
"स्पष्ट" संपत्ति का उपयोग करते हुए तत्व
त्वरित और गंदे समाधान (कुछ कमियों के साथ) जब आप जल्दी से किसी चीज़ को एक साथ थप्पड़ मार रहे हों:
<br style="clear: both" /> <!-- So dirty! -->
कमियां
- यह उत्तरदायी नहीं है और इस प्रकार वांछित प्रभाव प्रदान नहीं कर सकता है यदि लेआउट क्वेरी मीडिया के प्रश्नों के आधार पर बदल जाती है। शुद्ध सीएसएस में एक समाधान अधिक आदर्श है।
- यह आवश्यक रूप से किसी भी अर्थ मूल्य को जोड़ने के बिना HTML मार्कअप जोड़ता है।
- यह एक उदाहरण के लिए इनलाइन के लिए इनलाइन परिभाषा और समाधान की आवश्यकता है, सीएसएस में "क्लीयरफिक्स" के एकल समाधान के लिए एक वर्ग संदर्भ के बजाय और html में वर्ग संदर्भ।
- यह दूसरों के साथ काम करने के लिए कोड को मुश्किल बनाता है क्योंकि उन्हें इसके चारों ओर काम करने के लिए अधिक हैक लिखना पड़ सकता है।
- भविष्य में जब आपको किसी अन्य क्लीयरफिक्स सॉल्यूशन का उपयोग करने की आवश्यकता होती है, तो आपको
<br style="clear: both" />
मार्कअप के आसपास फंसे हर टैग को वापस नहीं लाना होगा ।