ใช้: หลังจากล้างองค์ประกอบลอย


106

ฉันมีรายชื่อและ Li มีfloat:left;. เนื้อหาหลัง<ul>ควรจัดเรียงให้ถูกต้อง ดังนั้นฉันสามารถสร้างสิ่งต่อไปนี้:

http://jsfiddle.net/8unU8/

ฉันคิดว่าฉันสามารถลบออกได้<div class="clear">โดยใช้ตัวเลือกหลอกเช่น: after

แต่ตัวอย่างไม่ทำงาน:

http://jsfiddle.net/EyNnk/

ฉันต้องสร้าง div แยกต่างหากเพื่อล้างองค์ประกอบที่ลอยอยู่เสมอหรือไม่

คำตอบ:


261

เขียนดังนี้:

.wrapper:after {
    content: '';
    display: block;
    clear: both;
}

ตรวจสอบที่นี่http://jsfiddle.net/EyNnk/1/


นี่คือวิธีการทำ แต่โปรดสังเกตประเด็นในคำตอบของฉันเกี่ยวกับความหมาย
Alex

2
เป็นเพียงข้อมูลเล็กน้อย: การ::afterใช้เครื่องหมายจุดคู่เป็นวิธีที่แนะนำในการกำหนดเป้าหมายองค์ประกอบหลอก
Dennis98

11
ทุกเบราว์เซอร์ที่รองรับเครื่องหมายทวิภาคคู่ (: :) ไวยากรณ์ CSS3 ยังรองรับเพียงไวยากรณ์ (:) แต่ IE 8 รองรับเฉพาะเครื่องหมายจุดคู่เดียวดังนั้นในตอนนี้ขอแนะนำให้ใช้เครื่องหมายจุดคู่เดียวเพื่อการสนับสนุนเบราว์เซอร์ที่ดีที่สุด :: เป็นรูปแบบใหม่ที่เยื้องเพื่อแยกเนื้อหาหลอกออกจากตัวเลือกหลอก หากคุณไม่ต้องการการสนับสนุน IE 8 อย่าลังเลที่จะใช้ดับเบิ้ลโคลอน css-tricks.com/almanac/selectors/a/after-and-before
retroriff

ทำไมเราต้องใส่สิ่งนี้: "content: ''; display: block;" เหรอ? และถ้าคุณต้องการกระดาษห่อแบบอินไลน์ล่ะ?
Lucke

6

ไม่คุณไม่เพียงพอที่จะทำสิ่งนี้:

<ul class="clearfix">
  <li>one</li>
  <li>two></li>
</ul>

และ CSS ต่อไปนี้:

ul li {float: left;}


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

.clearfix {
  display: inline-block;
}

html[xmlns] .clearfix {
   display: block;
}

* html .clearfix {
   height: 1%;
}

5

สิ่งนี้จะใช้ได้เช่นกัน:

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

.clearfix:after {
    clear: both;
}

/* IE 6 & 7 */
.clearfix {
    zoom: 1;
}

ให้คลาสclearfixแก่องค์ประกอบหลักเช่นulองค์ประกอบของคุณ

แหล่งที่มาที่นี่และที่นี่


1
จอแสดงผล: ตารางสามารถเพิ่มระยะห่างพิเศษ ฉันใช้ display: block แทน
The Cog

0

ข้อความ 'dasda' จะไม่อยู่ในแท็กใช่ไหม? ในเชิงความหมายและเพื่อให้เป็น HTML ที่ถูกต้องเพียงแค่เพิ่มคลาสที่ชัดเจนลงในสิ่งนั้น:

http://jsfiddle.net/EyNnk/2/


1
มันไม่ใช่ความหมายเลย 1) เรามักจะล้างองค์ประกอบหลักหากลูกของเขาลอยอยู่เช่นตามคำตอบของคุณหากฉันต้องการให้ความเป็นมาใน UL มันไม่ครอบคลุม LI เพราะ UL ไม่ชัดเจน & 2) ฉันมีคำถามทำไมคุณให้ชัดเจน เรียนใน DIV แยกก่อน P ถ้าคุณให้ P เท่านั้นมันก็ใช้ได้เช่นกัน
sandeep

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.