css元素垂直居中的6种方法
2017-05-01 17:44
645 查看
转自http://blog.csdn.net/wolinxuebin/article/details/7615098
利用CSS进行元素的水平居中,比较简单,行级元素设置其父元素的text-align center,块级元素设置其本身的left 和 right margins为auto即可。本文收集了六种利用css进行元素的垂直居中的方法,每一种适用于不同的情况,在实际的使用过程中选择某一种方法即可。
1、Line-Height Method
试用:单行文本垂直居中
代码:html
css
优点:
1. 同时支持块级和内联极元素
2. 支持所有浏览器
缺点:
1. 只能显示一行
2. IE中不支持等的居中
要注意的是:
1. 使用相对高度定义你的 height 和 line-height
2. 不想毁了你的布局的话,overflow: hidden 一定要
垂直居中一张图片,代码如下
html
css
2、CSS Table Method
适用:通用
代码:
html
css
低版本 IE fix bug:
可惜IE不支持这些属性,不过在其他浏览器上显示效果非常完美。
要注意的是:和一个合法的td元素必须在table里一样,display: table-cell 元素必须作为 display: table 的元素的子孙出现。
优点:
就是表格,效果和表格一模一样
缺点:
IE下无效
3、Absolute Positioning and Negative Margin
适用:块级元素
代码:
html
css
4、 Absolute Positioning and Stretching
适用:通用,但在IE版本低于7时不能正常工作,demo
代码:
html
css
子div位于父div中,其top,bottom,left和right的值都设置为0。因为子div的width和height被设置得小于父div的width和height,所以这种定位是不可能的,将子div的所有4个边距设置为自动导致上下左右相等的边距,这会导致子图层水平和垂直居中。
5、Equal Top and Bottom Padding
适用:通用
代码:
html
css
优点:
1. 同时支持块级和内联极元素
2. 支持非文本内容
3. 支持所有浏览器
缺点:
容器不能固定高度
6、Floater Div
适用:通用,demo
代码:
html
css
以上就是六种方法,可以在实际的使用过程中合理选择,参考文章《vertical-centering》。
利用CSS进行元素的水平居中,比较简单,行级元素设置其父元素的text-align center,块级元素设置其本身的left 和 right margins为auto即可。本文收集了六种利用css进行元素的垂直居中的方法,每一种适用于不同的情况,在实际的使用过程中选择某一种方法即可。
1、Line-Height Method
试用:单行文本垂直居中
代码:html
<div id="parent"> <div id="child">Text here</div> </div>
css
.child{ height: 4em; line-height: 4em; overflow: hidden; }
优点:
1. 同时支持块级和内联极元素
2. 支持所有浏览器
缺点:
1. 只能显示一行
2. IE中不支持等的居中
要注意的是:
1. 使用相对高度定义你的 height 和 line-height
2. 不想毁了你的布局的话,overflow: hidden 一定要
垂直居中一张图片,代码如下
html
<div id="parent"> <img src="image.png" alt="" /> </div>
css
#parent { line-height: 200px; } #parent img { vertical-align: middle; }
2、CSS Table Method
CSS 提供一系列diplay属性值,包括 display: table, display: table-row, display: table-cell 等,能把元素当作表格单元来显示。这是再加上 vertical-align: middle, 就和表格中的 valign="center" 一样了。
适用:通用
代码:
html
<div id="parent"> <div id="child">Content here</div> </div>
css
#parent {display: table;} #child { display: table-cell; vertical-align: middle; }
低版本 IE fix bug:
#child { display: inline-block; }
可惜IE不支持这些属性,不过在其他浏览器上显示效果非常完美。
要注意的是:和一个合法的td元素必须在table里一样,display: table-cell 元素必须作为 display: table 的元素的子孙出现。
优点:
就是表格,效果和表格一模一样
缺点:
IE下无效
3、Absolute Positioning and Negative Margin
absolute positioning and negative margin demo
适用:块级元素
代码:
html
<div id="parent"> <div id="child">Content here</div> </div>
css
#parent {position: relative;} #child { position: absolute; top: 50%; left: 50%; height: 30%; width: 50%; margin: -15% 0 0 -25%; }
4、 Absolute Positioning and Stretching
适用:通用,但在IE版本低于7时不能正常工作,demo
代码:
html
<div id="parent"> <div id="child">Content here</div> </div>
css
#parent {position: relative;} #child { position: absolute; top: 0; bottom: 0; left: 0; right: 0; width: 50%; height: 3 b5e1 0%; margin: auto; }
子div位于父div中,其top,bottom,left和right的值都设置为0。因为子div的width和height被设置得小于父div的width和height,所以这种定位是不可能的,将子div的所有4个边距设置为自动导致上下左右相等的边距,这会导致子图层水平和垂直居中。
5、Equal Top and Bottom Padding
适用:通用
代码:
html
<div id="parent"> <div id="child">Content here</div> </div>
css
#parent { padding: 5% 0; } #child { padding: 10% 0; }
优点:
1. 同时支持块级和内联极元素
2. 支持非文本内容
3. 支持所有浏览器
缺点:
容器不能固定高度
6、Floater Div
适用:通用,demo
代码:
html
<div id="parent"> <div id="floater"></div> <div id="child">Content here</div> </div>
css
#parent {height: 250px;} #floater { float: left; height: 50%; width: 100%; margin-bottom: -50px; } #child { clear: both; height: 100px; }
以上就是六种方法,可以在实际的使用过程中合理选择,参考文章《vertical-centering》。
相关文章推荐
- CSS 元素垂直居中的 6种方法
- CSS 元素垂直居中的 6种方法
- CSS 元素垂直居中的 6种方法
- CSS 元素垂直居中的 6种方法
- CSS元素垂直居中的6种方法
- CSS 元素垂直居中的 6种方法
- CSS 元素垂直居中的 6种方法
- CSS 元素垂直居中的 6种方法
- 【个人笔记重点,不作为参考】主题:CSS 元素垂直居中的 6种方法
- CSS 元素垂直居中的 6种方法
- CSS 元素垂直居中的 6种方法
- [转]-CSS 元素垂直居中的6种方法
- CSS 元素垂直居中的 6种方法
- CSS 元素垂直居中的 6种方法
- CSS 元素垂直居中的 6种方法
- CSS 元素垂直居中的 6种方法
- CSS 元素垂直居中的 6种方法(转)
- CSS 元素垂直居中的 6种方法
- CSS 元素垂直居中的 6种方法
- CSS 元素垂直居中的 6种方法