วิธีทำให้ Div มีความสูงในขณะที่ลอยอยู่ภายใน


121

ฉันจะทำให้ Div เพิ่มความสูงได้อย่างไรเมื่อมันลอยอยู่ข้างใน ฉันรู้ว่าการกำหนดค่าสำหรับความกว้างและการตั้งค่าส่วนเกินให้กับงานที่ซ่อนอยู่ ปัญหาคือฉันต้องการ div ที่มองเห็นได้มากเกินไป ความคิดใด ๆ ?

คำตอบ:


278

overflow:auto;บน div ที่มีอยู่ทำให้มองเห็นทุกอย่างที่อยู่ข้างใน (แม้แต่สิ่งของที่ลอยอยู่) และ div ด้านนอกล้อมรอบอย่างเต็มที่ ดูตัวอย่างนี้:

.wrap {
  padding: 1em;
  overflow: auto;
  background: silver;
 }
 
.float {
  float: left;
  width: 40%;
  background: white;
  margin: 0 1%;
}
<div class="wrap">
  <div class="float">Cras mattis iudicium purus sit amet fermentum. At nos hinc posthac, sitientis piros Afros. Qui ipsorum lingua Celtae, nostra Galli appellantur. Petierunt uti sibi concilium totius Galliae in diem certam indicere. Ambitioni dedisse scripsisse iudicaretur.</div>
  <div class="float">Mercedem aut nummos unde unde extricat, amaras. A communi observantia non est recedendum. Quisque ut dolor gravida, placerat libero vel, euismod. Paullum deliquit, ponderibus modulisque suis ratio utitur.</div>
  </div>


7
ใช่มันใช้งานได้ แต่มันมีอันตรายจากการสร้างแถบเลื่อน .. ใช่มั้ย?
pedrozath

1
ไม่ไม่ใช่ว่าฉันรู้จัก @pedro Div ด้านนอกควรขยายไปเรื่อย ๆ เพื่อปิด Div ด้านใน ลองใช้ในซอเพิ่มขนาดของ div ภายในและดูว่าเกิดอะไรขึ้น
JakeParis

2
ฉันลองสิ่งนี้แล้วแถบเลื่อนเล็ก ๆ สูงประมาณ 2em ปรากฏขึ้นที่ด้านขวาของหน้าต่างเบราว์เซอร์
Nigel Alderton

1
@NigelAlderton สิ่งนี้เกิดขึ้นกับฉันเพราะฉันบังคับให้ความสูงของภาชนะบรรจุ (ที่มีการoverflowเพิ่ม) แก้ไขโดยการลบออกoverflow: auto;จากคลาสเช่นเดียวกับheightตัวเลือก
eggy

16

การล้างลอยมีหลายวิธี คุณสามารถตรวจสอบได้ที่นี่:
http://work.arounds.org/issue/3/clearing-floats/

เช่นclear:bothอาจเหมาะกับคุณ

#element:after {
    content:"";
    clear:both;
    display:block;
}

#element { zoom:1; }

1
ประโยชน์ของแนวทางนี้คือoverflow: auto;จะตัดเนื้อหา (เช่นการตกแต่งโฟกัส) ที่ล้นออกนอกองค์ประกอบ แต่จะไม่เกิดขึ้น
Dan

ล้น: อัตโนมัติสร้างแถบเลื่อนแนวนอนให้ฉันดังนั้นฉันจึงไม่สามารถใช้มันได้ สิ่งนี้ทำงานได้อย่างสมบูรณ์แบบ
Edwin Stoteler

สิ่งที่ฉันกำลังมองหา นำ CSS นี้ไปใช้กับพาเรนต์ จะขยายความสูงของแม่ <div> เพื่อให้องค์ประกอบที่ลอยอยู่ภายในนั้น สง่างามเพราะระบุไว้อย่างชัดเจนว่า: "ด้านล่างของผู้ปกครองต้องล้างลูกลอย"
IAM_AL_X

12

ในหลาย ๆ กรณีoverflow: auto;จะเพียงพอ แต่เพื่อความสมบูรณ์และการสนับสนุนข้ามเบราว์เซอร์ให้ดูที่Clearfixซึ่งจะทำงานได้กับเบราว์เซอร์ทั้งหมด

ลองพิจารณามาร์กอัปต่อไปนี้ ..

<div class="clearfix">
   <div class="content">Content 1</div>
   <div class="content">Content 2</div>
</div>

พร้อมรูปแบบดังต่อไปนี้ ..

.content { float:left; }

.clearfix { ..from link.. }

หากไม่มี clearfix ผู้ปกครองdivจะไม่มีส่วนสูงเนื่องจากเป็นเด็กลอยน้ำ clearfix จะทำให้ผู้ปกครองพิจารณาเด็กลอย


2
Clearfix เป็นมาร์กอัปพิเศษ เพียงแค่ให้มาร์กอัป Div ผู้ปกครองoverflow: auto;
JakeParis

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