使元素水平和垂直居中

 

一、对行级元素水平垂直居中

  text-align:center;

         heiht与line-height的值一样

 

二、对块级元素垂直居中对齐

(1)flex布局

.parent{
    display: flex;
    justify-content: center;
    align-items:center;
}

(2)父元素高度固定  

  (2.1) position  子元素已知宽度 

      父元素设置为:position: relative; 
      子元素设置为:position: absolute; 
                     距上50%,据左50%,然后减去元素自身宽度的距离就可以实现 (子元素宽高已知)

.parent{
    position: relative;
    width: 300px;
    height: 300px;
    border: solid 1px yellow;
}
.Child1{
    position: absolute;
    left: 50%;
    top:50%;
    margin-left: -100px;
    margin-top: -50px;
    width: 200px;
    height: 100px;
    background: blue;
} 

 

  (2.2)position transform  子元素宽高位置

.Div1{
    position: relative;
    width: 300px;
    height: 300px;
    border: solid 1px yellow;
}
.Child1{
    position: absolute;
    left: 50%;
    top:50%;
    transform:translate(-50%,-50%);
    background: blue;
    
}

 

  (2.3)利用CSS的margin设置为auto让浏览器自己帮我们水平和垂直居中。

.Div2{
    width: 300px;
    height: 300px;
    border: solid 1px green;
    position: relative;
}
.Child2{
    position: absolute;
    left: 0;
    right: 0;
    top: 0;
    bottom: 0;
    margin: auto;
    width: 100px;
    height: 100px;
    background: red;
}

 

(3)父元素高度不固定

   父元素的padding-top和padding-bottom一样

 

三、浮动元素水平垂直居中

#con{
    width: 200px;
    height: 100px;
    background: #ee2c2c;
}
#son{
    width: 50px;
    height: 50px;
    background: #008000;
    float: left;
}

<div id='con'>
    <div id='son'></div>
</div>

解决方法:

  垂直方向居中直接在父元素设置:display: table-cell;vertical-align: middle;

   以下是水平方向居中的几种方法:

(1)水平居中需要在浮动元素外面再嵌套一层div,

#container{
    width: 200px;
    height: 100px;
    background: #ee2c2c;
    display: table-cell;     //垂直居中
    vertical-align: middle;
}
#content{
    width: 50px;
    height: 50px;
    margin: 0 auto;        //水平居中     
}
#son{
    width: 50px;
    height: 50px;
    background: #008000;
    float: left;
}
<div id='container'>
    <div id='content'>
        <div id='son'></div>
    </div>
</div>

 

(2)宽度不固定的浮动元素------通过定位和left

          同样需要在浮动元素外面再嵌套一层div

#container{
    width: 200px;
    height: 100px;
    background: #ee2c2c;
    display: table-cell;
    vertical-align: middle;
}
#content{
    float: left;
    position: relative;
    left: 50%;
}
#son{
    background: #008000;
    float: left;
    position: relative;
    left: -50%;
}

 

posted @ 2018-04-23 18:00  安xiao曦  阅读(211)  评论(0编辑  收藏  举报