网页布局解决方案-居中(水平居中,垂直居中,水平垂直居中) html css

本文介绍了在HTML和CSS中如何在不同情况下实现水平居中、垂直居中以及水平垂直居中。分别通过inline-block、text-align、table、margin、absolute、transform、flex等方法进行详细讲解,适用于宽度和高度不确定的父元素和子元素。内容涵盖各种方法的优缺点及兼容性问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

水平居中(在父元素和子元素宽度都不确定的情况下)

示例:

<div class="parent">
        <div class="child">DEMO</div>
    </div>

div块级元素会撑满整个宽度,默认情况为:

这里写图片描述

方法一 :inline-block + text-align
.child {
            display: inline-block;
        }

inline-block的宽度是根据内容来定的,内容有多快它就有多宽

这里写图片描述

通过设置文字居中来使child居中

.parent {
            text-align: center;
        }
        .child {
            display: inline-block;
        }

这里写图片描述
优点:兼容性好(IE8及以上,若要兼容IE6 7可将父级子级全设置为table元素)
确定:子级元素会继承父级的文字居中,若想要子级文字不居中,则需要单独进行设置。例如单独在子元素中加 text-align:left .

方法二:table + margin
.child {
            display: table;
            margin: 0 auto;
        }

table类似block元素,但宽度是根据内容定的

优点:只设置了child,支持IE8以上

方法三:absolute + transform
.parent {
            position: relative;
        }
        .child {
            position: absolute;
            left: 50%;
        }

这里写图片描述

.parent {
            position: relative;
        }
        .child {
            position: absolute;
            left: 50%;
            transform: translateX(-50%);
        }

这里写图片描述
absolute定位的宽度也是根据内容来确定的,transform用百分比时参照物为自身
优点:只改变了子元素,不会影响其他元素
缺点:transform为css3新增,兼容性不好

方法四:flex + justify-content
.parent {
            display: flex;
            justify-content: center;
        }

父级设置了flex后所有子元素都变为flex-items,其宽度默认为auto,即为内容的宽度
优点:只需设置父级元素parent
确定:兼容性不好,flex对如 IE6 7 8 等低版本浏览器不支持
也可以单独对子元素进行设置:

.parent {
            display: flex;
        }
        .child {
            margin: 0 auto;
        }

垂直居中(在父元素和子元素高度都不确定的情况下)

方法和水平居中类似
示例:

<div class="parent">
        <div class="child">DEMO</div>
    </div>

这里写图片描述

方法一:table-cell + vertical-align
.parent {
            display: table-cell;
            vertical-align: center;
        }

这里写图片描述
优点:兼容性好(IE8及以上)

方法二:absolute + transform
.parent {
            position: relative;
        }
        .child {
            position: absolute;
            top: 50%;
            transform: translateY(-50%);
        }
方法三:flex + align-item
.parent {
            display: flex;
        }

当父容器设置 flex 后,其子元素的align-items 默认高度为 stretch,会撑满整个容器的高
这里写图片描述
再对它的align-items单独设置即可

.parent {
            display: flex;
            align-items: center;
        }

这里写图片描述


水平垂直居中(在父元素和子元素宽高都不确定的情况下)

结合前面两张居中方法即可
示例:

<div class="parent">
        <div class="child">DEMO</div>
    </div>

这里写图片描述

方法一
.parent {
            text-align: center;
            display: table;
            vertical-align: middle;
        }
        .child {
            display: inline-block;
        }

这里写图片描述

方法二
.parent {
            position: relative;
        }
        .child {
            position: absolute;
            left: 50%;
            top: 50%;
            transform: translate(-50%,-50%);
        }
方法三
.parent {
            display: flex;
        }

这里写图片描述

.parent {
            display: flex;
            justify-content: center;
            align-items: center;
        }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值