HOME/Articles/

CSS居中

Article Outline

CSS居中

<!--more-->

#居中的分类

###一,块级元素内的内联元素水平居中,text-align: center;

  • div.box里面有文字,让文字在盒子内居中

    <style type="text/css">
      .box {
          border: 1px solid red;
          text-align: center;
      }
    </style>
    <div class="box">
      hello deejay
    </div>
  • 盒子内部是按钮的情况

    <style type="text/css">
      .box {
          border: 1px solid red;
          text-align: center;
      }
    

</style>

<div class="box"> <a href="#">click me!</a> <a href="#">click me!</a> </div> ###二,固定宽度的块级元素水平居中,margin:0 auto <style type="text/css"> .box { border: 1px solid red; text-align: center; /让a链接也居中/ } .box2 { width: 500px; border: 1px solid green; margin: 0 auto; /固定宽度的块级元素居中/ } </style> <div class="box"> <div class="box2"> <a href="#">Click me!</a> </div> </div> ```

###三,盒子内部的文字垂直居中

可以设置padding,使得上下padding相等,就做到了垂直居中

<style type="text/css">
    .box{
        border: 1px solid red;
        padding: 30px 0; /*不设置高度,box里面的内容不管有多少行都是垂直居中的,只要设置上下padding相等。*/
    }
</style>
<div class="box">
    <p>hello deejay ello deejay</p>
    <p>hello deejay ello deejay</p>
    <p>hello deejay ello deejay</p>
</div>
  • 针对单行文本的垂直居中 可以通过设置height=line-height来实现单行文本的居中

###四,绝对水平垂直居中 对于没有固定的宽高的父元素要进行子元素的垂直水平居中,可以采用绝对定位,left: 50%,结合负的margin-left来进行定位。

<style type="text/css">
    *{
        margin: 0;          /*初始化样式,不然body会有默认margin等*/
        padding: 0;
    }
    body,html{             /*box要宽高都设置100%全屏的话,要将其父元素都设置成宽高100%,本例中就是body和html*/
        width: 100%;
        height: 100%;
    }
    .box{
        width: 100%;
        height: 100%;
        background: rgba(0,0,0,0.4);
        position: relative;
    }
    .box2{
        width: 500px;;
        height: 400px;
        background: green;
        position: absolute;
        left: 50%;
        margin-left: -250px;  /*自身width的一半*/
        top: 50%;
        margin-top: -200px;  /*同理,自身height的一半*/

    }
</style>
<div class="box">
    <div class="box2">
        <h1>hello,deejay</h1>
    </div>
</div>
  • 上述例子中,子元素的宽高并没有固定的情况:

可以使用CSS3的属性transform: translate(-50%,-50%);来进行居中

<style type="text/css">
    *{
        margin: 0;          /*初始化样式,不然body会有默认margin等*/
        padding: 0;
    }
    body,html{             /*box要宽高都设置100%全屏的话,要将其父元素都设置成宽高100%,本例中就是body和html*/
        width: 100%;
        height: 100%;
    }
    .box{
        width: 100%;
        height: 100%;
        background: rgba(0,0,0,0.4);
        position: relative;
    }
    .box2{
        /*width: 500px;*/
        /*height: 400px;*/
        background: green;
        position: absolute;
        transform: translate(-50%,-50%);
        left: 50%;
        /*margin-left: -250px;  !*自身width的一半*!*/
        top: 50%;
        /*margin-top: -200px;  !*同理,自身height的一半*!*/

    }
</style>
<div class="box">
    <div class="box2">
        <h1>hello,deejay</h1>
    </div>
</div>