这个水平居中是怎么实现的?还是没有理解啊,这个父元素left:50%和子元素left:50%到底是怎么偏移的啊,正50%是相对父亲元素向右偏移吧,那么这个是怎么实现居中的?求大佬画图解释下!
水平居中总结-不定宽块状元素方法(三)
除了前两节讲到的插入table标签,以及改变元素的display类型,可以使不定宽块状元素水平居中之外,本节介绍第3种实现这种效果的方法,设置浮动和相对定位来实现。
方法三:通过给父元素设置 float,然后给父元素设置 position:relative 和 left:50%,子元素设置 position:relative 和 left: -50% 来实现水平居中。
我们可以这样理解:假想ul层的父层(即下面例子中的div层)中间有条平分线将ul层的父层(div层)平均分为两份,ul层的css代码是将ul层的最左端与ul层的父层(div层)的平分线对齐;而li层的css代码则是将li层的平分线与ul层的最左端(也是div层的平分线)对齐,从而实现li层的居中。
代码如下:
<body>
<div class="container">
<ul>
<li><a href="#">1</a></li>
<li><a href="#">2</a></li>
<li><a href="#">3</a></li>
</ul>
</div>
</body>
css代码:
<style>
.container{
float:left;
position:relative;
left:50%
}
.container ul{
list-style:none;
margin:0;
padding:0;
position:relative;
left:-50%;
}
.container li{float:left;display:inline;margin-right:8px;}
</style>
这个水平居中是怎么实现的?还是没有理解啊,这个父元素left:50%和子元素left:50%到底是怎么偏移的啊,正50%是相对父亲元素向右偏移吧,那么这个是怎么实现居中的?求大佬画图解释下!
楼上的图没毛病,首先你需要理解relative。
relative是相较于dom本身定位。
而父元素的float的作用是使父元素脱离文档流,也就是说在忽略body的影响下使父元素的left: 0,top: 0;
此时在结合relative你应该就能明白为什么50%之后,dom处于居中状态了