方案1:

关键代码:

父类text-align: center;

子类display: inline-block;

讲解:

text-align: center; 是对文本内容进行居中。

当元素是inline-block的时候其实是同时具备内联元素和块元素的的特征。所以text-align就会生效。

注意:display:inline内联元素设置宽高是无效的。所以看不到这个盒子,但是里面的文字是可以看到的同时也具备了居中效果。

示例:

<head>
    <style>
        .parent {
            width: 100%;
            height: 200px;
            background-color: rgb(156, 114, 59);
            text-align: center;
        }
        .son {
            width: 200px;
            height: 200px;
            display: inline-block;
            background-color: bisque;
        }
    </style>
</head>

<body>
    <div class="parent">
        <div class="son">哈哈</div>
    </div>
<body>

优缺点分析

  • 优点:兼容性较好
  • 缺点:text-align 属性针对子元素的行内元素也生效,如果对子元素的行内元素有其他位置的变更,需要重新对子元素设置text-align元素重新赋值。

方案2:

关键代码:

display: block;

margin: auto;

注意:display属性值可以为table或者block

题外知识:

margin属性:外边距

一个值: 表示上右下左的外边距相同

两个值: 第一个表示上下外边距 第二个表示左右外边距

三个值: 第一个表示上边距 第二个表示左右外边距 第三个表示下外边距

四个值: 分别表示上右下左的边距

示例:

<head>
    <style>
        .parent {
            width: 100%;
            height: 200px;
            background-color: rgb(156, 114, 59);
        }
        .son {
            width: 200px;
            height: 200px;
            background-color: bisque;
            /* display: table; */
            display: block;
            margin: auto;
        }
    </style>
</head>

<body>
    <div class="parent">
        <div class="son">哈哈</div>
    </div>
</body>

优缺点分析

  • 优点:
    只需要对子级元素进行设置就可以实现水平方向居中布局效果。
  • 缺点:
    如果子级元素脱离文档流(浮动(float)、绝对定位(absolute)、固定定位(fixed)),会导致margin属性的值无效。

方案3:

关键代码:

父类:position: relative;

子类:

position: absolute;

left: 50%;

transform: translateX(-50%);

注意:

  1. 当父级元素没有开启定位的话,则子级元素是相对于页面的绝对定位。
  2. 当父级元素开启了定位的话,则是相对于父级元素的。

示例:

    <style>
        .parent {
            width: 100%;
            height: 200px;
            background-color: rgb(156, 114, 59);
            position: relative;
        }
        .son {
            width: 200px;
            height: 200px;
            background-color: bisque;
            position: absolute;
            left: 50%;
            transform: translateX(-50%);
        }
    </style>
</head>

<body>
    <div class="parent">
        <div class="son">哈哈</div>
    </div>
</body>

优缺点分析

  • 优点:
    父级元素是否脱离文档流,不影响子级元素水平居中效果
  • 缺点:
    transform属性是CSS3中新增属性,浏览器支持情况不好

Last modification:August 10, 2020
如果觉得我的文章对你有用,请随意赞赏