CSS实现居中的8中方法

让child元素在parent容器中水平和垂直都居中

方法一:Flex弹性布局

现代浏览器支持度很高,即使子元素高度不确定也能完美实现居中

复制代码
 	<main>
        <div class="parent">
            <div class="child">我是居中的babycare</div>
        </div>
    </main>
    <style>
        .parent {
            display: flex;
            justify-content: center;
            align-items: center;
            height: 200px;
            border: 1px solid #ccc;
        }
        .child {
            background: red;
        }
    </style>

方法二:Grid网格布局

写法简洁,一行代码就能实现,Grid在旧版浏览器中的支持度略低于Flexbox

复制代码
	<main>
        <div class="parent">
            <div class="child">我是居中的babycare</div>
            <div class="child">我是居中的babycare</div>
        </div>
    </main>
    <style>
        .parent {
            display: grid;
            place-items: center;
            height: 200px;
            border: 1px solid #ccc;
        }
        .child {
            background: red;
        }
        .child:nth-child(2) {
            background-color: pink;
        }
    </style>

方法三:绝对定位+位移变换

这个地方兼容性很好,支持到IE9以上,最大的优点是不需要知道子元素的宽高

复制代码
	<main>
        <div class="parent">
            <div class="child">我是居中的babycare</div>
        </div>
    </main>
    <style>
        .parent {
            position: relative;
            height: 200px;
            border: 1px solid #ccc;
        }
        .child {
            position: absolute;
            top: 50%;
            left: 50%;
            transform: translate(-50%, -50%);
            background: red;
        }
    </style>

方法四:绝对定位+自动边距(固定宽高适用)

利用margin:auto在绝对定位下的特点,需要明确的设置子元素的宽度和高度,浏览器自动计算实现居中

复制代码
 	<main>
        <div class="parent">
            <div class="child">我是居中的babycare</div>
        </div>
    </main>
    <style>
        .parent {
            position: relative;
            height: 200px;
            border: 1px solid #ccc;
        }
        .child {
            position: absolute;
            top: 0;
            left: 0;
            right: 0;
            bottom: 0;
            margin: auto;
            height: 100px;
            width: 200px;
            background: red;
        }
    </style>

方法五:表格单元格方式(传统但有效)

模拟了表格单元格的行为,verticle-align:middle实现垂直居中,父元素需要设置明确的高度,子元素要设置为inline-block

复制代码
 	<main>
        <div class="parent">
            <div class="child">我是居中的babycare</div>
        </div>
    </main>
    <style>
        .parent {
            display: table-cell;
            width: 100vw;
            height: 200px;
            vertical-align: middle;
            text-align: center;
            border: 1px solid #ccc;
        }
        .child {
            display: inline-block;
            background: red;
        }
    </style>

方法六:内联块+伪元素(特殊场景使用)

创建一个全高的伪元素作为参照物,通过verticle-align实现垂直对齐,不能用在flexbox或grid时候可以考虑

复制代码
	<main>
        <div class="parent">
            <div class="child">我是居中的babycare</div>
        </div>
    </main>
    <style>
        .parent {
            text-align: center;
            height: 200px;
            border: 1px solid #ccc;
        }
        .parent::before {
            content: "";
            display: inline-block;
            height: 100%;
            vertical-align: middle;
        }
        .child {
            display: inline-block;
            vertical-align: middle;
            background: red;
        }
    </style>

方法七:视口居中(弹框场景)

需要再浏览器窗口中央显示的弹窗,使用position:fixed相对于视口定位,再结合transform实现居中

复制代码
	 <main>
        <div class="parent">
            <div class="child">我是居中的babycare</div>
        </div>
    </main>
    <style>
        .parent {}
        .child {
            position: fixed;
            top: 50%;
            left: 50%;
            transform: translate(-50%,-50%);
            width: 80%;
            max-width: 600px;
            background: red;
        }
    </style>

方法八:JavaScript动态计算

动态计算出父元素和子元素的offsetWidth 和 offsetHeight,使用position:absolute,给top left赋值

相关推荐
小九今天不码代码6 天前
CSS 九宫格拼图动画效果实现与原理解析
css·css3·动画效果·css动画·grid布局·css技巧·九宫格布局
QmZVLlLHvXq15 天前
汇川多合一上位机软件 支持宇通,东风凯普特,陕汽德龙等多车型 支持数据读取,修改,故障码读取
css3
程序员林北北17 天前
【前端进阶之旅】3 道前端超难面试题深度解析(2026 版)|附完整代码 + 实战场景
前端·javascript·css3·html5
Kyl2n18 天前
【密码口令保存小工具】
javascript·css·css3
银烛木19 天前
黑马程序员前端h5+css3
前端·css·css3
m0_6070766019 天前
CSS3 转换,快手前端面试经验,隔壁都馋哭了
前端·面试·css3
听海边涛声19 天前
CSS3 图片模糊处理
前端·css·css3
IT、木易19 天前
css3 backdrop-filter 在移动端 Safari 上导致渲染性能急剧下降的优化方案有哪些?
前端·css3·safari
henry10101019 天前
DeepSeek生成的网页小游戏 - 迷宫探险
css·游戏·html·css3
cvcode_study20 天前
PHP8 编程入门课程
开发语言·javascript·php·css3·html5