高度塌陷:
在文流档中,父元素高度默认由子元素撑开,当子元素设置浮动后,子元素完全脱离文档流,导致父元素的高度坍塌
父元素的高度坍塌,导致父元素下的所有元素都会向上移动,导致页面布局混乱
解决高度塌陷1:
BFC开启后,元素所具有特性:
1、父元素的垂直外边距不会和子元素重叠
2、开启BFC的元素不会被浮动元素所覆盖
3、开启BFC的元素可以包含浮动的子元素
如何开启BFC:(IE6及以下浏览器不可兼容)
1、设置元素浮动 (不推荐)使用这种方式开启,虽然可以撑开父元素,但是会导致父元素的宽度丢失,而且使用这种方式也会导致下边的元素上移
2、设置元素绝对定位 (不推荐)
3、设置元素为inline-block (不推荐)可以解决问题,但是会导致宽度丢失
4、将元素的overflow设置为一个非visible的值(副作用最小)
推荐方式:将overflow设置为hidden是副作用最小的开启BFC的方式
zoom样式只可兼容IE浏览器
zoom表示放大的意思,后边跟着一个数值,写几就将元素放大几倍
zoom:1;表示不放大元素,但是通过该样式可以开启hasLayout
开启方式使用一种副作用最小的:直接将元素的zoom设置为1即可
当overflow与zoom同时使用,可以兼容所有的浏览器
解决高度塌陷2:
首先,直接在高度坍塌的父元素后添加空白div,所添加的空白div没有浮动,因此可以撑开父元素的高度
其次,对其清除浮动,通过空白的div撑开父元素高度,几乎无副作用
注意:使用这种方式在页面中添加多余的空白块
解决高度塌陷3:
通过after伪类向元素的最后添加一个空白的块元素,然后对其清除浮动(与添加一个div的原理一样,可以达到一个相同的效果)
此方法不会在页面中添加多余的div,推荐使用的,几乎没有副作用
导航条:
清除浮动:
清除掉其他元素浮动对当前元素产生的影响,使用clear
可选值:
left:清除左侧浮动元素对当前元素的影响
right:清除右侧浮动元素对当前元素的影响
both:清除两侧浮动元素对当前元素的影响
清除对他影响最大的那个元素的浮动——最大值
清除浮动以后,元素会回到其他元素浮动之前的位置