浮动
Contents
概念
浮动元素会脱离文档流并向左/向右浮动,直到碰到父元素或者另一个浮动元素。
优点
- 使文字环绕在图片周围。
- 当元素浮动后,它有着块级元素的一些性质例如可以设置宽高等,但它与inline-block还是有一些区别的,第一个就是关于横向排序的时候,float可以设置方向而inline-block方向是固定的;还有一个就是inline-block在使用时有时会有空白间隙的问题
缺点
浮动元素一旦脱离了文档流,就无法撑起父元素,会导致父元素高度坍塌。
父元素只包含浮动元素,那么它的高度变为 0(前提就是你们没有设置高度(height)属性,或者设置了为 auto,就会出现这种情况,如果父元素不包含任何的可见背景,这个问题会很难被注意到)
解决方案
-
给外部盒子也添加浮动。把外部盒子也从标准文档流中抽离。 缺点:可读性差,不易于维护(外人看不懂),而且可能要调整整个页面布局。
-
在外部盒子内最下方添上带 clear 属性的空盒子。可以是 div 也可以是其它块级元素,把 放在盒内底部,用最下面的空盒子清除浮动,把盒子重新撑起来。 缺点:引入了冗余元素
-
用 overflow:hidden 清除浮动。属性触发 BFC,让内层的 float 不会影响外层的布局。 缺点:有可能造成溢出元素不可见。
-
直接给父元素设置宽高
-
用 after 伪元素清除浮动。给外层盒子的 after 伪元素设置 clear 属性,再隐藏它。
//在css中添加:after伪元素 .parent:after{ /* 设置添加子元素的内容是空 */ content: ''; /* 设置添加子元素为块级元素 */ display: block; /* 设置添加的子元素的高度0 */ height: 0; /* 设置添加子元素看不见 */ visibility: hidden; /* 设置clear:both */ clear: both; }