css浮动流,高度塌陷问题

常规流

盒模型:规定单个盒子的规则

视觉格式化模型(布局规则):页面中的多个盒子排列规则,大体分为三种:

1.常规流
2.浮动
3.定位

常规流布局

所有元素,默认情况下,都属于常规流布局,总体规则:块盒独占一行,行盒水平排列

块盒居中
margin:0 auto;

外边距的合并
两个相邻盒子的外边距相邻的话会被合并,取最大值;

浮动流布局

应用场景

文字环绕
横向排列

浮动的基本特点

修改fioat属性值:
-left :左浮动,元素靠上左
-right:右浮动,元素靠上右
-默认值为none

1.当一个元素浮动后,必定为块盒(display:block)
2.浮动元素的包含快,和常规流一样,为父元的内容盒

盒子排列

  • 浮动盒子在包含块中排列时,会避开常规流盒子;
  • 常规流盒子在包含块中排列时,会无视浮动流盒子

如果文字没有在行盒元素中,浏览器会自动将文字放进行盒元素中(匿名行盒),也就是说,行盒都可以看成内容;

高度塌陷

案例:
css浮动流,高度塌陷问题
css浮动流,高度塌陷问题
原因:常规流盒子在不设置高度的情况下,其高度由内容决定,而常规流盒子不会考虑浮动流盒子,也不受其影响,所以当常规流盒子包含了浮动流盒子后,再不给常规流盒子设置高度的情况下,浮动流盒子不会将常规流盒子撑开

发生高度塌陷的解决方案

clear
1.默认值为:none;
2.left:清除左浮动,该元素必须出现在所有浮动盒子的下方;
3.right:清除右浮动,该元素必须出现在所有浮动盒子的下方;
4.both:清除左右浮动,该元素必须出现在所有浮动盒子的下方;

解决成功后随浮动盒撑开
css浮动流,高度塌陷问题
第一种解决方案(不推荐)
css浮动流,高度塌陷问题
第二种解决方案(推荐)
css浮动流,高度塌陷问题