iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >CSS怎么实现元素居中
  • 323
分享到

CSS怎么实现元素居中

2023-06-08 08:06:13 323人浏览 薄情痞子
摘要

这篇文章将为大家详细讲解有关CSS怎么实现元素居中,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。在 CSS 中要设置元素水平垂直居中是一个非常常见的需求了。但就是这样一个从理论上来看似乎实现起来极其简单的

这篇文章将为大家详细讲解有关CSS怎么实现元素居中,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

在 CSS 中要设置元素水平垂直居中是一个非常常见的需求了。但就是这样一个从理论上来看似乎实现起来极其简单的,在实践中,它往往难住了很多人。

让元素水平居中相对比较简单:如果它是一个行内元素,就对它的父元素应用 text-align: center;如果它是一个块级元素,就对它自身应用 margin: auto。

然而如果要对一个元素进行垂直居中,那就没有那么容易了,有时候光是想想就令人头皮发麻了。

本文分别从行内元素和块级元素进行说明,将目前比较流行的实现方式进行汇集并解析实现原理,方便大家查阅。这里要说明一点,每一种方式都不是十全十美的,关键要看自己的需求,从而分析出哪种实现方式是最合适的。

行内元素

首先我们先把基础代码写出来:

<div class="main">    <span class="content">我是要居中的行内元素span</span></div>
.main {    width: 300px;    height: 300px;    background-color: #50ba8b;}.content {    background-color: #5b4d4e;    color: #FFFFFF;}

class 为 .main 的 div 包裹这一个 class 为 .content 的行内元素 span,我们的目的就是要让 .content 元素 在 .main 元素中居中。

水平居中

text-align

行内元素的水平居中比较简单,我们直接在 .main 中添加 text-align: center; 即可,此时 .main 变为:

.main {    width: 300px;    height: 300px;    background-color: #50ba8b;        text-align: center;  }

实现原理: 设置 text-align 的值为 center ,因为该属性规定元素中的文本的水平对齐方式,那么设置为 center 则文本就水平居中了。

垂直居中

line-height

行内元素的垂直居中我们分为 一行 和 多行或者图片等替换元素 来说明。

如果是 一行,那么我们可以使用 line-height 来实现,此时 .main 元素 css 代码变为:

.main {    width: 300px;    height: 300px;     background-color: #50ba8b;    line-height: 300px; }

其实设置了 line-height 就可以让文本垂直居中,并不需要同时设置 height,这里也是一直存在的一个误区。

实现原理: 这种方式实现垂直居中运用的是 CSS 中“行距的上下等分机制”,这也说明了为什么该方式只适用于 一行 的文本。

还有一点需要说明是,这种方式实现的垂直居中是“近似”的,并不是完美的垂直居中,因为文字字形的垂直中线位置普遍要比真正的“行框盒子”的垂直中线位置低,而由于我们平时使用的 font-size 比较小,使得这点偏差不容易察觉出来,那么感官上也就看成是垂直居中了。

line-height 及 vertical-align

下面再来说说 多行或者图片等替换元素 的垂直居中效果实现,这里我们需要同时借助 line-height 和 vertical-align 来实现。

先让文本换行:

<div class="main">    <span class="content">        我是要居中的行内元素span <br>        我是要居中的行内元素span    </span></div>

再看修改之后的 css 代码:

.main {    width: 300px;    background-color: #50ba8b;    line-height: 300px;}.content {    display: inline-block;    background-color: #5b4d4e;    color: #FFFFFF;    line-height: 20px;    margin: 0 20px;    vertical-align: middle;}

实现原理:

  • 设置 .content 元素的 display 为 inline-block。作用在于既能重置外部的 line-height 为正常大小,又能保持行内元素特性,从而可以设置 vertical-align 属性,以及产生一个非常关键的“行框盒子”。我们需要的其实并不是这个“行框盒子”,而是每个“行框盒子”都会附带的一个产物 &mdash;&mdash; “幽灵空白节点”,即一个宽度为 0,表现如同普通字符的看不见的“节点”。有了这个“幽灵空白节点”,我们的 line-height: 300px; 就有了作用的对象,从而相当于在 .content 元素前面撑起了一个高度为 300px 的宽度为 0 的行内元素。

  • 因为行内元素默认都是基线对齐的,所以我们通过对 .content 元素设置 vertical-align: middle; 来调整多行文本的垂直位置,从而实现我们想要的“垂直居中”效果。这种方式也适用于 图片等替换元素 的垂直居中效果。当然这里的“垂直居中”也是近似的,这是由于 vertical-align 导致的,具体为什么可以深入了解 vertical-align: middle;。

块级元素

依然先把基础代码写出来:

<div class="main">    <div class="content">我是要居中的块级元素div</div></div>
.main {    width: 300px;    height: 300px;    background-color: #50ba8b;}.content {    width: 150px;    height: 150px;    background-color: #5b4d4e;}

class 为 .main 的 div 包裹这一个 class 为 .content 的 块级元素 div,我们的目的就是要让 .content 元素 在 .main 元素中居中。

position + margin: auto

实现代码如下:

.main {    width: 300px;    height: 300px;    background-color: #50ba8b;            position: relative;}.content {    width: 150px;    height: 150px;    background-color: #5b4d4e;        position: absolute;    top: 0;    left: 0;    bottom: 0;    right: 0;    margin: auto;}

实现原理:

  1. 设置 .main 元素为相对定位 position: relative;,这样其子元素设置绝对定位时就相对它了。

  2. 然后设置 .content 元素为绝对定位 position: absolute; 并设置它的 top、left、bottom、right 都为0,这样该元素的元素的尺寸表现为“格式化宽度和格式化高度”,和 <div> 的“正常流宽度”一样,同属于外部尺寸,也就是尺寸自动填充父级元素的可用尺寸,但由于此时我们设置了 .content 元素的宽高,就限制了元素自动填充,这样就多出来150px的空间了。

  3. 最后我们设置 .content 元素为 margin: auto; ,此时根据 auto 的计算规则,将上下左右剩余空间全部等分了,自然就居中了。

position + margin-left/top

实现代码如下:

.main {    width: 300px;    height: 300px;    background-color: #50ba8b;            position: relative;}.content {    width: 150px;    height: 150px;    background-color: #5b4d4e;        position: absolute;    top: 50%;    left: 50%;    margin-left: -75px;    margin-top: -75px;}

实现原理:

  1. 设置 .main 元素为相对定位 position: relative;,这样其子元素设置绝对定位时就相对它了。

  2. 然后设置 .content 元素为绝对定位 position: absolute; 并设置 top: 50%;、left: 50%;,这样.content 元素的左上角就位于 .main 元素的中心了。

  3. 最后设置 .content 元素 margin-left: -75px;、margin-top: -75px; 将自身左移及上移宽高的一半,这样 .content 元素的中心处于 .main 元素的中心处,自然就实现了居中效果。

  4. 这种方法的缺点就是需要固定 .content 元素的宽高。

position + translate

实现代码如下:

.main {    width: 300px;    height: 300px;    background-color: #50ba8b;            position: relative;}.content {    width: 150px;    height: 150px;    background-color: #5b4d4e;        position: absolute;    top: 50%;    left: 50%;    transfORM: translate(-50%, -50%);}

实现原理:

  1. 设置 .main 元素为相对定位 position: relative;,这样其子元素设置绝对定位时就相对它了。

  2. 然后设置 .content 元素为绝对定位 position: absolute; 并设置 top: 50%;、left: 50%;,这样.content 元素的左上角就位于 .main 元素的中心了。

  3. 最后设置 .content 元素 transform: translate(-50%, -50%); 将自身左移及上移宽高的一半,这样 .content 元素的中心处于 .main 元素的中心处,自然就实现了居中效果。

  4. 这种方法的好处就是不需要固定 .content 元素的宽高。

Flexbox

实现代码如下:

.main {    width: 300px;    height: 300px;    background-color: #50ba8b;        display: flex;}.content {    width: 150px;    height: 150px;    background-color: #5b4d4e;        margin: auto;}

实现原理:

  • 设置 .main 元素 display: flex;。

  • 然后设置 .content 元素为 margin: auto; 即可实现居中。

  • 这是毋庸置疑的最佳解决方案,我们不需要设置 .content 元素为绝对定位,margin: auto 自然就可以作用于宽高,而且我们也不需要设置 .content 元素的宽高, 因为Flexbox(伸缩盒)是专门针对这类需求所设计的。

  • 缺点就是目前浏览器支持程度相对其它方式会低些。

Flexbox 的另一个好处在于,它还可以将匿名容器(即没有被标签包裹的文本节点)垂直居中。比如我们不设置 .main 元素为 display: flex;,而是设置 .content 元素为 display: flex;,并借助 Flexbox 规范所引入的 align-items 和 justify-content 属性,我们可以让它内部的文本也实现居中(我们可以对.main 元素使用相同的属性来使 .content 元素元素居中,但比 margin: auto 方法要更加优雅一些,并且同时起到了回退的作用)。

.content {    width: 150px;    height: 150px;    background-color: #5b4d4e;        display: flex;    align-items: center;    justify-content: center;    margin: auto;}

关于“CSS怎么实现元素居中”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

--结束END--

本文标题: CSS怎么实现元素居中

本文链接: https://www.lsjlt.com/news/252754.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • CSS怎么实现元素居中
    这篇文章将为大家详细讲解有关CSS怎么实现元素居中,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。在 CSS 中要设置元素水平垂直居中是一个非常常见的需求了。但就是这样一个从理论上来看似乎实现起来极其简单的...
    99+
    2023-06-08
  • CSS中怎么实现元素水平居中
    本篇文章为大家展示了CSS中怎么实现元素水平居中,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。CSS常见的让元素水平居中显示方法用CSS让元素居中显示并不是件很简单...
    99+
    2024-04-02
  • css怎么实现元素水平垂直居中
    小编给大家分享一下css怎么实现元素水平垂直居中,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!一、父元素的flex布局实现元素的水平垂直居中示例代码如下:<...
    99+
    2023-06-08
  • CSS如何实现定位元素居中
    这篇文章主要讲解了“CSS如何实现定位元素居中”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“CSS如何实现定位元素居中”吧!绝对定位元素的居中实现如果要问如...
    99+
    2024-04-02
  • CSS行内元素和块级元素怎么居中
    本篇内容介绍了“CSS行内元素和块级元素怎么居中”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一.水平居中...
    99+
    2024-04-02
  • css如何实现块元素居中对齐
    这篇文章主要为大家展示了“css如何实现块元素居中对齐”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“css如何实现块元素居中对齐”这篇文章吧。块元素居中对齐如果...
    99+
    2024-04-02
  • CSS元素居中布局的实现方法
    本篇内容主要讲解“CSS元素居中布局的实现方法”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“CSS元素居中布局的实现方法”吧!首先我们需要知道元素都有哪些种类?...
    99+
    2024-04-02
  • css中实现元素垂直居中的方法
    本篇文章给大家分享的是有关css中实现元素垂直居中的方法,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。【一】知道居中元素的宽高absolute + 负margin代码实现.wr...
    99+
    2023-06-08
  • css中怎么控制div中元素居中
    这篇文章给大家介绍css中怎么控制div中元素居中,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。div中行级元素居中代码如下:<div class="treeTitle...
    99+
    2024-04-02
  • css如何实现绝对定位元素居中
    这篇文章将为大家详细讲解有关css如何实现绝对定位元素居中,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。绝对定位元素居中(水平和垂直方向)emo {    ...
    99+
    2023-06-26
  • CSS行内元素和块级元素的居中的实现方法
    本篇内容介绍了“CSS行内元素和块级元素的居中的实现方法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一....
    99+
    2024-04-02
  • 如何使用CSS实现定位元素居中
    本文将为大家详细介绍“如何使用CSS实现定位元素居中”,内容步骤清晰详细,细节处理妥当,而小编每天都会更新不同的知识点,希望这篇“如何使用CSS实现定位元素居中”能够给你意想不到的收获,请大家跟着小编的思路...
    99+
    2024-04-02
  • css元素居中的操作
    本篇内容主要讲解“css元素居中的操作”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“css元素居中的操作”吧!水平居中若为行内元素,对其父元素用text-ali...
    99+
    2024-04-02
  • 怎么在CSS中设置元素垂直居中
    这篇文章给大家介绍怎么在CSS中设置元素垂直居中,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。1.容器里面的内容只有一行文字<!DOCTYPE html><html> &nb...
    99+
    2023-06-14
  • CSS如何实现子元素div水平垂直居中
    本文将为大家详细介绍“CSS如何实现子元素div水平垂直居中”,内容步骤清晰详细,细节处理妥当,而小编每天都会更新不同的知识点,希望这篇“CSS如何实现子元素div水平垂直居中”能够给你意想不到的收获,请大家跟着小编的思路慢慢深入,具体内容...
    99+
    2023-06-08
  • 如何使用css实现垂直居中任何元素
    这篇文章给大家分享的是有关如何使用css实现垂直居中任何元素的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。垂直居中任何元素 (vertical-center anything)在没有准备使用CSSGrid 布局的...
    99+
    2023-06-27
  • CSS如何实现宽度的块级元素水平居中
    本篇内容主要讲解“CSS如何实现宽度的块级元素水平居中”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“CSS如何实现宽度的块级元素水平居中”吧!确定宽度的块级元素的水平居中是通过设置margin-...
    99+
    2023-07-05
  • css如何控制div中元素居中
    这篇文章主要讲解了“css如何控制div中元素居中”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“css如何控制div中元素居中”吧!div中行级元素居中代码如下:<div c...
    99+
    2023-07-04
  • jQuery如何实现​元素屏幕居中
    小编给大家分享一下jQuery如何实现元素屏幕居中,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!元素屏幕居中jQuery.fn.center =&nbs...
    99+
    2023-06-27
  • CSS元素居中的方法有哪些
    这篇文章主要介绍了CSS元素居中的方法有哪些的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇CSS元素居中的方法有哪些文章都会有所收获,下面我们一起来看看吧。# 内联元素水平居中...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作