html中div内容居中的方法

Posted Mars-xq

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了html中div内容居中的方法相关的知识,希望对你有一定的参考价值。

一、div内容 居中的方法:

方法1:table-cell

div中的内容居中:不改变盒子尺寸。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        div 
            background-color: red;
            width: 300px;
            height: 300px;

            /*此元素会作为一个表格单元格显示
            (类似 <td> 和 <th>)*/
            display: table-cell;
            /*垂直居中 */
            vertical-align: middle;
            /*水平居中*/
            text-align: center;
        
    </style>
</head>

<body>
<div>
    <!--<span>垂直居中</span>-->
    <img src="../share_icon_sina_weibo.png" width="150" height="100"/>
</div>
</body>
</html>

方法2:display:flex

div中的内容居中:不改变盒子尺寸

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        div 
            background-color: red;
            width: 300px;
            height: 300px;

            display: flex; /**/
            justify-content: center; /*水平居中*/
            align-items: Center; /*垂直居中*/
        
    </style>
</head>

<body>
<div>
    <img src="../share_icon_sina_weibo.png" width="150" height="100"/>
    <!--<span>垂直居中</span>-->
</div>
</body>
</html>

方法3:绝对定位和负边距

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        div 
            background-color: red;
            width: 300px;
            height: 300px;

            position: relative;
        

        img 
            position: absolute;
            width: 150px;
            height: 100px;
            /*img左上角移动到html的中心*/
            top: 50%;
            left: 50%;
            /*img左上角向左上角分别移动自身的一半距离*/
            margin-left: -75px;
            margin-top: -50px;
            /*text-align: center;*/
        
    </style>
</head>
<body>
<div>
    <img src="../share_icon_sina_weibo.png"/>
    <!--<span>垂直居中</span>-->
</div>
</body>
</html>

方法4:绝对定位和0

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        div 
            background-color: red;
            width: 300px;
            height: 300px;

            position: relative;
        

        img 
            /*width: 50%;*/
            /*height: 50%;*/
            overflow: auto;
            margin: auto;
            position: absolute;
            top: 0;
            left: 0;
            bottom: 0;
            right: 0;
        
    </style>
</head>
<body>
<div>
    <img src="../share_icon_sina_weibo.png" width="150" height="100"/>
    <!--<span>垂直居中</span>-->
</div>
</body>
</html>

这种方法跟上面的有些类似,但是这里是通过margin:auto和top,left,right,bottom都设置为0实现居中,很神奇吧。不过这里得确定内部元素的高度,可以用百分比,比较适合移动端。

方法5:translate

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        div 
            background-color: red;
            width: 300px;
            height: 300px;

            position: relative;
        

        img 
            position: absolute;
            width: 150px;
            height: 100px;
            /*img左上角移动到html的中心*/
            top: 50%;
            left: 50%;
            /*img左上角向左上角分别移动自身的一半距离*/
            transform: translate(-50%, -50%);
            /*text-align: center;*/
        
    </style>
</head>
<body>
<div>
    <img src="../share_icon_sina_weibo.png"/>
    <!--<span>垂直居中</span>-->
</div>
</body>
</html>

这实际上是方法3的变形,移位是通过translate来实现的。

方法六:display:inline-block

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        div 
            background-color: red;
            width: 300px;
            height: 300px;

            text-align: center;
            font-size: 0;
        

        div:after 
            content: '';
            width: 0;
            height: 100%;
            display: inline-block;
            vertical-align: middle;
        

        img 
            vertical-align: middle;
            display: inline-block;
            font-size: 16px;
        
    </style>
</head>
<body>
<div>
    <img src="../share_icon_sina_weibo.png" width="150" height="100"/>
    <!--<span>垂直居中</span>-->
</div>
</body>
</html>

这种方法确实巧妙…通过:after来占位。

方法七:display:flex和margin:auto

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        div 
            background-color: red;
            width: 300px;
            height: 300px;

            display: flex;
             /*text-align: center;*/
        

        img 
            margin: auto;
        
    </style>
</head>
<body>
<div>
    <img src="../share_icon_sina_weibo.png" width="150" height="100"/>
    <!--<span>垂直居中</span>-->
</div>
</body>
</html>

方法八:display:-webkit-box

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        div 
            background-color: red;
            width: 300px;
            height: 300px;

            display: -webkit-box;
            -webkit-box-pack: center;
            -webkit-box-align: center;
            -webkit-box-orient: vertical;
            text-align: center
        

    </style>
</head>
<body>
<div>
    <img src="../share_icon_sina_weibo.png" width="150" height="100"/>
    <!--<span>垂直居中</span>-->
</div>
</body>
</html>

效果图:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZN7Lbw1N-1652420069573)(http://i4.buimg.com/1949/4f8cb3b41bed1792.png)]

参考:

纯CSS实现垂直居中的几种方法

如何让一个div居于页面正中间【实现方法】

注意:

以上不会改变div的尺寸:
以下使用padding会改变div的尺寸:

方法一

利用text-align属性将图片水平居中,然后设置padding-top的值使其垂直居中。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta name="author" type="Nancle from CAU CS101"/>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title>如何让img标签在div里左右上下居中</title>
    <script type="text/javascript">
    </script>
    <style type="text/css">
        #container1 
            /*  300*150*/
            width: 300px;
            height: 150px;
            background-color: cyan;
            /*水平居中*/
            text-align: center;
        

        #container2 
            /*  300*150*/
            width: 300px;
            height: 150px;
            background-color: cyan;
            /*水平居中*/
            text-align: center;
            /*垂直居中*/
            padding-top: 50px; /*div高度-img高度*/
        
    </style>
</head>
<body>
<!--300*150-->
<div id="container1"><!--150*100-->
    <img src="../share_icon_sina_weibo.png" width="150" height="100"/>
</div>
<br>
<br>
<br>
<!--300*150-->
<div id="container2"><!--150*100-->
    <img src="../share_icon_sina_weibo.png" width="150" height="100"/>
</div>
</body>
</html> 

方法二:

只用padding属性,通过计算求得居中

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta name="author" type="Nancle from CAU CS101"/>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title>如何让img标签在div里左右上下居中</title>
    <script type="text/javascript">
    </script>
    <style type="text/css">
        #container 
            /*  300*150*/
            width: 300px;
            height: 150px;
            background-color: cyan;
        

        #container1 
            /*  300*150*/
            width: 300px;
            height: 150px;
            background-color: cyan;
            /*水平居中*/
            padding-left: 150px; /*div宽度-img宽度*/
        

        #container2 
            /*  300*150*/
            width: 300px;
            height: 150px;
            background-color: cyan;
            /*水平居中*/
            padding-left: 150px; /*div宽度-img宽度*/
            /*垂直居中*/
            padding-top: 50px; /*div高度-img高度*/
        
    </style>
</head>
<body>
<div id="container"><!--150*100-->
    <img src="../share_icon_sina_weibo.png" width="150" height="100"/>
</div>
<br/>
<br/>
<br/>
<div id="container1"><!--150*100-->
    <img src="../share_icon_sina_weibo.png" width="150" heightHTML CSS中如何实现DIV中的图片水平垂直居中对齐

设置DIV块元素在浏览器页面中垂直居中

css如何让图片根据显示器的尺寸来居中显示?

如何让DIV层在网页中居中显示

div内容垂直居中的方法

元素定位后如何居中