CSS垂直居中方法总结

一、把容器当作表格单元

<div class="middle-demo1">
    <button>按钮</button>
</div>
.middle-demo1{
    display: table-cell;
    height: 100px;  //可以动态改变高度,这里只是演示
    vertical-align: middle;
    border: 1px solid #666;
}

浏览器支持情况:

http://caniuse.com/#search=table-cell

二、固定高度的元素垂直居中

<div class="middle-demo2">
    <div class="g-box"></div>
</div>
.middle-demo2{
    position: relative;
    width: 200px;
    height: 200px;
    border: 1px solid #666;
}
.g-box{
    position: absolute;
    top: 50%;
    width: 100px;
    height: 100px;
    margin-top: -50px;
    background-color: deepskyblue;
}

或者

.g-box{
     position: absolute;
     top: 50%;
     width: 100px;
     height: 100px;
     -webkit-transform: translateY(-50px);
     -moz-transform: translateY(-50px);
     -ms-transform: translateY(-50px);
     -o-transform: translateY(-50px);
     transform: translateY(-50px);
     background-color: deepskyblue;
}

说明:要垂直居中的元素(g-box)必须是固定高度(js动态计算设置除外)。

transform的浏览器支持情况http://caniuse.com/#search=transform

三、固定高度的元素垂直居中

<div class="middle-demo3">
    <div class="g-box2"></div>
    <div class="g-box3"></div>
</div>

g-box3是需要垂直居中的元素

.middel-demo3{
     position: relative;
     width: 200px;
     height: 200px;
     border: 1px solid #666;
}
.g-box2{
     height: 50%;
     margin-bottom: -50px;
}
.g-box3{
     height: 100px;
     background-color: deepskyblue;
}

说明: 要垂直居中的元素(g-box3)必须是固定高度。

四、不定高元素垂直居中

<div class="middle-demo4">
    <div class="g-box4"></div>
</div>
.middle-demo4{
    position: relative;
    width: 200px;
    height: 200px;
    border: 1px solid #666;
}
.g-box4{
    position: absolute;
    top: 0;
    bottom: 0;
    margin-top: auto;
    margin-bottom: auto;
    width: 100px;
    height: 100px;
    background-color: deepskyblue;
}

说明: 要垂直居中的元素(g-box4)可以不固定高度,浏览器支持情况IE8+,其他浏览器支持较好

五、单行文本垂直居中

<div class="middle-demo5">
    <span>单行文本</span>
</div>
.middle-demo5{
    height: 100px;
    line-height: 100px;
    border: 1px solid #666;
}

说明: 对内部的块状元素无效

六、容器定高或者不定高,多行文本垂直居中

<div class="middle-demo6">
    <p>单行文本</p>
    <p>多行文本</p>
</div>
.middle-demo6{
    display: table-cell;
    vertical-align: middle;
    height: 200px;      //容器可以不定高,这里只是演示
    border: 1px solid #666;
}

七、vertical-align实现行内元素垂直居中

<div class="middle-demo7">
    <span class="g-fix"></span>
    <button class="g-box7">行内元素</button>
</div>
.middle-demo7{
     position: relative;
     width: 200px;
     height: 200px;
     border: 1px solid #666;
}
.g-fix{
    display: inline-block;
    width:0;
    height: 100%;
    vertical-align: middle;
}

说明: 浏览器支持情况http://caniuse.com/#search=inline-block

时间: 2024-08-02 06:08:34

CSS垂直居中方法总结的相关文章

最常用的css垂直居中方法

css垂直居中一直以来都是一个被大家说烂了的话题,翻来覆去的炒.不过说实话,正是因为css没有提供标准的垂直居中方法(不过在css3中已经有了相关规范),所以大家才会对它进行专门的研究.这研究来研究去,垂直居中的方法比水平居中都要多了.但又说回来,各种方法人云亦云,不同的方法对于不同层次的人理解起来又有不同,用处也不同.本文结合技术实现的复杂度.理解性的难易度.以及大多数人的接触顺序对常用的垂直居中方法进行分等级的系统讲解,希望能对读者的工作和学习有所帮助. OK,闲话扯了一堆,下面开始正文,先

CSS垂直居中方法整理

CSS定位中常常用到垂直居中,比如覆盖层上的弹框. 兼容性比较好的方法: <!DOCTYPE html PUBliC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head&g

CSS垂直居中方法

Hack技术就可以啊!所以在这里我还要啰嗦两句,CSS中的确是有vertical-align属性,但是它只对(X)HTML元素中拥有valign特性的元素才生效,例如表格元素中的<td>.<th>.<caption>等,而像<div>.<span>这样的元素是没有valign特性的,因此使用vertical-align对它们不起作用. 一.单行垂直居中 如果一个容器中只有一行文字,对它实现居中相对比较简单,我们只需要设置它的实际高度height和

css垂直居中方法(二)

第四种方法: 这个方法把一些div的显示方式设置为表格,因此我们可以使用表格的vartial-align属性. 代码如下: <!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> <style type="text/css"> #wrapper {

css垂直居中方法(一)

第一种方法:首先用margin:0 auto实现水平居中,然后设置position:relative,设置top为50%(父元素高度的50%),然后设置margin-top:-150px(设置负值是因为要向上移动div,150px是div的height),代码如下: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>i

CSS垂直居中布局方法

整理一下个人认为比较好的CSS垂直居中的布局方法. 1. 绝对定位+负值margin. //长宽的设置只是为了说明,实际使用没有限制 <div id="container-outer"> <div id="container-inner"></div> </div> //CSS #container-outer { width: 200rem; height: 100rem; position: relative; }

《转》CSS元素水平垂直居中方法总结(主要对大漠以及张鑫旭博客所述方法进行了归纳)

转自大地Dudy的CSS元素水平垂直居中方法总结(主要对大漠以及张鑫旭博客所述方法进行了归纳) 本文主要是对主流居中方法进行了归纳,有些地方甚至就是把别人的代码直接复制过来的,没有什么自己的东西,除了大漠以及张鑫旭的方法外,还有来自司徒正美.怿飞博客的几个方法 以下方法,由于测试环境的原因,IE系列只测试了IE9和IE6,以下所说的IE的支持性只是相对于IE9和IE6来说的: 一.元素的水平垂直居中: 第一种方法: <!doctype html> <html lang="en&

CSS水平垂直居中方法总结

部分HTML代码如下: <div class="wrap block"> <div class="block-center">块儿居中</div> </div> <div class="wrap inline"> <span class="inline-center">内联居中</span> </div> 一.absolute 拔河

css垂直居中的6种方法

1.通过verticle-align:middle实现CSS垂直居中. 通过vertical-align:middle实现CSS垂直居中是最常使用的方法,但是有一点需要格外注意,vertical生效的前提是元素的display:inline-block. 1 .parents{ 2 background:#ff6600; 3 height:300px; 4 } 5 .children{ 6 background:#ff0000; 7 widht:50%; 8 height:50%; 9 disp