CSS垂直居中

CSS垂直居中


这里主要说了四种垂直居中的方法

  1. 设置line-height和height为相同的值;
  2. 利用table-cell并设置vertical-align;
  3. 利用position设置;
  4. 利用position:absolute和css3 transform属性进行居中;

另外还有一种是利用padding-top和padding-bottom, 这种写法, 就不贴代码了
下面一一介绍

一. 首先说一下上述第一种(line-height)

下面是对应的css样式;

div.wrap.lh {
  height: 200px;
  line-height: 200px;
  overflow: hidden;
  background-color: #ffccff;
  /*用于水平居中**/
  text-align: center;
}
/*如果内含图片, 并需要图片也居中, 请加上此句样式**/
div.wrap.lh img{
  vertical-align: middle;
}

对应的测试html

开上缴费卡就是快机费

注: 此种写法, 只适合用于内容为单行并且都是行内元素, 当内容出现块元素就不适用了

二. 利用table-cell并设置vertical-align

样式如下

div.wrap.table {
  display: table;
  height: 300px;
}
div.wrap.table > * {
  vertical-align: middle;
  display: table-cell;
  /**下面非必须, 为了样式好看才加的**/
  border: 1px solid #ff0099;
  background-color: #ffccff;
  padding: 0 20px;
}
/**下面非必须, 为了样式好看才加的**/
div.wrap.table > * + * {
  border-left: none;
}

对应测试html

现在我们要使这段文字垂直居中显示!
      div.table-wrap{
        display: table;
        height: 60px;
      }
      div.table-wrap *{
        vertical-align: middle;
        display: table-cell;
        border: 1px solid #ff0099;
        background-color: #ffccff;
      }
    

注: 此种写法, 只适合用于IE8以上的版本, IE6/7不支持display:table这样的样式, 所以没办法支持这种写法

三. 利用position设置

CSS及HTML如下

div.wrap.pos {
  border: 1px solid #FF0099;
  background-color: #FFCCFF;
  width: 760px;
  height: 200px;
  position: relative;
}
div.wrap.pos .sub {
  position: absolute;
  border: 1px solid #000;
  top: 50%;
}
div.wrap.pos .sub .content {
  border: 1px solid #ff6600;
  position: relative;
  top: -50%;
}
深刻的发就是开的房间卡死金风科技奥
斯卡放假额我开房间看到积分卡圣诞节

注: 此种写法, 只适合用于IE6/7, 其他标准浏览器均不支持此种写法

四. 利用position:absolute和css3 transform属性进行居中

div.wrap.trans {
  position: relative;
  height: 300px;
  border: 1px solid #FF0099;
  background-color: #FFCCFF;
  width: 760px;
}
div.wrap.trans .content {
  position: absolute;
  /*水平-垂直居中*/
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
}
深刻的发就是开的房间卡死金风科技奥

斯卡放假额我开房间看到积分卡圣诞节

注: 此种写法, 只适合用于标准浏览器和IE9+, 即支持transform/translate属性的浏览器

五. 下面整合上述二/三两种写法, 组合一种适合所有主流浏览器的写法

代码如下

div.wrap.table_pos {
  display: table;
  *position: relative;
  border: 1px solid #FF0099;
  background-color: #FFCCFF;
  width: 760px;
  height: 200px;
}
div.wrap.table_pos .sub {
  display: table-cell;
  vertical-align: middle;
  *position: absolute;
  *top: 50%;
}
div.wrap.table_pos .sub .content {
  *position: relative;
  *top: -50%;
}
深刻的发就是开的房间卡死金风科技奥

斯卡放假额我开房间看到积分卡圣诞节

注: 此种写法, 支持IE6+/FF/Chrome/Opera/Safari等所有主流浏览器

最后贴出上述所有写法的测试代码



  
    
    
    
  
  
    
啊开始的房间卡上缴费卡就是快递放假啊快速减肥卡刷卡积分卡手机费
现在我们要使这段文字垂直居中显示!
          div.table-wrap{
            display: table;
            height: 60px;
          }
          div.table-wrap *{
            vertical-align: middle;
            display: table-cell;
            border: 1px solid #ff0099;
            background-color: #ffccff;
          }
        
深刻的发就是开的房间卡死金风科技奥
斯卡放假额我开房间看到积分卡圣诞节
深刻的发就是开的房间卡死金风科技奥

斯卡放假额我开房间看到积分卡圣诞节

深刻的发就是开的房间卡死金风科技奥

斯卡放假额我开房间看到积分卡圣诞节

你可能感兴趣的:(CSS垂直居中)