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 中新增的属性,浏览器支持情况不好。

相关文章
|
15天前
|
前端开发 JavaScript Serverless
揭秘CSS布局神器:vw/vh、rem、%与px大PK,掌握它们,让你的网页设计秒变高大上,面试难题迎刃而解!
【8月更文挑战第4天】在Web开发中,合理选择CSS单位对响应式布局至关重要。本文探索viewport单位(vw/vh)、rem、百分比(%)及像素(px)的基础知识与应用场景。通过代码示例,展示如何运用这些单位实现全屏布局、尺寸比例调整、灵活的元素大小及固定尺寸。最后,模拟面试题,介绍如何仅用CSS实现一个元素的高度为其宽度两倍且响应视口变化的方法。
46 8
|
2月前
|
前端开发
CSS中的display属性:布局控制的关键
CSS中的display属性:布局控制的关键
135 42
|
5天前
|
前端开发
CSS Grid 布局:span 关键字
CSS Grid 布局:span 关键字
16 0
|
8天前
|
前端开发 容器
css中弹性布局使用方法
css中弹性布局使用方法
17 0
|
8天前
|
编解码 前端开发 容器
CSS弹性布局:打造响应式与灵活的网页设计
CSS弹性布局:打造响应式与灵活的网页设计
19 0
|
1月前
|
编解码 前端开发 容器
CSS Flex布局实战案例:构建响应式卡片组件
【7月更文挑战第17天】通过上述步骤,我们成功地使用CSS Flex布局构建了一个响应式的卡片组件。Flexbox不仅简化了布局代码,还让我们能够轻松实现复杂的布局效果,如响应式设计。在实战中,掌握Flexbox将大大提高前端开发的效率和网页布局的质量。希望这个案例能够帮助你更好地理解和应用Flexbox布局。
|
1月前
|
前端开发
css 十字分割线(含四等分布局)
css 十字分割线(含四等分布局)
28 2
|
1月前
|
移动开发 前端开发 HTML5
CSS 【实战】 “四合院”布局
CSS 【实战】 “四合院”布局
25 0
CSS 【实战】 “四合院”布局
|
1月前
|
前端开发
css的flex布局中使用margin:auto智能分配剩余空间
css的flex布局中使用margin:auto智能分配剩余空间
30 1
|
1月前
|
前端开发 算法 容器
css【详解】grid布局—— 网格布局(栅格布局)(一)
css【详解】grid布局—— 网格布局(栅格布局)(一)
47 1