继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

CSS垂直居中的6种方式,最快只需2行代码

恩言
关注TA
已关注
手记 41
粉丝 316
获赞 3231

本文给出了6种利用CSS使HTML元素垂直居中与父元素的方法,其中包括:

1、2 绝对定位的方式

3 基于属性计算的方式(只需要2行代码哦)

4 利用vertical-align属性

5 盒子模型方式

6 基于内联元素特性

需要说一下下面的代码的打开方式,当启用一种方法时,请打开一种方法的注释,然后把其它方法注释掉,比如我想使用第2中最简单的方式,最终结果为:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>CSS垂直居中</title>
        <style>
            .wrapper{
                width: 500px;
                height: 500px;
                background-color: #666;
                /*方式三 基于属性计算*/
                overflow: hidden;
            }

            .box{
                width: 100px;
                height: 100px;
                background-color: red;
                /*方式三*/
                margin: calc(50% - 50px) auto;
            }
        </style>
    </head>
    <body>
    <div class="wrapper">
        <div class="box"></div>
    </div>
    </body>
    </html>

好了,6种方法对应的总代码如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>CSS垂直居中</title>
    <style>
        .wrapper{
            width: 500px;
            height: 500px;
            background-color: #666;
            /*方式一,方式二 绝对定位的方式*/
            /*position: relative;*/
            /*方式三 基于属性计算*/
            /*overflow: hidden;*/
            /*方式四: 基于vertical-align属性*/
            /*text-align: center;*/
            /*方式五: 使用弹性盒子*/
            /*display: flex;*/
            /*justify-content: center;*/
            /*align-items: center;*/
            /*方式六 基于块级内联元素的特性*/
            /*line-height: 550px; !*.wrapper.height+1/2*box.height*!*/
            /*text-align: center;*/
        }

        .box{
            width: 100px;
            height: 100px;
            background-color: red;
            /*方式一*/
            /*position: absolute;*/
            /*left:0;*/
            /*right: 0;*/
            /*top:0;*/
            /*bottom:0;*/
            /*margin: auto;*/
            /*方式二*/
            /*position: absolute;*/
            /*left: 50%;*/
            /*top: 50%;*/
            /*margin-left: -50px; !*1/2的width*!*/
            /*margin-top: -50px; !*1/2的height*!*/
            /*方式三*/
            /*margin: calc(50% - 50px) auto;*/
            /*方式四*/
            /*display: inline-block;*/
            /*vertical-align: middle;*/
            /*margin: 0 auto;*/
            /*方式六*/
            /*display: inline-block;*/
        }

        /*方式四的辅助元素*/
        /*.help{*/
            /*width: 0;*/
            /*height: 100%;*/
            /*display: inline-block;*/
            /*vertical-align: middle;*/
        /*}*/
    </style>
</head>
<body>
<div class="wrapper">
    <div class="box"></div>
    <!--方式四-->
    <!--<div class="help"></div>-->
</div>
</body>
</html>
打开App,阅读手记
27人推荐
发表评论
随时随地看视频慕课网APP

热门评论

感谢楼主分享经验。

方式3: 只适合正方形;because:      在设置margin,padding时, 50%这个百分比是根据父元素的宽度来计算的。 而方式三在用父元素的宽去做垂直居中。

方式6: 竖直方向上并未居中,不信?  你把子元素设置高一点就明显了。参考方式4和6;这样会好些:    

子: dispaly: inline-block; 先把子元素变成行级块元素;  

父: text-align: center; 左右居中                  

父: line-heigh:  父高;          子: vertical-align: middle;     垂直居中

查看全部评论