使用 CSS 实现垂直居中的8种方法

​​​​​​CSS垂直居中的8种方法

目录

​​​​​​CSS垂直居中的8种方法

1、通过vertical-align:middle实现CSS垂直居中。

2、通过display:flex实现CSS垂直居中。

3、通过伪元素:before实现CSS垂直居中。

4、通过display:table-cell实现CSS垂直居中。

5、通过隐藏节点实现CSS垂直居中。

 6、已知父元素高度通过transform实现CSS垂直居中。

 7、到垂直居中的位置。

 8、通过line-height实现CSS垂直居中。


1、通过vertical-align:middle实现CSS垂直居中。

通过vertical-align:middle实现CSS垂直居中是常使用的方法,但是有一点需要格外注意,vertical生效的前提是元素的display:inline-block。

在使用vertical-align:middle的时候需要一个兄弟元素做参照物,让它垂直于兄弟元素的中心点。vertical-align对齐的方法是寻找兄弟元素中最高的元素作为参考。

看代码可能比较好理解:

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <title>CSS垂直居中</title>
  <style>
    .wrapper {
      width: 500px;
      height: 500px;
      background-color: pink;

      text-align: center;
    }

    .box {
      width: 100px;
      height: 100px;
      background-color: deepskyblue;

      display: inline-block;
      vertical-align: middle;
      margin: 0 auto;
    }

    .help {
      width: 0;
      height: 100%;
      display: inline-block;
      vertical-align: middle;
    }
  </style>
</head>

<body>
  <div class="wrapper">
    <div class="box"></div>
    <div class="help"></div>
  </div>
</body>

</html>

2、通过display:flex实现CSS垂直居中。

随着越来越多浏览器兼容CSS中的flexbox特性,所以现在通过“display:flex”实现CSS水平居中的方案也越来越受青睐。

通过display:flex实现CSS垂直居中的方法是给父元素display:flex;而子元素align-self:center;

这个跟CSS水平居中的原理是一样的,只是在flex-direction上有所差别,一个是row(默认值),另外一个是column。

3、通过伪元素:before实现CSS垂直居中。

具体方式是为父元素添加伪元素:before,使得子元素实现垂直居中。

4、通过display:table-cell实现CSS垂直居中。

给父元素display:table,子元素display:table-cell的方式实现CSS垂直居中。

5、通过隐藏节点实现CSS垂直居中。

创建一个隐藏节点#hide,使得隐藏节点的height值为剩余高度的一半即可。

这种方法也适用于CSS水平居中,原理一样。

 6、已知父元素高度通过transform实现CSS垂直居中。

给子元素的position:relative,再通过translateY即可定位到垂直居中的位置。

 7、到垂直居中的位置。

 8、通过line-height实现CSS垂直居中。

设置子元素的line-height值等于父元素的height,这种方法适用于子元素为单行文本的情况。

### CSS实现元素垂直居中方法 以下是几种常用的CSS技术来实现元素的垂直居中: #### 方法一:使用 `margin: auto` 当父容器具有固定的高度,并且子元素为块级元素时,可以通过设置子元素的上下外边距为自动 (`margin-top` 和 `margin-bottom`) 来实现垂直居中[^1]。 ```css .parent { position: relative; height: 200px; /* 父容器高度 */ } .child { position: absolute; top: 50%; transform: translateY(-50%); } ``` 这种方法适用于单个子元素的情况。 --- #### 方法二:利用行高属性 `line-height` 对于行内或行内块级元素,可以借助 `line-height` 属性使内容在父容器中垂直居中。此方法适合于单行文本或者已知高度的小型块状元素[^2]。 ```css .parent { height: 200px; /* 定义父容器高度 */ line-height: 200px; /* 设置行高等于容器高度 */ text-align: center; /* 可选:水平居中 */ } .child { display: inline-block; vertical-align: middle; line-height: normal; /* 防止继承父级的行高影响显示效果 */ } ``` 注意该方式仅限于单行文字或其他小型内容区域。 --- #### 方法三:Flexbox 布局 现代浏览器广泛支持 Flexbox 技术,它提供了强大的对齐功能,能够轻松完成复杂布局下的垂直居中操作[^3]。 ```css .parent { display: flex; align-items: center; /* 主轴方向上的居中 (默认为纵向) */ justify-content: center; /* 横向中心对齐可选 */ height: 200px; /* 设定任意合适的高度 */ } ``` 这种方式不仅简洁明了而且兼容性强,在响应式设计场景下尤为实用。 --- #### 方法四:伪元素配合 `vertical-align` 通过创建一个占据整个父容器高度的伪元素并将其与目标子节点一起设置成 `inline-block` 类型,则能依靠 `vertical-align:middle` 达到预期目的[^4]。 ```css .box { width: 400px; height: 400px; border: 1px solid red; text-align: center; } .box::before { content: &#39;&#39;; display: inline-block; vertical-align: middle; width: 0; height: 100%; /* 占满父盒子高度 */ } .content { display: inline-block; vertical-align: middle; } ``` 这种技巧特别适合处理未知尺寸的内容块。 --- #### 方法五:Grid Layout 作为新一代布局方案之一,CSS Grid 提供了一种更加直观的方式来定义网格结构以及其中项目的位置关系。 ```css .container { display: grid; place-items: center; /* 同时实现了水平和垂直方向上的居中 */ height: 200px; /* 自定义大小 */ } ``` 上述代码片段展示了如何快速构建一个既满足视觉美感又易于维护的设计模式。 --- ### 总结 以上列举了几种主流的技术途径用于解决不同条件下的垂直居中难题。每一种都有其特定的应用场合及局限性,请根据实际需求选取最适合的方式加以运用。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值