在使用div布局的时候,经常会使用到float来使元素浮动到需要的位置。使用浮动之后div就会脱离普通文档流,这个时候你如果没有设置div的高度的话就会产生高度塌陷的问题,而且有可能会导致兄弟元素出现排版混乱等问题。为了解决这些问题我们通常需要清除浮动:
(1).利用伪类清除浮动(常用)
1 2 3 4 5 6 |
//为浮动的父级标签添加 .clearfloat::after{ content: " "; display: block; clear: both; } |
(2).利用空标签清除浮动(会产生大量无用空标签不推荐)
1 2 3 4 |
//在浮动标签的末尾添加<div class='clearfloat'></div> .clearfloat{ clear:both; } |
举个栗子:为浮动元素父级添加 overflow:hidden 就可清除浮动;只要能触发BF都可以清除浮动具体使用什么方式触发看项目需求咯
(1).让行内文字居中:text-align:center(水平居中),line-height:height(垂直居中)
(2).让行内盒子居中:(这种方法垂直居中,需要有一个元素的高与父级元素高相同才行)
1 2 3 4 5 6 7 8 |
.featherbox{//水平居中 display: table-cell; text-align:center; } .sonbox{//垂直居中 display: inline-block; vertical-align: middle; } |
(1).定位
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
//定位加偏移水平垂直居中(常用) .featherbox{ position:relative; } .currentbox{ position:absolute; top:50%; left:50%; transform: translate(-50%,-50%); } //定位加margin:auto水平垂直居中;margin:0 auto(常用块级水平居中) .featherbox{ position:relative; } .currentbox{//注意子元素盒子是一定要设置宽高的,要不然会撑满整个父级的盒子 position:absolute; top: 0; left: 0; bottom: 0; right: 0; margin: auto; } |
这里先看flex是如何实现水平垂直居中的
1 2 3 4 5 6 7 8 |
#featherbox{ width: 300px; height: 300px; background: lightblue; display: flex;/*flex布局*/ justify-content: center;/*水平居中*/ align-items: center;/*垂直居中*/ } |
补充一下flex布局知识
Flex是lexible Box 的缩写,就是"弹性布局" 。由于兼容行的问题(ie10+),现阶段flex广泛用于移动端的布局
给块级flex布局:display:flex;给行内元素flex布局:display:inline-flex;flex有两个轴方向,一个是主轴,一个是交叉轴(我们可以自定义主轴方向);flex布局分为父级的"容器"和子级的"项目"组成;"容器"和"项目"上分别由六个属性可以设置:
在Flex布局中,子项设置float,clear以及vertical-align属性都是没有用的 . flex布局时沿着轴线进行布局的,可以说是'一维布局' ,如果你需要'二维布局'方案的话可以试试阮一峰Grid,以及Grid和Flex的区别