今天来总结一下使用css来使元素居中的方法,首先说说使元素居中的基本思路
1、水平居中:margin-left=margin-right;
2、竖直居中:margin-top=margin-bottom
块元素居中
1、div水平居中
![](https://img.haomeiwen.com/i3132358/1f46f297b66b5e83.png)
很自然,这个div通过设置左右外边距auto的方式实现了居中
![](https://img.haomeiwen.com/i3132358/4707f697d1b3a67c.png)
2、div竖直居中
为了使效果更加明显,使用两个div来嵌套,这里要竖直居中的是子元素——“son”
![](https://img.haomeiwen.com/i3132358/7616040d102ad103.png)
![](https://img.haomeiwen.com/i3132358/3fec9e39705d0e00.png)
![](https://img.haomeiwen.com/i3132358/fb58c4d07919815c.png)
实现的效果
1、设置父元素的height=line-height;
2、设置子元素的display为inline-block
3、设置子元素的vertical-align为middle
这样就完美地使div竖直居中了
这时候我忽然想让他水平居中和竖直居中一起实现,我加上margin:0 auto;
![](https://img.haomeiwen.com/i3132358/002a21e3ae2745f0.png)
发现这招怎么不管用了,水平居中并没有实现,这是出了什么问题呢?
别忘了此时他是一个inline-block,既具有block的宽度高度特性又具有inline的同行特性。
既然如此,父元素的宽度为200px,子元素的宽度为100px,经过复杂的计算。。。。
设置margin-left:50px就可以了
![](https://img.haomeiwen.com/i3132358/22da8a8b2b920115.png)
行内元素居中
水平居中
![](https://img.haomeiwen.com/i3132358/4e312e6cdeb8a838.png)
![](https://img.haomeiwen.com/i3132358/7259d227b18e15cc.png)
![](https://img.haomeiwen.com/i3132358/a1ebab9d5f078ec9.png)
竖直居中
![](https://img.haomeiwen.com/i3132358/442a22ab4787f954.png)
添加上lineheight:200px;
![](https://img.haomeiwen.com/i3132358/954539447177d2a8.png)
用a元素试试,同样一步到位,没毛病
![](https://img.haomeiwen.com/i3132358/718b021d953fc1f0.png)
s,i,b等标签同理
如果将内容替换为图片呢
![](https://img.haomeiwen.com/i3132358/f99441e8dbf4fcad.png)
![](https://img.haomeiwen.com/i3132358/62c9e429481bf51e.png)
![](https://img.haomeiwen.com/i3132358/1fc394cc1df09949.png)
效果并不是特别好,竖直居中出了问题
什么鬼?我只是想居个中而已呀?
![](https://img.haomeiwen.com/i3132358/2cfce4112f610b6f.jpg)
img可以设置width和height,是一个行内块元
加上块元素的设置居中方法
![](https://img.haomeiwen.com/i3132358/70f58c82f2e71725.png)
![](https://img.haomeiwen.com/i3132358/40a1a79441b3a5bc.png)
忽然想到之前做过的一些注册界面,如果每一行都这么做是不是会很简单呢?
![](https://img.haomeiwen.com/i3132358/7b4bb5d125813985.png)
![](https://img.haomeiwen.com/i3132358/109930c9bdff02cb.png)
![](https://img.haomeiwen.com/i3132358/d3143821e576473b.png)
目前只是为了调试居中的效果,并没有写过多的样式,但是居中的效果还是可以的
定位居中
直接上代码
![](https://img.haomeiwen.com/i3132358/b9218f3de5c1a434.png)
![](https://img.haomeiwen.com/i3132358/3ffd79cd0275867f.png)
![](https://img.haomeiwen.com/i3132358/7edd9eb954f2cb3d.png)
![](https://img.haomeiwen.com/i3132358/9be34280b79198d7.png)
当然改为绝对定位也是可以的,但是要先在css中去掉标签自带的margin和padding,否则定位回受到影响
![](https://img.haomeiwen.com/i3132358/b1657d6a97586ede.png)
background-image也想要居中?
![](https://img.haomeiwen.com/i3132358/8640e771c4c06212.png)
Q:如果是一个行内元素添加背景呢?
A:设置display属性为inline—block不就可以了
![](https://img.haomeiwen.com/i3132358/5a66592046608cf0.png)
![](https://img.haomeiwen.com/i3132358/75908da6b6a20fcc.png)
既然不能通过text-align来设置水平居中,那就只能向margin低头了
添加margin:50px;
![](https://img.haomeiwen.com/i3132358/6e58c6fcae8b0421.png)
最后做个小结:
![](https://img.haomeiwen.com/i3132358/cc50687ca680f8ee.png)
网友评论