CSS元素或者图片水平垂直居中的几种用法

2021-03-09  本文已影响0人  赵Wayne

元素的水平垂直居中经常在项目中用到,根据元素有无固定尺寸分两种情况进行下汇总,直接上代码复制粘贴即可

【1】子元素尺寸固定

(1)定位法

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>水平垂直居中</title>
<style>
    * {
      margin: 0;
      padding: 0;
    }  
    .father{
        width: 100%;
        height: 100vh;
        background-color: green;
    } 
    .son{
        width: 200px;
        height: 200px;
        background-color: red;
        position: absolute;
        left: 50%;
        top: 50%;
        margin-top: -50px;
        margin-left: -50px;
    }
</style>
</head>
<body>
<div class="father">
<!-- 图片同样适用 -->
<!-- <img class="son" src="https://ss1.baidu.com/6ONXsjip0QIZ8tyhnq/it/u=1438475101,354016904&fm=58" alt="">  -->
    <div class="son">
    </div>  
</div>
</body>
</html>

(2)flex布局

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>水平垂直居中</title>
<style>
    * {
      margin: 0;
      padding: 0;
    }  
    .father{
        width: 100%;
        height: 100vh;
        background-color: green;
        display: flex;
        justify-content: center;
        align-items: center;
    } 
    .son{
        width: 200px;
        height: 200px;
        background-color: red;
    }
</style>
</head>
<body>
<div class="father">
<!-- 图片同样适用 -->
<!-- <img class="son" src="https://ss1.baidu.com/6ONXsjip0QIZ8tyhnq/it/u=1438475101,354016904&fm=58" alt="">  -->
    <div class="son">
    </div>  
</div>
</body>
</html>

【2】子元素尺寸不固定

(1)transform

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>水平垂直居中</title>
<style>
    * {
      margin: 0;
      padding: 0;
    }  
    .father{
        width: 100%;
        height: 100vh;
        background-color: green;
    } 
    .son{
        /*有尺寸但是不是固定的px*/
        width: 50%;
        height: 50%;
        position: absolute;
        left: 50%;
        top: 50%;
        transform: translate(-50%, -50%);
        background-color: red;
    }
</style>
</head>
<body>
<div class="father">
<!-- 图片同样适用 -->
<!-- <img class="son" src="https://ss1.baidu.com/6ONXsjip0QIZ8tyhnq/it/u=1438475101,354016904&fm=58" alt="">  -->
    <div class="son">
    </div>  
</div>
</body>
</html>

(2)使用伪元素 利用inline-block与vertical-align配合伪元素达到垂直居中

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>水平垂直居中</title>
<style>
*{
    margin:0;
    padding:0;
}
.father{ 
    width: 100%;
    height: 100vh;
    background-color: green
}
.father:before { 
    content: "";
    display: inline-block;
    height: 100%;
    vertical-align: middle;
    width: 0; 
}
.son{
    /*有尺寸但是不是固定的px*/
    width: 50%;
    height: 50%;
    position: absolute;
    left: 50%;
    top: 50%;
    transform: translate(-50%, -50%);
    background-color: red;
}
</style>
<body>
<div class="father">
    <!-- <img class="son" src="https://ss1.baidu.com/6ONXsjip0QIZ8tyhnq/it/u=1438475101,354016904&fm=58" alt=""> -->
    <div class="son">
    </div>  
</div>
</body>
</html>
上一篇下一篇

猜你喜欢

热点阅读