23种CSS垂直居中技巧

关于“23种CSS垂直居中技巧”的攻略,我会从以下三个部分进行详细讲解:

  1. 概述:介绍为什么需要垂直居中、垂直居中的相关概念、难点和解决方案。

  2. 解决方案:梳理23种CSS垂直居中技巧,并对它们进行详细讲解。

  3. 示例说明:通过两条具体的示例,让你更好地理解如何应用这些CSS垂直居中技巧。

进入正题:

一、概述

为什么需要垂直居中?

在Web开发过程中,为了让页面布局更加合理,我们经常需要进行垂直居中操作。比如,当我们需要将按钮或图片居中显示在父容器中,就需要使用垂直居中技巧。

垂直居中的难点在哪里?

CSS中的水平居中非常容易实现,但是垂直居中却常常让人们困惑。因为CSS中的垂直居中涉及到元素高度、行高、文本内容和图片等因素的影响。不同的情况下,需要应用不同的垂直居中技巧以达到所需效果。

垂直居中的解决方案有哪些?

在这篇攻略中,我们整理了23种CSS垂直居中技巧。这些解决方案运用了不同的CSS属性,包括了定位、flexbox、栅格系统、表格布局等技术。我们可以根据具体布局的需求选择合适的垂直居中方法。

二、解决方案

下面,我们来介绍这23种解决方案。需要特别注意的是,这些技巧并不是互相独立的,有些可以组合起来一起使用。

1、使用line-height进行单行文本垂直居中

.parent {
  height: 100px;
  line-height: 100px;
}

2、使用padding进行单行文本垂直居中

.parent {
  height: 100px;
  padding: 30px 0;
  box-sizing: border-box;
}

3、使用absolute+margin实现多行文本垂直居中

.parent {
  position: relative;
}
.child {
  position: absolute;
  top: 50%;
  margin-top: -[高度的一半];
}

4、使用absolute+transform实现多行文本垂直居中

.parent {
  position: relative;
}
.child {
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
}

5、使用flexbox实现垂直居中

.parent {
  display: flex;
  align-items: center;
}

6、使用多重flexbox实现文本垂直居中

.parent {
  display: flex;
  align-items: center;
  justify-content: center;
}
.child {
  align-self: center;
}

7、使用CSS Grid实现垂直居中

.parent {
  display: grid;
  align-items: center;
}

8、使用table元素实现垂直居中

.parent {
  display: table;
}
.child {
  display: table-cell;
  vertical-align: middle;
}

9、使用table元素+margin实现垂直居中

.parent {
  display: table;
}
.child {
  display: table-cell;
  vertical-align: middle;
  margin: auto;
}

10、使用table元素+position实现垂直居中

.parent {
  display: table;
  position: relative;
}
.child {
  display: table-cell;
  vertical-align: middle;
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
}

11、使用absolute实现不定宽块状元素的垂直居中

.parent {
  position: relative;
}
.child {
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  width: 100%;
}

12、使用CSS Grid实现两栏布局,并居中其中一栏

.parent {
  display: grid;
  grid-template-columns: 1fr 1fr;
  align-items: center;
}
.child {
  justify-self: center;
}

13、使用absolute+margin实现图片垂直居中

.parent {
  position: relative;
}
img {
  position: absolute;
  top: 50%;
  margin-top: -[图片高度的一半];
}

14、使用table元素实现多行元素垂直居中

.parent {
  display: table;
}
.child {
  display: table-cell;
  vertical-align: middle;
}

15、使用fonsize和height实现需要居中的文本垂直居中

.parent {
  height: 100px;
  font-size: 100px;
  line-height: 1;
}

16、使用margin:auto实现flexbox的成员居中

.parent {
  display: flex;
}
.child {
  margin: auto;
}

17、使用absolute+margin:auto实现flexbox的成员垂直、水平居中

.parent {
  position: relative;
}
.child {
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  margin: auto;
}

18、使用flexbox+min-height实现比父容器小的元素垂直居中

.parent {
  display: flex;
  align-items: center;
  min-height: 100px;
}
.child {
  margin: auto;
}

19、使用absolute实现比父容器小的元素垂直居中

.parent {
  position: relative;
  height: 300px;
}
.child {
  position: absolute;
  bottom: 0;
  top: 0;
  margin: auto;
}

20、使用inline-block实现垂直居中

.parent {
  font-size: 0;
  text-align: center;
  height: 300px;
}
.child {
  display: inline-block;
  vertical-align: middle;
}

21、使用table实现垂直居中

.parent {
  display: table;
  height: 300px;
}
.child {
  display: table-cell;
  vertical-align: middle;
}

22、使用margin:auto实现的二等边三角形垂直居中

#triangle {
  width: 0;
  height: 0;
  border-top: 50px solid #f00;
  border-left: 25px solid transparent;
  border-right: 25px solid transparent;
  margin: auto;
}

23、使用absolute和table实现HTML5 video居中

.parent {
  position: relative;
}
video {
  position: absolute;
  left: 50%;
  top: 50%;
  transform: translate(-50%, -50%);
  display: table;
}
source {
  display: table-cell;
  vertical-align: middle;
}

三、示例说明

下面我们以文字垂直居中为例,为你演示如何使用这些技巧进行垂直居中的操作。

示例1:

HTML部分:

<div class="parent">
  <div class="child">
    <h3>Hello World</h3>
    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed malesuada tristique libero vitae rhoncus.</p>
  </div>
</div>

CSS部分:

.parent {
  height: 400px;
  background-color: #f6f6f6;
}
.child {
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  width: 80%;
  margin: 0 auto;
  text-align: center;
}

这里我们使用的是 absolute + transform 技巧。

示例2:

HTML部分:

<div class="parent">
  <div class="child">
    <h3>Hello World</h3>
    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed malesuada tristique libero vitae rhoncus.</p>
  </div>
</div>

CSS部分:

.parent {
  height: 400px;
  background-color: #f6f6f6;
  display: flex;
  justify-content: center;
  align-items: center;
}
.child {
  width: 80%;
  text-align: center
}

这里我们使用的是 flexbox 技巧。

通过这两个示例,我们可以发现,当我们需要垂直居中时,需要根据具体情况选择不同的技巧。例如对于多行文本垂直居中,我们可以使用 absolute + marginabsolute + transform 技巧。对于单行文本垂直居中,则可以使用 line-heightpadding 技巧。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:23种CSS垂直居中技巧 - Python技术站

(0)
上一篇 2023年6月10日
下一篇 2023年6月10日

相关文章

  • 浅谈浏览器的兼容性(必看篇)

    浅谈浏览器的兼容性(必看篇) 什么是浏览器兼容性 浏览器兼容性指的是同一份网页,在不同的浏览器以及不同的浏览器版本下,是否能够正常显示和运行。由于不同浏览器之间存在一定的差异,因此在开发网页时需要考虑到浏览器兼容性问题。 浏览器兼容性的重要性 浏览器兼容性对于网站的用户体验和网站的流量十分重要。如果一个网站在某个浏览器下无法正常打开或运行,很可能造成用户流失…

    css 2023年6月10日
    00
  • 纯CSS结合DIV实现的右侧底部简洁悬浮效果

    下面是详细的攻略。 问题描述 该效果是可以让一个元素悬浮在页面的右下角,当鼠标移入时,元素会展开一部分,当鼠标移出时,元素会自动收起,整个效果使用 CSS 和 DIV 元素来实现。 解决方案 要实现这个效果,我们可以分三步来实现: 定义 HTML 结构 用纯 CSS 控制元素的位置、大小、动画等 使用 JavaScript 监听元素的鼠标事件,实现展开和收起…

    css 2023年6月10日
    00
  • 漂亮! js实现颜色渐变效果

    假设你已经在自己的网站中想要添加一个渐变效果,并且选择了 JavaScript 实现。下面我们将演示如何用 JavaScript 实现颜色渐变效果。 步骤1:创建 HTML 页面 首先需要创建一个 HTML 页面,并添加一个 CSS 样式表和一个 JavaScript 文件。在 HTML 页面中,添加一个具有 ID 的 div 元素。这个 ID 将用于在 J…

    css 2023年6月11日
    00
  • 利用css3如何设置没有上下边的列表间隔线

    想要设置一个没有上下边框的列表间隔线,可以采用下面这两种方法: 方法一:使用伪元素 :before 和 :after 利用 CSS3 中的伪元素 :before 和 :after,可以在每个列表项之前和之后插入一个 li 元素的伪元素,并将其设置为条纹样式,从而达到没有上下边框的列表间隔线的效果。 以下是示例代码: ul { list-style: none…

    css 2023年6月9日
    00
  • 收集前端面试题之url、href、src

    为了收集前端面试题之url、href、src,我们需要进行以下步骤: 1. 确定面试题范围 在准备前端面试题之前,我们需要先确定本次面试的范围。这可以包括Web开发的基础知识、JavaScript编程、HTML、CSS以及前端常用的框架和库等。根据范围,我们可以列出与之相关的url、href、src相关的面试题。 2. 查找面试题资源 我们可以在互联网上搜索…

    css 2023年6月9日
    00
  • 网页布局入门教程 如何用CSS进行网页布局

    让我来为你讲解一下“网页布局入门教程 如何用CSS进行网页布局”的完整攻略。 概述 CSS是层叠样式表(Cascading Style Sheets)的缩写。如果你想要在网页中控制文本的样式、字体、间距、颜色、大小等方面,那么CSS就是必不可少的工具。同时,CSS还可以用来控制网页的布局,实现网页元素的对齐、定位、层叠等效果。 在本教程中,我们将学习如何使用…

    css 2023年6月10日
    00
  • CSS属性探秘系列(二):overflow及相关属性text-overflow

    下面是详细讲解”CSS属性探秘系列(二):overflow及相关属性text-overflow”的完整攻略。 概述 在设计和开发网页时,经常会遇到显示内容超出容器范围的情况,这时候就需要用到overflow属性。overflow属性决定了如何处理超出容器宽度和高度的内容。 overflow属性常用的值有四种: visible:默认值,超出部分不会被剪裁,会呈…

    css 2023年6月10日
    00
  • 浏览器渲染文本过程分析

    浏览器渲染文本过程分析 在浏览器中,文本渲染是网页渲染的一个重要部分,本文将详细介绍浏览器渲染文本的过程。 文本渲染过程 文本解析 浏览器会将HTML和CSS文本进行解析,找出所有的文本内容,并为这些内容建立相应的文本节点,同时确定文本的样式。 字体处理 确定文本的样式之后,浏览器会根据这些样式来选择合适的字体进行渲染。如果该字体没有下载,浏览器会从服务器端…

    css 2023年6月10日
    00
合作推广
合作推广
分享本页
返回顶部