09.浮动样式
浮动样式最初是用来将文字环绕图片来设计的,但是发现可以用来做页面的布局。
默认元素普通流布局
浏览器在默认情况下规定一个块元素在父元素内的排列规则:
从上往下排列
从左开始排列
一个块元素占一行
<style>
.father{
width:500px;
height:500px;
}
.box1{
float:left;
width:100px;
height:100px;
}
.box2{
width:200px;
height:200px;
}
.box3{
width:300px;
height:300px;
}
</style>
<body>
<div class="father">
<div class="box1"></div>
<div class="box2"></div>
<div class="box3"></div>
</div>
</body>
说明:将box1设置向左浮动,首先box1父脱离默认标准流布局,此时box2和box3将会上移.
浮动的注意事项:
1.浮动不会被覆盖。
2.具有和文本环绕相同的特性,一个浮动元素后面的行内元素会首先按照文本环绕效果进行排列.
行内元素浮动的设置
行内图片默认是向文本基线对齐。
而若是在行内模型设置浮动则图片脱离平面,使得两边的问你就会靠拢。
设置了浮动的行内元素的顶部不会超出所在行的行框顶部。
浮动样式父元素高度塌陷
当父元素没有固定高度时,父元素高度由子元素高度之和撑开。而当父元素没有固定高度并且所有的元素都浮起来时,则会出现父元素的高度塌陷。
解决方案:
第一类:让父元素BFC化
给父元素设置下列属性之一即可
overflow:hidden;
display:inline-block;
float:left;
position:absolute;
… …
当父元素形成BFC时, 父元素就具有了包裹性:
可简单理解为,父元素有了一个虚拟的框(此时子元素的外边距不再会和父元素的外边距合并), 父元素的宽高由里面还在平面上的元素和漂浮的元素一同撑开。
第二类:利用一个幽灵元素来清除浮动,手动撑开父元素的高度
方法有:
新建一个空的块元素,并给他设置clear:both属性 (缺陷:破坏页面的文档结构)
使用伪元素生成一个幽灵元素,并给他设置clear:both属性
clear样式详解
Clear:清除浮动(元素盒子的边不能和前面的盒子相邻)
left; 左侧抵抗浮动
right; 右侧抵抗浮动
both; 两边都抵抗浮动(上面两个合并)
)
left; 左侧抵抗浮动
right; 右侧抵抗浮动
both; 两边都抵抗浮动(上面两个合并)