css实现div水平垂直居中
水平垂直居中是页面布局中及其常见的样式,有很多种实现方式,下面就介绍常用几种实现方式:
div布局:
<div class="outer"> <div class="inner"></div> </div>
初始css:
.outer{ height:200px; width:200px; border:1px solid #000;} .inner{ height: 100px; width:100px; border:1px solid #000;}
方法1:采用绝对定位absolute,利用负边距:margin-top,margin-left.
.outer{ height:200px; width:200px; border:1px solid #000; position:relative; } .inner{ height: 100px; width:100px; border:1px solid #000; position:absolute; top:50%; left:50%; margin-left:-50px; margin-top:-50px; }
这种方法,就是要知道div的大小,根据宽高去计算,还是比较常用。
方法2:采用绝对定位,巧妙使用margin:auto
.outer{ height:200px; width:200px; border:1px solid #000; position:relative; } .inner{ height: 100px; width:100px; border:1px solid #000; position:absolute; top:0px; bottom: 0px; left:0px; right:0px; margin:auto; }
这种方法不需要计算top,left的值,比上面那种办法方便许多,用于弹窗的时候定位,或者定位某个元素在父元素上面水平垂直居中。
方法3:采用绝对定位+transform
.outer{ height:200px; width:200px; border:1px solid #000; position:relative; } .inner{ height: 100px; width:100px; border:1px solid #000; position:absolute; top:50%; left: 50%; transform: translate(-50%,-50%); }
这种方法主要是用transform的x,y设置为-50%,其实原理跟上面的绝对定位差不多,兼容不大好。
方法4:flex布局
.outer{ height:200px; width:200px; border:1px solid #000; display: flex; justify-content: center; align-items: center; } .inner{ height: 100px; width:100px; border:1px solid #000; }
这个方法挺好用的,特别是对于手机端布局使用最方便,Flex布局即为弹性布局,只需将父元素设置三个属性即可(display,justify-content,align-items)。
方法5:采用绝对定位,计算定位距离(我平常用比较少的)
.outer{ height:200px; width:200px; border:1px solid #000; position:relative; } .inner{ height: 100px; width:100px; border:1px solid #000; position:absolute; top:50px; /*(父元素高度-子元素高度)/2*/ left:50px; /*(父元素宽度-子元素宽度)/2*/ }
这种方法要根据父子元素的宽高来计算top和left的值,用起来比较麻烦。
本文作者: Jasmine
本文链接: https://www.jianbaizhan.com/article/662
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 3.0 许可协议。转载请注明出处!