css居中
2018-04-18 本文已影响3人
xhbisme
假设我们有这么一段代码,再easy不过的结构:
![](https://img.haomeiwen.com/i11691158/a828965bc84adb44.png)
看起来是这样的:
![](http://upload-images.jianshu.io/upload_images/11691158-ae52c64cf476262c.png)
水平居中(方案从来不止一个):
方案一:改动最小,借助div的块级元素特点,主要还是margin-left 和 margin-right 在设置为auto的时候,取值为0,互相牵制。
![](http://upload-images.jianshu.io/upload_images/11691158-a680b94c4cd23624.png)
方案二:如果内部元素是行内元素怎么办呢?这就更简单了。
![](http://upload-images.jianshu.io/upload_images/11691158-d0df0d4afe86c283.png)
方案三:这两种方法都太常用了,如果我有元素要脱离愿来的dom渲染层怎么破?
![](http://upload-images.jianshu.io/upload_images/11691158-209d16808cb89d09.png)
方案四:你说的这些我都用过无数次了,太low了,来点有技术含量的ok?
![](http://upload-images.jianshu.io/upload_images/11691158-a2badb69e8df3d84.png)
方案五:你以为flex应该这么用吗?太天真。。。center才是真正的居中。
![](http://upload-images.jianshu.io/upload_images/11691158-d0de2ee5043204c0.png)
垂直居中(方案也不止一个):
方案一:利用行内元素的特点,vertical-align + line-height 。
![](http://upload-images.jianshu.io/upload_images/11691158-dd9ecbb7f3bba770.png)
方案二:绝对定位。感觉绝对定位很灵活啦,但有一个缺点,它会脱离原来的dom层,使得父级元素塌陷。
![](http://upload-images.jianshu.io/upload_images/11691158-2f82ba56f4b901f5.png)
方案三:flex布局,正解:
![](http://upload-images.jianshu.io/upload_images/11691158-ec397bd717c1d728.png)
方案四:还是flex布局,歪解:虽然达到了同样的效果,但,我们改变了子元素层的对其方式,只单个元素可行。
![](http://upload-images.jianshu.io/upload_images/11691158-2cda16cdc305069e.png)
居中垂直对齐(其实这个可以由上边的组合而来)
方案一:绝对定位
![](http://upload-images.jianshu.io/upload_images/11691158-1a0ae2d28ac0f9a0.png)
方案二:flex布局,正解:
![](http://upload-images.jianshu.io/upload_images/11691158-d94331be443a5102.png)
方案三:flex布局,歪解:(如果单纯的为了解决居中而出现这种组合,那你真的很单纯。。)
![](http://upload-images.jianshu.io/upload_images/11691158-e79aedc8973b2c7c.png)
方案四:针对行内元素:
![](http://upload-images.jianshu.io/upload_images/11691158-3be033ec96ba27c2.png)