深入解析css笔记 第四章 理解浮动

198 阅读2分钟

双容器模式

body为一层容器,container为一层,container设置最大宽度,两边边距自动计算。

  1. 页面较宽时,container取最大宽度,两边边距自动计算。
  2. 页面较窄时,两边没有边距,cantainer宽度由内容决定,尽量避免出现滚动条。
<body>
  <div class="container"></div>
</body>

<style>
.container{
  max-width:100px;
  margin: 0 auto;
}
</style>

媒体对象

指一侧为图片,一侧为文字的布局方式,文字不会环绕在图片下方。可通过浮动布局、flex布局、表格布局等实现。

浮动

容器折叠(高度塌陷)

由于浮动元素脱离文档流,所以其容器的高度是由容器内的其他元素撑起的,如果没有其他元素,容器的高度就为零,这种情况称为容器折叠,也称为高度塌陷

消除容器折叠

消除容器折叠,使浮动元素撑起容器高度,有两种方法:

  1. 使用清除浮动 在浮动元素下边添加一个元素,为其设置clear属性就可实现消除浮动,但是这种方式不够优雅,一般通过css给容器添加伪元素,这样通过添加类名就实现需求了。以下为实现方法:
.clearfix::after {
    display: block; /* display设置为非行内模式 */
    content: ' ';
    clear: both; /* 对于float:left和float:right都能清除浮动 */
 }

还有一种改进的方法,可以同时避免容器和子元素产生外边距折叠:

.clearfix::before,
.clearfix::after {
  display: table;  /* 避免容器和子元素产生外边距折叠 */
  content: ' ';
}
.clearfix::after {
  clear: both; /* 对于float:left和float:right都能清除浮动 */
}
  1. 使用BFC,效果和上面改进版本的清除浮动方法一致。

BFC

BFC特性

  1. 包含了内部所有元素的上下外边距。可用于防止BFC首尾的元素和外部产生外边距折叠。
  2. 包含了内部所有的浮动元素。可用于防止浮动导致的容器折叠。
  3. 不会跟BFC外面的浮动元素重叠。可用于实现图片为浮动布局的媒体对象。

创建BFC的方式

  1. 设置overflow不为visible。推荐设置为overflow:auto。
  2. 设置display为inline-block、table-cell、table-caption、flex/inline-flex、grid/inline-grid等。
  3. 设置float不为none。
  4. 设置为绝对布局position:absolute或position:fixed。