在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
前言刚参加工作时被面试官一连串居中问题虐的体无完肤得场景历历在目。“你是如何实现文本的居中的”“如果是多行文本呢”“块级元素的水平居中如何实现”“块级元素的垂直居中如何实现”。。。问到后面脑子里一团浆糊,本来知道的也不知道该如何回答了。居中是日常工作中不可避免要遇到的场景,面试中也是高频出现。这次的文章就围绕这些问题展开,希望能够帮助有和我当年一样疑惑的同学,在今后的工作和面试中再面对居中问题的时候可以游刃有余。 行内元素居中文本垂直居中单行文本垂直居中 单行文本的垂直居中是最简单的,设置line-height与盒子高度一样就可以。 .center { // 完全可以不设置高度 // height: 20px; line-height: 20px; } 多行文本垂直居中 vertical-align可以指定行内元素的垂直对齐方式。 这个方法需要多增加一个.center元素将需要居中的内容包裹起来。设置父元素的line-height为元素的高度,居中子元素.center的display为inline-block,使其拥有行内元素的特性,因为line-height的继承性,所以设置line-height: 20px;重置居中子元素的line-height,然后设置vertical-align: middle;在行框盒子内垂直居中对齐。 <div class="box"> <div class="center"> 虽然你们是扮演路人甲乙丙丁,但是一样是有生命、有灵魂的。 </div> </div> <style> .box { background-color: orange; line-height: 200px; width: 300px; } .center { background-color: green; line-height: 20px; display: inline-block; vertical-align: middle; } </style> 2.table-cell .box { height: 200px; display: table-cell; vertical-align: middle; } 行内元素水平居中text-align控制子行内元素的水平对齐方式,这个非常简单直接设置text-align:center就可以。 .center { text-align: center; } 块级元素水平居中margin的值为auto可以占据对应方向的所有剩余空间,如果设置水平方向上两个方向的margin值都为auto,两个方向就会平分剩余空间,从而实现居中。 .center { margin: 0 auto; } 块级元素垂直居中那可不可以利用margin:auto;实现垂直方向的居中呢?当然可以,可以通过修改writing-mode改变块的流动,使块横向流动,此时height方向就会默认平铺撑满,设置margin:auto;就可以实现垂直方向的居中。但是这个方法有副作用,因为writing-mode属性的可继承性,会导致该元素下得所有子元素全部流方向全部变为横向。而且此时水平方向不能再使用此方法实现居中了。 <div class="box"> <div class="center"> 虽然你们是扮演路人甲乙丙丁,但是一样是有生命、有灵魂的。 </div> </div> <style> .box { background-color: orange; height: 200px; writing-mode: vertical-lr;; } .center { background-color: green; height: 50px; margin: auto 0; } </style> 那有没有可能使用这个特性实现垂直与水平方向都居中呢?也是可以得,我们继续往下看 水平垂直居中1.position(居中元素宽高固定) 需要注意的是这个方法只能兼容IE8及以上浏览器,如果项目要兼容IE7可以使用下面这种方法 .box { position: relative; } .center { position:absolute; width: 200px; height: 200px; top:0; bottom:0; left:0; right:0; margin: auto; } 2.vertacal-align <div class="box"> <div class="assist"></div> <div class="center"> 虽然你们是扮演路人甲乙丙丁,但是一样是有生命、有灵魂的。 </div> </div> <style> .box { background-color: orange; height: 200px; width: 500px; text-align: center; } .center { background-color: green; width: 150px; display: inline-block; vertical-align: middle; } .assist { display: inline-block; height: 100%; vertical-align: middle; } </style> 3.position配合margin <div class="box"> <div class="center"> 虽然你们是扮演路人甲乙丙丁,但是一样是有生命、有灵魂的。 </div> </div> <style> .box { background-color: orange; height: 200px; width: 500px; position: relative; } .center { background-color: green; width: 150px; height: 50px; position:absolute; top:50%; left:50%; margin-left: -75px; margin-top: -25px; } </style> 4.position配合transform <div class="box"> <div class="center"> 虽然你们是扮演路人甲乙丙丁,但是一样是有生命、有灵魂的。 </div> </div> <style> .box { background-color: orange; height: 200px; width: 500px; position: relative; } .center { background-color: green; width: 150px; position:absolute; top:50%; left:50%; transform: traslate(-50%, -50%); } </style> 5.flex .box { display: flex; align-items: center; justify-content: center; } 到此这篇关于css实现元素居中的N种方法的文章就介绍到这了,更多相关css 元素居中内容请搜索极客世界以前的文章或继续浏览下面的相关文章,希望大家以后多多支持极客世界! |
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论