本文介绍简单的垂直居中布局方式,让div的内容垂直居中显示,以下demo都只是针对现代浏览器所做,未兼容低版本的IE以及其它非主流浏览器.
工具/原料
编辑器开发软件
方法/步骤
1、1.咯悝滩镞使用绝对定位和负外边距对块级元素进行垂直居中:html代码:<divid="box"> <divid=&qu泠贾高框ot;child">我是测试DIV</div></div>css代码:#box{width:300px;height:300px;background:#ddd;position:relative;}#child{width:150px;height:100px;background:orange;position:absolute;top:50%;margin:-50px000;line-height:100px;}运行结果如下下图所示:
2、总结:这个方法兼容性不错,但是有一个小缺点:必须提前知道被居中块级元素的尺寸,否则无法准确实现垂直居中。
3、(2)使用flex布局html代码:<divid="box">雾霾天气,太久没有打球了</div>css代码:#box{width:300px;height:300px;background:#ddd;display:flex;align-items:center;}运行结果如下下图所示:
4、这种方式同样适用于块尽谮惋脑级元素:html代码:<divid="box"> <divid="ch足毂忍珩ild">程序员怎么才能保护好眼睛?</div></div>css代码:#box{width:300px;height:300px;background:#ddd;display:flex;align-items:center;}#child{width:300px;height:100px;background:#8194AA;line-height:100px;}运行结果如下图所示:
5、总结:flex布局(弹性布局/伸缩布局)里门道颇多,这里先针对用到的东西简单说一下 flex也就是flexible,意为灵活的、柔韧的、易弯曲的。 元素可以通过设置display:flex;将其指定为flex布局的容器,指定好了容器之后再为其添加align-items属性,该属性定义项目在交叉轴(这里是纵向轴)上的对齐方式,可能的取值有五个,分别如下: flex-start::交叉轴的起点对齐; flex-end:交叉轴的终点对齐; center:交叉轴的中点对齐; baseline:项目第一行文字的基线对齐; stretch(该值是默认值):如果项目没有设置高度或者设为了auto,那么将占满整个容器的高度。
6、(3)使用line-height对单行文本进行垂直居中html代码:<divid="box">我是一段测试文本</div>css代码:#box{ width:300px; height:300px;background:#ddd; line-height:300px;}运行结果如下:
7、总结:这里有一个小坑需要大家注意:line-height(行高)的值不能设为100%,我们来看看官方文档中给出的关于line-height取值为百分比时候的描述:基于当前字体尺寸的百分比行间距。所以大家就明白了,这里的百分比并不是相对于父元素尺寸而言,而是相对于字体尺寸来讲的。