鍍金池/ 問答/HTML/ CSS元素浮動位置

CSS元素浮動位置

 <div class="wrapper">
    <div class="div1"></div>
    <div class="div2">test</div>
  </div>
.wrapper {
  height: 500px;
}
.div1 {
  float: left;
  width: 200px;
  height: 200px;
  background: red;
}
.div2 {
  width: 200px;
  height: 200px;
  background: dimgray;
  
}

代碼如上所示,div1向左浮動,此時div2會移動到原先div1的位置,但是被div1遮蓋,而內(nèi)容不會和div1重疊,所以會顯示在下面。

clipboard.png

此時將div2的margin-top設置為100px, div2會向下移動100px,但是同時浮動的div1也會向下移動100px。這是為什么?浮動元素頂端不是應該盡可能的高嗎?應該在包含框的上邊緣位置吧?

clipboard.png

回答
編輯回答
爆扎

兩個div重疊這個應該很好理解,浮動元素不在normal flow內(nèi),所以就好像不存在一樣。
文字下移,是因為浮動元素會導致行框變短,兩個div一樣大所以行框?qū)挾葹?,文字只能"換行"顯示,這個和文字環(huán)繞的原理是一樣的,你減小div1 的寬度就能明白

2018年3月19日 04:06
編輯回答
膽怯

這里實質(zhì)上是wrapper的margin-top為 100px,你給wrapper加個overflow:hidden看看效果

2018年8月31日 07:21