当前位置: 首页 > Web前端 > CSS

css垂直居中方法总结

时间:2023-03-31 13:41:42 CSS

查看原文以获得更好的排版效果初学者都说太难写了,现在罗列一些常用的方法。实战中,这里只介绍css相关的方法,js暂且不提。毕竟这是风格问题,js就别计较了。1.top50%;margin-top:-selfheight/2记得我在工作的时候学的第一个方法就是给top50%然后自己上移到自己高度的一半。具体实现是

这样很容易实现垂直居中,但是这个必须知道自己的高度,才能使用margin-top:-100px达到目标。优点:写法简单,兼容性好缺点:必须知道目标元素的高度,高度必须是固定值,否则样式会随之改变,不够灵活2.top50%;transforms:translateY(-50%)这个方法和上面的原理一样,只是把向上的位移改为transforms:translateY.box{positon:absolute;宽度:200px;高度:200px;背景:橙色;顶部:50%;transforms:translateY(-50%)}由于使用了css3的新特性,对浏览器的要求比较高。优点:写法简单,适应性好缺点:兼容性一般,不支持ie8浏览器3.margin:auto你可能用过margin:0auto来实现div的水平居中。其实也可以垂直居中。.box{位置:绝对;宽度:200px;高度:200px;/**必须指定宽高**/background:orange;顶部:0;底部:0;margin:auto}是不是很神奇?但是需要注意一点,这个必须指定宽高,否则top:0;bottom:0会填满容器。优点:写法简单,适应性好,兼容性好缺点:需要指定元素的宽高。如果目标元素的宽高发生变化,可以使用js辅助生成4.vertical-align:middle这个方法是我最喜欢使用的一个方法,基本满足以上所有要求。主要是利用多个元素vertical-align:middle来实现垂直居中。由于需要多个元素才能生效(否则一个元素应该对齐谁),所以添加一个i标签
这样,实现了垂直居中,不需要关注目标元素的大小。它具有很强的适应性。通常我使用伪元素代替,避免在html中添加新的结构这样给需要垂直居中的parent添加一个.mfix就可以实现垂直居中了。优点:适应性好,兼容性好缺点:可能有点复杂。5.write-mode的方法是在张新旭的博客里找到的,也很有意思。一般情况下,比如text-align:center,inline-block元素可以实现水平居中。假设我们通过writing-mode把横流改成竖流,不就形成竖向居中了吗?将以下样式添加到parent.content{writing-mode:tb-rl;/**内容从上到下(top-bottom)和从右到左(right-left)垂直排列。这里有一些兼容性写法**/-webkit-writing-mode:vertical-rl;书写模式:vertical-rl;text-align:center;}这个也可以垂直居中,但是需要注意的是里面的文字也会变成从上到下排列,所以需要重新设置。还有一个问题就是这时候如果想水平居中,可以使用gg。原理和上一个相反,用一层改变流向即可解决。具体实现可以参考demo。优点:适应性和相容性好缺点:是Arecipe。而writing-mode的语法过于繁杂,所以。.打6就好了,flex方法是接触过css3的人应该都接触过的方法。只需在父级添加如下代码即可实现垂直居中。内容{显示:flex;证明内容:居中;align-items:center;}如果浏览器没有要求,可以尝试使用该方法。优点:编写简单,适应性好缺点:兼容性一般,不支持ie8浏览器。有6种方式可以达到垂直居中的效果。个人比较喜欢第4种方式,兼容性和适应性都很好。你们还有其他实现方法吗?