当前位置: 首页 > news >正文

CSS 实现 文本垂直居中

实现文本垂直居中

在这里插入图片描述

方法 1:使用 line-height

实现原理

line-height 设置为与容器高度相同,使单行文本垂直居中。

代码
.lay-hd {
    width: 972px;
    height: 32px;
    line-height: 32px; /* 设置行高与容器高度相同 */
    text-align: start;
    background-color: #2183c6;
    border-top-left-radius: 5px;
    border-top-right-radius: 5px;
    color: #ffffff;
    font-family: "SimSun", "宋体", serif;
    top: 1px;
    padding: 1% 2%;
}
优点
  • 简单易用,适合单行文本。
缺点
  • 不支持多行文本。
  • 如果文本换行,line-height 会导致垂直居中失效。

方法 2:使用 Flexbox

实现原理

将容器设置为 Flex 布局,并通过 align-items: center; 实现垂直居中。

代码
.lay-hd {
    width: 972px;
    height: 32px;
    display: flex; /* 设置 Flex 布局 */
    align-items: center; /* 垂直居中 */
    text-align: start;
    background-color: #2183c6;
    border-top-left-radius: 5px;
    border-top-right-radius: 5px;
    color: #ffffff;
    font-family: "SimSun", "宋体", serif;
    top: 1px;
    padding: 1% 2%;
}
优点
  • 支持多行文本。
  • 灵活易用,适合复杂布局。
缺点
  • 需要父容器支持 Flex 布局。

方法 3:使用 Grid

实现原理

将容器设置为 Grid 布局,并通过 align-items: center; 实现垂直居中。

代码
.lay-hd {
    width: 972px;
    height: 32px;
    display: grid; /* 设置 Grid 布局 */
    align-items: center; /* 垂直居中 */
    text-align: start;
    background-color: #2183c6;
    border-top-left-radius: 5px;
    border-top-right-radius: 5px;
    color: #ffffff;
    font-family: "SimSun", "宋体", serif;
    top: 1px;
    padding: 1% 2%;
}
优点
  • 支持多行文本。
  • 简单易用,适合复杂布局。
缺点
  • 需要父容器支持 Grid 布局。

方法 4:使用 paddingbox-sizing

实现原理

通过调整 padding 使内容垂直居中。

代码
.lay-hd {
    width: 972px;
    height: 32px;
    padding: 6px 2%; /* 调整上下 padding 使内容居中 */
    box-sizing: border-box; /* 确保 padding 不影响容器高度 */
    text-align: start;
    background-color: #2183c6;
    border-top-left-radius: 5px;
    border-top-right-radius: 5px;
    color: #ffffff;
    font-family: "SimSun", "宋体", serif;
    top: 1px;
}
优点
  • 简单易用,适合单行文本。
缺点
  • 需要手动计算 padding 值。
  • 不支持多行文本。

方法 5:使用 transform

实现原理

将内容绝对定位,并通过 transform: translateY(-50%); 实现垂直居中。

代码
.lay-hd {
    width: 972px;
    height: 32px;
    position: relative; /* 设置相对定位 */
    text-align: start;
    background-color: #2183c6;
    border-top-left-radius: 5px;
    border-top-right-radius: 5px;
    color: #ffffff;
    font-family: "SimSun", "宋体", serif;
    top: 1px;
    padding: 1% 2%;
}

.lay-hd span {
    position: absolute; /* 设置绝对定位 */
    top: 50%; /* 向下移动 50% */
    transform: translateY(-50%); /* 向上移动自身高度的一半 */
}
HTML
<div class="lay-hd">
    <span>这是垂直居中的文本</span>
</div>
优点
  • 支持多行文本。
  • 灵活易用。
缺点
  • 需要额外嵌套元素。

方法对比

方法适用场景优点缺点
line-height单行文本简单易用不支持多行文本
Flexbox单行或多行文本灵活,支持复杂布局需要父容器支持
Grid单行或多行文本简单,支持复杂布局需要父容器支持
padding单行文本简单需要手动计算 padding
transform单行或多行文本灵活需要额外嵌套元素

相关文章:

  • Qt for Android(b站讯为QT教程)
  • C语言内容
  • STM32G030x6/x8开发指南
  • 使用multiprocessing实现进程间共享内存
  • YOLOv11 目标检测
  • 物联网(IoT)架构中,平台层的应用与技术
  • 海量数据查询加速:Presto、Trino、Apache Arrow
  • 神经网络量化-基础算法介绍
  • Sidekick:你的 macOS 本地 AI 助手,畅享智能对话!
  • Kafka消息队列
  • 分享一个工具可以国内无限制访问GitHub(来源于GitHub开源项目)
  • 【3-14 STC-pair超级详细的解说】
  • linux(ubuntu)中Conda、CUDA安装Xinference报错ERROR: Failed to build (llama-cpp-python)
  • openharmony5.0中HDF驱动框架源码梳理-服务管理接口
  • Deny by project hooks setting ‘default‘: size of the file
  • Android自动化测试工具
  • tcpdump剖析:入门网络流量分析实战指南
  • 《Operating System Concepts》阅读笔记:p286-p308
  • 关于使用Visual Studio编码问题
  • 30天学习Java第四天——设计模式
  • 曾犯强奸罪教师出狱后办教培机构?柳州鱼峰区教育局:正核实
  • 人民日报民生观:转人工客服,怎么这么难?
  • 美国务院批准向土耳其出售导弹及相关部件,价值3.04亿美元
  • 今年前4个月上海对拉美国家进出口总值增长2%
  • 首次采用“顶置主星+侧挂从星”布局,长二丁“1箭12星”发射成功
  • 首映|奥斯卡最佳国际影片《我仍在此》即将公映