这里margin-left的值的绝对值大小等于宽度的一半。注意,元素的宽度是必须的。
这里还有一种其他方式:
<style> .wrapper{ position:relative; } .box{ position:absolute; width:100px; left:0; right:0; margin:0 auto; } </style> <div class="wrapper"> <div class="box"> </div> </div> 使用transform: 也是利用了定位,跟上述有点类似,不同的是元素可以不设置宽度 <style> .wrapper { position:relative; } .center { position:absolute; background-color: red; transform: translateX(-50%); color:#000; left:50%; } </style> <div class="wrapper"> <div class="center"> kasol </div> </div> 使用flex弹性布局: 给父元素设置display:flex,justify-content:center,这个是利用了弹性布局,justify-content指定了一个Item在主轴方向上的对齐方式. .wrapper{ display:flex; border:1px solid red; justify-content:center; } p{ border:1px solid #ccc; width:50px; }2.垂直居中
单行文字垂直居中
把line-height设置成和父元素高度相同的值。假如待定位的元素有固定的高度,如下:
<style> .wrapper{ border:1px solid red; height:300px; position:relative; } p{ border:1px solid #ccc; margin:0; height:100px; position:absolute; top:50%; margin-top:-50px; } </style> <div class="wrapper"> <p>123</p> </div>其实和水平居中套路是差不多的。那么相似的也可以这样。
.wrapper{ border:1px solid red; height:300px; position:relative; } p{ border:1px solid #ccc; margin: auto 0; height:100px; position:absolute; top:0; bottom:0; }也是利用了margin这个属性,当然也可以用transform:
.wrapper{ border:1px solid red; height:300px; position:relative; } p{ border:1px solid #ccc; height:100px; position:absolute; margin:0; transform:translateY(-50%); top:50%; }也可以用弹性布局:
.wrapper{ display:flex; border:1px solid red; height:300px; align-items : center; } p{ border:1px solid #ccc; height:50px; }垂直居中还可以利用table来
.wrapper{ display: table; border:1px solid red; height:500px; width:300px; } p{ display: table-cell; vertical-align:middle; }主要是利用了table-cell可以设置vertical-align属性