亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

子div設置float后會導致父div無法自動撐開

float 被称为"魔鬼属性" , 因为一不小心就会出现很多问题, 它具有以下特征:

  • 包裹性

  • 块状化并格式化上下文

  • 破坏文档流

  • 没有任何 margin 合并

为了避免空间塌陷问题, 我总结了几种办法(假设父div的class为“container”):

  1. 使用伪类

container::after{    display: block;    height:0;    content: '';    clear: both;
}container{    display: inline-block; /*第一种撑开办法,底下会有部分被遮到,所以添加这行,就完美了*/}

由于 clear:both 的作用本质是让自己不和 float 元素在一行显示, 并不是真正意义上的清除浮动, 因此 float 元素一些不好的特性依然存在, 比如:
(1) 如果 clear:both 元素前面的元素就是 float 元素, 则 margin-top 负值即使设成 -9999px , 也不见任何效果
(2) clear:both 后面的元素依旧可能会发生文字环绕的现象

  1. 不撑开的原理是 overflow 不可见,所以给父div添加 overflow:auto; 就行,IE要用 _height:1%;

container{    overflow: auto;/*让主要内容区随内容自动撑开*/
    overflow-y:hidden;/*把出现的滚动条隐藏,但是底下会被遮到一点,不完美*/
    _height:1%;/*对IE的hack*/}
  1. 可以设置父div的高度(也就是手动撑开,不灵活)

  2. 给父div设置 display: inline-block;display:table; 属性

  3. 给子div设置 display: inline-block; 属性也能自动撑开,但是排版问题有待研究

  4. 子div浮动我就套不住你? OK,我让父div也浮动: 父div设置 float: left; 也可以



作者:小贤笔记
链接:https://www.jianshu.com/p/d4ad7936a416


點擊查看更多內容
TA 點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優質文章

正在加載中
  • 推薦
  • 評論
  • 收藏
  • 共同學習,寫下你的評論
感謝您的支持,我會繼續努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學

大額優惠券免費領

立即參與 放棄機會
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

舉報

0/150
提交
取消