在css中,元素居中显示,是基础也是一个小难点。咱们常常不知为什么老是不能把元素放在咱们想放的地方。如今我们就来总结一下一些常见的居中。至少能让咱们解决平时开发的问题。css
咱们一个一个来看,一个一个理解,解决。html
先来一段html代码:浏览器
<div class="parent"> <div class="child"> <p>测试文本 </p> </div> </div>
而后css文件中有两种处理方法post
.parent { text-align: center; }
或者测试
.child { width: 100px; margin: 0 auto; }
这两种方法均可以让元素水平居中显示。可是请注意,一个是设置的parent一个是设置的child。那他们的区别或者说优劣如何呢?
个人理解是:code
第二种是必需要设置宽度,有的同窗没有设置宽度会发现margin 0 auto 不起做用。其实并不是这样。只是他的默认宽度每每是继承父元素的宽度。因此看不到效果。htm
html代码继承
测试文本 开发
css文件处理方法:it
.parent { line-height:200px; }
或者
. parent { display: table; height: 200px; } . child { display: table-cell; vertical-align: middle; }
咱们依旧能够看到,第一种只设置了parent元素,第二种设置了parent和child
咱们能够这样理解这两种方法:
ps:vertical-align还有不少用法,这里再也不细讲,比较多。可是要注意的是,不少用法会出现浏览器不兼容的问题bug较多。因此注意多浏览器测试。笔者上面的方法通过测试。是兼容的。
html代码:
<div class="parent"> <div class="child"> <p>测试文本</p> </div> </div>
css文件内的处理方法
.parent { text-align: center; line-height: 200px; }
或者
.parent { text-align: center; display: table; height: 200px; width: 500px; } .child { width: 100px; display: table-cell; vertical-align: middle; }
再或者
.parent { line-height: 200px; } .child { width: 100px; margin: 0 auto; }
三种各有优劣势。须要你们理解块级元素,行级元素,而后根据业务须要进行选择。其实只要理解底层基本的东西。还有很多的奇淫技巧能够达到效果。
下面是这三种方法的说明:
咦,两两组合不该该四种吗。这里为什么只有三种。是由于将parent元素设置为table和margin的那个组合不能达到效果。由于table-cell是inline-block级别的元素,margin没法操做种级别的。margin的喜爱是block级。
正如以前所说,还有不少方法能够干这些事。好比不少人喜欢的postion,它实际上是一个定位的神器。只是对于居中这些我用position很少。这里就只举一个例子吧
对于上面的html代码
css里面咱们能够这样
.parent { width: 400px; height: 400px; } .child { position: relative; top: 50%; left: 50%; }
position的relative是子元素相对于父元素的位置。这里设置的top: 50%;left: 50%;准确位置是子元素左上角和父元素的左上角。50%是相对于父元素的宽高。其实并没彻底居中,有必定的偏差。