CSS中水平垂直居中

2020-04-15  本文已影响0人  好好学习__天天向上

定义一个需要垂直居中的div元素,他的宽度和高度均为300px,背景色为橙色。

margin: 0 auto;/*水平居中*/ 

第一种方法:可以使用margin-top把div往上偏移

<!DOCTYPE html>

<html lang="en">

<head><meta charset="UTF-8">

<title>index</title>

<style>

 html,body { 

 width: 100%;/*他们默认是为0*/

 height: 100%; 

 margin: 0; /* 把margin和padding设置为0,如果不清除默认样式的话,会出现滚动条*/

 padding: 0;

 .content {

 width: 300px; 

 height: 300px;

 background: orange;

 margin: 0 auto;/*水平居中*/ 

 position: relative;/*脱离文档流*/

 top: 50%;/*偏移 由于不知道父元素(即body)的具体高度,所以,是不可以通过具体像素来偏移的,而应该用百分数*/ 

 margin-top: -150px;/*负数向上偏移*/

}

</style>

</head>

<body>

<div class="content"></div>

</body>

</html>

注:1、由于position的值默认为static(静止的、不可以移动的),元素在文档流里是从上往下、从左到右紧密的布局的,我们不可以直接通过top、left等属性改变它的偏移。

2、所以,想要移动元素的位置,就要把position设置为不是static的其他值,如relative,absolute,fixed等。

3、relative是不会使元素脱离文档流的,absolute和fixed则会。也就是说,relative会占据着移动之前的位置,但是absolute和fixed就不会。

第二种方法:

CSS3的transform属性也可以实现这个功能,通过设置div的transform: translateY(-50%),意思是使得div向上平移(translate)自身高度的一半(50%)

.content { 

 width: 300px; 

 height: 300px;

 background: orange;

 margin: 0 auto;/*水平居中*/

 position: relative; top: 50%;/*偏移*/ 

 transform: translateY(-50%);

}

第三种方法:flex弹性布局

<style>

 html,body { 

 width: 100%;

 height: 100%;

 margin: 0; padding: 0;

}

    body {       

     display: flex;     

       align-items: center;/*定义body的元素垂直居中*/     

       justify-content: center;/*定义body的里的元素水平居中*/

}      

  .content {  

     width: 300px;        

    height: 300px;         

   background: orange;

}

</style>

上一篇 下一篇

猜你喜欢

热点阅读