在网页开发过程中,为了让块元素能在统一行上面显示,可以使用inline-block进行布局。还有没有其他的方式呢?我们今天学习浮动也可以达到这种效果。
float/文档流:
float:left | right | none | inherit;
文档流:是文档中可显示对象在排列时所占用的位置。
浮动:使元素脱离文档流,按照指定方向发生移动,遇到父级边界或者相邻的浮动元素停了下来。
clear:left | right | both | none | inherit; # 元素的某个方向上不能有浮动元素
clear:both; # 在左右两侧均不允许浮动元素
案例:
div {
width: 200px;
height: 200px;
background-color: red;
float: left;
}
浮动也能像inline-block一样在同一行显示,并且,没有inline-block的一个问题,就是换行符会被转换为间隙。
如果向右浮动的话,是代码中第一个div最先浮动到最右边,然后是第二个div浮动到最右的第二个。
浮动(float)的特征:
1.多个块可以在一排显示
2.内联元素支持宽高
3.默认内容撑开宽度
4.脱离文档流
5.提升层级半层
1,2,3
三条和inline-block一致。
清除浮动的方法
1.父级加高度(问题:扩展性不好)
2.父级也加浮动(问题:页面中所有的元素都加浮动,margin左右自动失效)
3.inline-block清除浮动的方法(问题:margin左右auto失效)
4.空标签清除浮动(问题:IE6最小高度19px。解决后IE6下还有2px偏差)
5.<br clear="all">清除浮动(问题:不符合工作中,结构,样式,行为,三者分离的要求。也就是说这样的话样式在结构中了)
6.after伪类清除浮动(现在主流方式)
7.overflow:hidden 清除浮动(问题:需要配合宽度或者zoom 兼容ie6,ie7)
overflow:scroll | auto | hidden , overflow:hidden;溢出隐藏(裁刀!)
空标签清除浮动方式:
.clearfix {
clear: both;
}
...
<div class="box">
<div class="item">
</div>
<div class="clearfix"></div>
</div>
after伪类清除浮动:
.clearfix:after{ # 注意:伪类的冒号后面不能有空格
content: "";
display: block;
clear: both;
}
.box {
border: 1px solid red;
}
.item {
width: 200px;
height: 200px;
background-color: #222222;
float: left;
}
</style>
</head>
<body>
<div class="box clearfix">
<div class="item"></div>
</div>
网友评论