CSS布局之水平居中布局

简介: 水平居中布局指的是当前元素在父级元素容器中,水平方向是居中显示的。

本文首发于博客 隔壁王老板 中文章 《CSS布局之水平居中布局》

概念:

水平居中布局 指的是当前元素在父级元素容器中,水平方向是居中显示的

方案一: inline-block + text-align

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>水平居中布局</title>
    <style>
        #parent {
            width: 100%;
            height: 200px;
            background-color: #ccc;

            text-align: center;
        }
        #child {
            width: 200px;
            height: 200px;
            background: orangered;

            display: inline-block;
        }
    </style>
</head>
<body>
<div id="parent">
    <div id="child"></div>
</div>
</body>
</html>

优缺点

优点:浏览器兼容性好。代码中使用的均是 CSS 2 中的属性,浏览器兼容性良好。
缺点text-align 具有继承性。子元素中的文本会继承父元素的 text-align 属性。若子元素中的文本不是居中显示时,则需要重新设置 text-align 属性将其覆盖。

方案二:table + margin

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>水平居中布局</title>
<style>
    #parent {
        background-color: #ccc;
    }

    #child {
        width: 200px;
        height: 200px;
        /* display 的值为 block 和 table */
        display: table;
        /*
         margin 属性:外边距
         * 一个值 - 上右下左
         * 二个值 - 第一个值表示上下,第二个值表示左右
           * auto 浏览器自动计算(等分)
         * 三个值 - 第一个值表示上,第二个值表示左右,第三个值表示下
         * 四个值 - 上右下左
        */
        margin: 0 auto;
        background: orangered;
    }
</style>
</head>
<body>
    <!--定位父级元素-->
    <div id="parent">
        <!--定位子级元素-->
        <div id="child"></div>
    </div>
</body>
</html>

优缺点

优点:只需要对子元素设置就可以显示水平居中布局效果。
缺点:如果子元素脱离文档流,导致 margin 属性的值失效。

方案三:absolute + transform

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>水平居中布局</title>
    <style>
        #parent {
            width: 100%;
            height: 200px;
            background-color: #ccc;

            /* 开启定位 */
            position: relative;
        }

        #child {
            width: 200px;
            height: 200px;
            background: orangered;
            /*
              当把当前元素设置为绝对定位后:
             *如果父级元素没有开启定位,当前元素相对于页面定位,
             *如果父级元素开启了定位的话,当前元素相对于父级元素定位
            */

            position: absolute;
            left: 50%; /* 子级元素相对于父级元素的左边 50% */
            transform: translateX(-50%);
        }
    </style>
</head>
<body>
    <!--定位父级元素-->
    <div id="parent">
        <!--定位子级元素-->
        <div id="child"></div>
    </div>
</body>
</html>

优缺点

优点:父级元素是否脱离文档流,不影响子级元素居中显示效果。
缺点transform 属性是 CSS 3 中新增的属性,浏览器支持情况不好。

相关文章
|
1月前
|
前端开发 UED 容器
在 CSS 中使用 Flex 布局实现页面自适应时需要注意什么?
【10月更文挑战第22天】在使用 Flex 布局实现页面自适应时,需要对其基本原理和特性有深入的理解,同时结合具体的布局需求和场景,进行细致的调整和优化。通过合理的设置和注意事项的把握,才能实现理想的自适应效果,提升用户体验。还可以根据实际情况进行更深入的探索和实践,以不断提升 Flex 布局的应用能力。
|
28天前
|
前端开发 JavaScript 开发者
掌握 CSS 弹性布局(Flexbox):构建复杂页面布局的高效秘籍与实战案例
CSS弹性布局(Flexbox)是现代网页设计中构建复杂页面布局的高效工具。本文将深入浅出地介绍Flexbox的核心概念、使用技巧及实际应用案例,帮助读者快速掌握这一强大布局方法。
|
1月前
|
前端开发 容器
实现CSS品字布局
【10月更文挑战第27天】
|
2月前
|
前端开发 容器
使用 CSS Grid 布局实现响应式设计
【10月更文挑战第1天】使用 CSS Grid 布局实现响应式设计
64 4
|
2月前
|
前端开发 容器
前端技术分享:利用CSS Grid布局实现响应式设计
【10月更文挑战第1天】前端技术分享:利用CSS Grid布局实现响应式设计
|
3月前
|
前端开发 容器
css布局-弹性布局学习笔记
这篇文章是关于CSS弹性布局的学习笔记,详细介绍了flex容器和元素的相关属性,包括flex-direction、flex-wrap、flex-flow、justify-content、align-items、align-content以及order、flex-grow、flex-shrink、flex-basis、flex和align-self等,解释了这些属性在弹性盒子布局中的作用和用法。
|
3月前
|
JavaScript 前端开发
网页前端课程设计-【模仿】香港中文大学官网,轮播图及div+css布局,js的dom操作
这篇文章介绍了如何模仿香港中文大学官网进行网页前端课程设计,包括使用div+css布局、js的DOM操作以及实现轮播图等技术细节。
|
4月前
|
前端开发 安全 容器
CSS如何优雅实现卡片多行排列布局?
【8月更文挑战第24天】CSS如何优雅实现卡片多行排列布局?
183 3
|
4月前
|
前端开发 开发者 容器
探索现代Web开发中的CSS Grid布局技术
【8月更文挑战第29天】在数字时代的浪潮中,网页设计不断进化以适应日新月异的用户需求。CSS Grid布局技术作为一项革新性的前端工具,为设计师和开发者提供了前所未有的布局能力。本文旨在通过深入浅出的方式介绍CSS Grid的核心概念、基本用法以及在实际项目中的应用,帮助读者快速掌握这一强大的网页布局工具。
63 3