CSS中元素居中的几种方式

在调整页面样式时,常需实现元素居中。本文介绍了块级元素、浮动元素的水平/垂直居中,以及文字的水平/垂直居中的实现方式。如块级元素可通过设置定位和margin属性实现居中,文字可通过设置父元素属性和line-height属性实现居中。

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

我们在调整页面样式的过程中,经常需要元素居中,包括字体水平/垂直居中,块级元素(如div)的水平/垂直居中,今天就来介绍一下以上提到的几种居中实现方式。

块级元素居中

先给出html:

<div class="father">
    <div class="son">
    </div>
</div>

如果只是想让一个元素水平居中,在没有浮动的情况下,直接给子元素加margin:auto属性,子元素就在父级元素中水平居中了。

如果不加定位的话,其实让元素水平居中个垂直居中还是挺麻烦的。所以,一般来说,我习惯于给父级元素加上position:relative属性,子元素加上position:absolute属性,让父元素保持原来位置脱离文本流(不影响父元素以外其他部分样式),子元素可以在父元素中随意位置。这样调整子元素在父元素中水平/垂直居中就比较方便了。

一种实现思路
.father{
    width: 400px;
    height: 400px;
    border: 1px dashed black;
    position: relative;
}
.son{
    width: 100px;
    height: 50px;
    background: pink;
    position: absolute;
    left: 0;
    top:0;
    bottom: 0;
    right: 0;
    margin: auto
}

对子元素设置绝对定位,就拥有了left,top等属性,将这些属性设置为0,同时margin设置为auto,子元素就在父元素中水平垂直居中了。

另一种实现思路
.father{
    width: 400px;
    height: 400px;
    border: 1px dashed black;
    position: relative;
}
.son{
    width: 100px;
    height: 50px;
    background: pink;
    position: absolute;
    left: 50%;
    top: 50%;
    margin: -25px 0 0 -50px;/* transform: translate(-50%,-50%) */
}

首先让子元素的左侧和上侧移动父级的50%宽和50%高,这样子元素的左上角就在父元素的中间了,现在让子元素的中心在父元素的中心,那么就让子元素分别向左和上移动自己宽度和高度的50%,这样就达到了子元素在父元素中居中的效果。
在这里插入图片描述
当然,如果子元素的宽高是未知 情况下,还可以用transform: translate(-50%,-50%)替代margin-left 和margin-top。

补充:居中一个浮动元素
关于浮动元素涉及到一些知识点,诸如清除浮动等,让浮动元素在父级中居中也是一个我们经常遇到的问题。首先给出HTML:

<div class="father clearfix">
    <div class="son">
    </div>
</div>
  1. 首先让浮动元素水平居中
    CSS如下:
*{
    margin:0;
    padding:0;
}
.father{
    border: 1px dashed black;
    width: 400px;
}
.clearfix::after{
    content:"";
    display: block;
    clear:both
}
.son{
    width: 100px;
    height: 50px;
    background: pink;
    float:left;
    position: relative;
    left: 50%;
    margin-left:-50px
}

说明:给父级元素加clear::fix伪元素属性可以清除son的float:left带来的浮动,撑起父元素。子元素添加position:relative,使之相对定位(占据原有的位置),同时设置left:50%,让子元素左边流出父级元素宽的50%。再通过margin-left属性向自己的左侧移动自己宽度的一半,子元素相对父级元素水平居中完成。

  1. 再让浮动元素垂直居中
    给父元素加一个高度,为了使效果明显。垂直居中和上述原理基本类似,主要还是计算好top属性和margin-top属性。
    CSS如下:
*{
    margin:0;
    padding:0;
}
.father{
    border: 1px dashed black;
    width: 400px;
    height: 500px;
}
.clearfix::after{
    content:"";
    display: block;
    clear:both
}
.son{
    width: 100px;
    height: 50px;
    background: pink;
    float:left;
    position: relative;
    left: 50%;
    top: 50%;
    margin: -25px 0 0 -50px /*上 右 下 左*/
}

效果如下:
在这里插入图片描述

文字居中

一个div中,如果我们想让里面的文字水平居中,父元素中设置text-align: center属性,如果想让文字垂直居中,就设置该文字所在子元素的line-height属性等于div的高度,就OK了。其中line-height指的是该行文字的高度,类似于word中的行高。
举例:

<div class="father">
    <span>我是块级元素里面的文字</span>
</div>
.father{
    width: 300px;
    height: 300px;
    border: 1px dashed black;
    text-align: center;
}
span{
    line-height: 300px
}

效果:
在这里插入图片描述

本人原创,转载请标明出处,谢谢合作!
### CSS 实现元素水平垂直居中的方法汇总 以下是几种常见的实现元素水平垂直居中的方法: #### 方法一:使用 `display: table-cell` 和 `vertical-align: middle` 通过将父容器的 `display` 属性设置为 `table-cell`,并配合 `vertical-align: middle`,可以轻松实现子元素垂直居中。同时,为了达到水平居中,可以在父容器上设置 `text-align: center`[^1]。 ```html <div style="border: 1px solid black; width: 300px; height: 300px; display: table-cell; text-align: center; vertical-align: middle;"> <div style="background-color: red; display: inline-block;">水平垂直居中</div> </div> ``` --- #### 方法二:使用绝对定位和 `transform` 这种方法利用了 `position: absolute` 的特性以及 `translate()` 函数来调整位置。通过设置 `top: 50%; left: 50%` 将元素中心点移动到父容器的中心,再用 `transform: translate(-50%, -50%)` 抵消自身的宽度和高度偏移[^4]。 ```css .parent { position: relative; width: 300px; height: 300px; } .child { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); } ``` --- #### 方法三:使用 Flexbox 布局 Flexbox 是现代布局中最常用的方法之一。只需将父容器的 `display` 设置为 `flex`,并通过 `align-items: center` 和 `justify-content: center` 来分别控制垂直和水平方向上的居中[^2]。 ```css .parent { display: flex; align-items: center; justify-content: center; width: 300px; height: 300px; } ``` --- #### 方法四:使用 Grid 布局 Grid 布局提供了更强大的二维布局能力。可以通过设置 `place-items: center` 或者单独指定 `align-items` 和 `justify-items` 来完成居中操作[^2]。 ```css .parent { display: grid; place-items: center; width: 300px; height: 300px; } ``` --- #### 方法五:行内块元素与基线对齐 对于某些特定类型的行内块元素(如 `<input>`、`<img>` 等),可以直接通过设置其 `vertical-align` 属性为 `middle` 来实现与其他文本内容的水平对齐[^3]。 ```html <span>这是一个例子:</span><input type="text" style="vertical-align: middle;" /> ``` --- 以上列举了几种主流的 CSS 水平垂直居中方法,每种方法都有各自的适用场景和技术特点。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值