黑马程序员技术交流社区

标题: 技术贴 [打印本页]

作者: 剑枫dj    时间: 2019-10-14 23:28
标题: 技术贴
Css中 子级div盒子在父级盒子垂直居中的三个方法

实际网页开发中,要实现同样的效果,不同的开发者会用不同的方式搭建,初学者若熟练使用各种方法,后续学习自然会事半功倍。现总结3种div垂直居中的方法供各位参考。
方法一、小div绝对定位或相对定位,这样小div脱离标准流,大div有固定宽高,用小div的margin去挤大div
<!DOCTYPE html>
<html>

<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        .father {
            width: 600px;
            height: 600px;
            background-color: orangered;
        }
        
        .son {
            width: 300px;
            height: 200px;
            background-color: lawngreen;
            position: absolute;
            margin: 200px 150px;
        }
    </style>
</head>
<body>
    <div class="father">
        <div class="son""></div>
    </div>
</body>
</html>

注意:如果小div没有绝对定位或相对定位,且大div没有border,那么小div的margin实际上踹的是“流”,踹的是这“行”。如果用margin-top,大div整体也会掉下来。
方法二、如果给大div加一个border,使大div,小div都不定位,用小div的margin去挤大div,实现小div居中。
<!DOCTYPE html>
<html>

<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        .father {
            width: 600px;
            height: 600px;
            background-color: orangered;
            border: 1px solid white;
        }
        
        .son {
            width: 300px;
            height: 200px;
            background-color: lawngreen;
            margin: 200px 150px;
        }
    </style>
</head>
<body>
    <div class="father">
        <div class="son"></div>
    </div>
</body>
</html>

方法三、小div绝对定位,大div相对定位,定位到大盒子的宽高一半的位置,再上下各margin负的自己宽高的一半
<!DOCTYPE html>
<html>

<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        .father {
            width: 600px;
            height: 600px;
            background-color: orangered;
            position: relative;
        }
        
        .son {
            width: 300px;
            height: 200px;
            background-color: lawngreen;
            position: absolute;
            top: 50%;
            left: 50%;
            margin-top: -100px;
            margin-left: -150px;
        }
    </style>
</head>
<body>
    <div class="father">
        <div class="son"></div>
    </div>
</body>
</html>







欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2