aSuncat 2020-06-11
如何设置水平居中显示?
一般的方法是设置宽高,然后以margin去控制,比如:DIV居中的经典方法
本章介绍需要宽度自适应时如何水平居中,以及居中失效的几个点
比如设置一个列表水平居中显示
添加布局元素:
<div class="container"> <div class="list-parentOuter"> <div class="list-parentInner"> <div class="item">AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA</div> <div class="item">BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB</div> <div class="item">CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC</div> <div class="item">DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD</div> </div> </div> </div>
水平居中设置:
.list-parentOuter { float: left; margin-left: 50%; } .list-parentInner { position: relative; right: 50%; }
我们添加点背景颜色,效果如下:
如上图,红色框先往右移50%绿色框的宽度,然后左移50%蓝色框的宽度。
完整html及css:
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Document</title> <style type="text/css"> .container { width:600px; height:300px; background: green; } .list-parentOuter { float: left; margin-left: 50%; background: rgb(0, 0, 255,0.5); } .list-parentInner { position: relative; right: 50%; background: rgb(255, 0, 0,0.5); display: flex; flex-direction: column; } </style> </head> <body> <body> <div class="container"> <div class="list-parentOuter"> <div class="list-parentInner"> <div class="item">AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA</div> <div class="item">BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB</div> <div class="item">CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC</div> <div class="item">DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD</div> </div> </div> </div> </body> </body> </html>
在以上css中上方容器container的样式,添加以下flex布局代码:
.container { width:600px; height:300px; display: flex; flex-direction: column; background: green; }
里面的内容还能够居中么?效果如下:
如果是宽度1000,则是这样:
原因:
flex布局时,子元素不会再自适应宽度(即使设置了float=left);
然后设置设置竖向布局方向,flex-direction: column,会将蓝框的宽度截了(flex-direction: column,会将超出的宽度截取)。
所以红框去获取父容器蓝框的宽度时,只能获取被截图的宽度。
红框在绿框内虽然元素是居中的,但是内容就不居中了。
所以如果需要内容居中,不要在蓝框的上方容器内添加flex布局相关代码。
总结
外层
内层
background-color: blue;background-color: yellow;<input type="button" value="变蓝" @click="changeColorT