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

一篇文章理解CSS垂直布局方法

方法1:align-content: center

在 2024 年的 CSS 原生属性中允许使用 1 个 CSS 属性 align-content: center进行垂直居中。

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <style>
    .box {
      height: 100px; 
      width: 100%;
      border: 1px solid red;
      text-align: center;
    }
  </style>
  <body>
    <div class="box" style="align-content: center;">
      <code>align-content</code> 垂直居中!
    </div>
  </body>
</html>
实现效果:

方法2:表格单元格

有 4 种主要布局:流(默认)、表格、flexbox、grid。如何对齐取决于容器的布局。Flexbox 和 grid 相对较晚添加,所以表格是第一种方式。

<div class="box" style="display: table;">
    <div style="display: table-cell; vertical-align: middle;">
        内容。
    </div>
</div>

方法3:绝对定位

通过绝对定位间接的方式来实现这个效果。

<div class="box" style="position: relative;">
  <div style="position: absolute; top: 50%; transform: translateY(-50%);">
    内容。
  </div>
</div>

这个方式通过绝对定位来绕过流式布局:

  • position: relative 标记参考容器。

  • position: absolute; top: 50% 将内容的边缘放置在中心。

  • transform: translateY(-50%) 将内容中心偏移到边缘。

方法4:内联内容

虽然流布局对内容对齐没有帮助。它允许在一行内进行垂直对齐。那么可以让行的高度和容器一样高。

<div class="container">
  ::before
  <div class="content">内容。</div>
</div>
​
.container::before {
  content: '';
  height: 100%;
  display: inline-block;
  vertical-align: middle;
}
.content {
  display: inline-block;
  vertical-align: middle;
}

这个方式有一个缺陷,需要额外创建一个伪元素。

方法5:单行 flexbox

现在布局中的 Flexbox 变得广泛可用。它有两种模式:单行和多行。在单行模式(默认)中,行填充垂直空间,align-items 对齐行内的内容

<div style="display: flex; align-items: center;">
  <div>内容。</div>
</div>

或者调整行为列,并用 justify-content 对齐内容。

<div style="display: flex; flex-flow: column; justify-content: center;">
  <div>内容。</div>
</div>

方法6:多行 flexbox

在多行 flexbox 中,行不再填充垂直空间,所以行(只有一个项目)可以用 align-content 对齐。

<div style="display: flex; flex-flow: row wrap; align-content: center;">
  <div>内容。</div>
</div>

方法7:grid

Grid 出来的更晚,对齐变得更简单。

<div style="display: grid; align-content: center;">
  <div>内容。</div>
</div>

方法8:grid 单元格

注意与前一个方法的微妙区别:

  • align-content 将单元格居中到容器。

  • align-items 将内容居中到单元格,同时单元格拉伸以适应容器。

<div style="display: grid; align-items: center;">
  <div>内容。</div>
</div>

方法9:margin:auto

在流布局中,margin:auto 可以水平居中,但不是垂直居中。使用 margin-block: auto 可以设置垂直居中。

<div style="display: grid;">
  <div style="margin-block: auto;">
    内容。
  </div>
</div>


http://www.kler.cn/a/382043.html

相关文章:

  • 初学stm32 --- NVIC中断
  • 封装(2)
  • 鸿蒙Next之包体积极限优化
  • MacroSan 2500_24A配置
  • Servlet学习中遇到的一些问题及解决
  • 飞牛 fnos 使用docker部署 bili-sync:打造自动化 B 站资源下载器,与主流媒体服务器无缝衔接
  • 【nlp】USAD异常检测
  • RabbitMQ 七种工作模式介绍
  • SpringBoot旋律:打造现代Web音乐平台
  • UE5 材质篇 1 如何偏移顶点
  • Linux云计算 |【第五阶段】PROJECT3-DAY1
  • Rust 力扣 - 2461. 长度为 K 子数组中的最大和
  • 部署Prometheus、Grafana、Zipkin、Kiali监控度量Istio
  • mac 修改启动图图标数量
  • Docker部署Meta-Llama-3.1-70B-Instruct API openai格式,vLLM速度对比
  • [ DOS 命令基础 2 ] DOS 命令命令详解-网络相关命令
  • lanqiaoOJ 1112:小王子双链表 ← STL list
  • “微软蓝屏”事件暴露了网络安全哪些问题?
  • Python网络爬虫入门篇!
  • Python小白学习教程从入门到入坑------第二十七课 魔法方法(语法进阶)
  • 【数据结构】堆:TOK问题
  • Spring Boot 与 Vue 共筑二手书籍交易卓越平台
  • 可选链操作符(Optional Chaining)
  • unity3d——关于GetComponent<T>()
  • 解决Knife4j 接口界面UI中文乱码问题
  • 扩展卡尔曼滤波(EKF)的限制