CSS实现元素水平垂直居中的各种方法

article/2025/9/27 15:19:41

关于 CSS 如何将元素进行水平垂直居中的几种常用方法

前言

        在设计网页页面的过程中,总会有将元素或者文字进行水平或者垂直居中的要求,各种CSS样式调整,搞的头都大了。这里将会介绍 CSS 中几种常用到的水平垂直居中的方法,希望能够对你有所帮助。


接下来出现的CSS代码如无详细说明均使用以下Html代码:

<body><div id="father"><!-- 父元素只做参照作用 --><div id="son">居中示例</div></div>
</body>

一、CSS实现水平居中

        对于行内元素,CSS实现水平居中的方法如下:

text-align:center;

        对于块级元素,CSS实现水平居中的方法主要有以下几种:

       1、通过绝对定位

               对于父元素和子元素的宽度都确定的情况,可以通过设置父元素position:absolute,子元素给剩余宽度一半的margin-left实现CSS水平居中。

#father{background-color: aqua;width: 200px;height: 200px;/* 通过绝对定位实现水平居中 */position: absolute;}#son{background-color: aquamarine;width: 100px;height: 100px;/* 让子元素左边与父元素的最左侧相距50%((200-100)/2) */margin-left: 50px;}

        2、通过 display:table-cell 和 margin-left

                如果父元素和子元素的宽度都确定的情况,也可以使用display:table-cell和margin-left实现CSS水平居中;此时,父元素display:table-cell,子元素给剩余宽度一半的margin-left。

#father{background-color: aqua;width: 200px;height: 200px;/* 通过 display:table-cell 和 margin-left 实现水平居中 */display: table-cell;}#son{background-color: aquamarine;width: 100px;height: 100px;/* 让子元素左边与父元素的最左侧相距50%((200-100)/2) */margin-left: 50px;}

                 再次提醒:以上两种方法只适用于父元素和子元素的宽度都确定的情况!

已知父元素和子元素的宽度

        3、使用 margin 和 text-align 属性

                当父元素有指定宽度和长度时,可以通过“margin: 0 auto; text-align: center”实现CSS水平居中。

#father{background-color: aqua;/* 父元素的width和height必须指定 */width: 500px;height: 100px;}#son{background-color: aquamarine;width: 100px;height: 100px;/* 通过margin+text-align实现水平居中 */margin: 0 auto;text-align: center;}

                结果图如下:

父元素需要指定width和height,子元素的长宽不做要求

        4、通过 display:flex

                如果浏览器兼容flexbox的话,可以通过“display:flex”实现CSS水平居中。

#father{background-color: aqua;/* width: 500px;height: 100px; *//* 父元素 display:flex */display: flex;flex-direction: column;}#son{background-color: aquamarine;width: 100px;height: 100px;/* 子元素 align-self:center */align-self: center;}

                结果图如下:

与上个方法相比不需要知道父元素的长宽了

        5、通过transform属性

                 不推荐使用这种方法,因为transform属性在各个浏览器中的表现行为不一致,可能会出现奇怪的兼容问题。

#father{background-color: aqua;height: 250px;width: 250px;position: relative;}#son{background-color: aquamarine;width: 100px;height: 100px;text-align: center;position: absolute;left: 50%;top: 20%;transform: translate(-50%,-50%);}
不推荐使用

二、CSS实现垂直居中

        1、块级元素

                对于块级元素的布局,垂直居中和水平居中类似,对于水平居中适用的大多对于垂直居中也适用:

#father{background-color: aqua;width: 200px;height: 200px;/* 通过绝对定位实现垂直居中 */position: absolute;}#son{background-color: aquamarine;width: 100px;height: 100px;/* 让子元素顶部与父元素的顶部相距50%((200-100)/2) */margin-top: 50px;}
#father{background-color: aqua;width: 200px;height: 200px;/* 通过 display:table-cell 和 margin-top 实现垂直居中 */display: table-cell;}#son{background-color: aquamarine;width: 100px;height: 100px;/* 让子元素顶部与父元素的顶部相距50%((200-100)/2) */margin-left: 50px;}
已知父元素和子元素的长宽的话可以使用上述方法实现CSS垂直居中
#father{background-color: aqua;/* width: 100px; */height: 500px;/* 父元素 display:flex */display: flex;}#son{background-color: aquamarine;width: 100px; height: 100px;/* 子元素 margin: auto 0 */margin: auto 0;/* 子元素 align-self: center 也可以实现 */align-self: center;}
通过Flex布局可以在不需要父元素长宽的情况下将子元素垂直居中
#father{background-color: aqua;width: 300px;height: 300px;position: relative;}#son{background-color: aquamarine;width: 100px; height: 100px;position: absolute;left: 50%;top: 50%;transform: translate(-50%,-50%);}
考虑到兼容问题还是不推荐使用transform

        2、行内元素

                对于行内元素(行内块元素同理),可以通过verticle-align:middle实现CSS垂直居中。

#father{background-color: aqua;width: 300px;height: 300px;line-height: 300px;}#father img{width: 100px; height: 100px;vertical-align: middle;}
<body><div id="father"><!-- 父元素只做参照作用 --><!-- <div id="son">块级元素不能用此方法</div> --><img src="./Koishi.jpg" alt=""></div>
</body>
使用 line-height 和 vertical-align 对图片进行垂直居中

         

#father{background-color: aqua;width: 300px;height: 300px;display:table;}#child{display: table-cell; vertical-align: middle;}
<body><div id="father"><!-- 父元素只做参照作用 --><!-- <div id="son">块级元素不能用此方法</div> --><p id="child">居中示例</p></div>
</body>
使用 display 和 vertical-align 对容器里的文字进行垂直居中

 三、CSS实现水平垂直居中

         要想实现元素在水平和垂直都处于居中的位置,最简单粗暴的方法就是在之前水平/垂直居中的情况下实现另一个方向的居中。这里介绍一下CSS中几种常用到的水平垂直居中的方法。

         1、使用 margin:auto

                当元素有给定的高度以及宽度的时候,使用 margin: auto; 元素仅会水平居中,并不会进行垂直居中。此时就需要设置元素的 position 为 absolute,父级元素的 position 为 relative,同时元素的上下左右都需要设置为 0,即可实现水平垂直均为居中。

#father{background-color: aqua;width: 500px;height: 500px;position: relative;}#son{background-color: aquamarine;width: 100px; height: 100px;margin: auto;  position: absolute;  top: 0;  left: 0;  right: 0;  bottom: 0;}
已知父元素的长宽的情况下可以使用

         2、使用 Flex 布局

                在不清楚父元素的长宽的情况下可以通过弹性布局来设置水平垂直居中,需要设置父级元素 display:flex 、水平布局 justify-content 以及垂直布局 align-items两个属性。

#father{background-color: aqua;height: 600px;display: flex;justify-content: center;align-items: center;}#son{background-color: aquamarine;width: 100px; height: 100px;}
不清楚父元素的长宽的情况下可以使用

         以上是元素的水平垂直居中常见用法,在实际操作中,将文字进行水平垂直居中也是一个常见的需求。下面介绍的是如何通过CSS实现文字水平垂直居中:

                3、文本水平对齐和行高

                        可以通过设置 text-align 和 line-height 实现文字水平垂直居中:

#father{background-color: aqua;width: 200px;height: 200px;}#son{text-align: center;line-height: 200px;}
根据父元素的属性实现文字居中

                         也可以通过网格布局 grid 来实现文字水平垂直居中,这种方法有两种实现方式:对元素本身属性进行设置,或者在父级元素中设置grid。

#father{background-color: aqua;width: 600px;height: 300px;display: grid;/* 在父级元素中设置grid */align-items: center;justify-content: center}#son{/* 对元素本身属性进行设置 *//* align-self: center;justify-content: center;margin: auto; */}
使用两种网格布局方式都可以达到这种效果

总结

        以上就是常见的CSS实现水平垂直居中的方法,限于笔者水平,本文介绍的居中方法并非全部,如有补充或者指正欢迎在评论区进行交流。


http://chatgpt.dhexx.cn/article/W9cmvH4U.shtml

相关文章

CSS水平垂直居中常见方法总结(转)

文章目录 一、简介二、元素水平居中三、元素水平垂直居中3.1 position 元素已知宽度3.2 position transform 元素未知宽度3.3 flex布局3.4 table-cell布局 一、简介 说明&#xff1a;本篇文章只是总结一些方法&#xff0c;例子用到的各个元素属性不做解释&#xff0c;详情请看…

CSS 水平垂直居中的方式

目录 在不知道子元素宽高的情况下&#xff0c;水平垂直居中的六种方式&#xff1a; 1、弹性盒子布局方式来实现&#xff08;flex&#xff09;。 2、绝对定位 transform 3、table标签 4、display&#xff1a;table-cell 5、display: grid 6、writing-mode 属性 在不知道子…

CSS实现DIV的水平与垂直居中

使用CSS样式实现DIV的水平与垂直居中。 1、使用<div>标签的 align 属性实现水平居中 HTML中的 <div> 标签的 align 属性用于规定 div 元素中的内容的水平对齐方式。所有浏览器都支持 align 属性。 语法&#xff1a; <div align"value"> 属性值…

Java了解消息摘要算法

Java了解消息摘要算法 什么是消息摘要算法现行的消息摘要算法MD系列发展历史MD2算法MD4算法MD5算法 后续 SHA系列发展历史SHA-0 与 SHA-1SHA-2 后续 国密算法SM3发布后续 HMAC系列发展历史背景发展 后续 本文小结疑问 后续 什么是消息摘要算法 消息摘要算法的主要特征是加密过…

散列算法(也叫:摘要算法)

散列算法(也叫&#xff1a;摘要算法)&#xff1a; 特点&#xff1a;① 无论输入的消息有多长&#xff0c;计算出来的消息摘要的长度总是固定的。② 消息摘要看起来是“随机的”。这些比特看上去是胡乱的杂凑在一起的。③ 一般地&#xff0c;只要输入的消息不同&#xff0c;对其…

信息摘要算法之一:MD5算法分析及实现

MD5即Message-DigestAlgorithm 5&#xff08;信息-摘要算法5&#xff09;&#xff0c;用于确保信息传输完整一致。是计算机广泛使用的杂凑算法之一&#xff08;又译摘要算法、哈希算法&#xff09;&#xff0c;主流编程语言普遍已有MD5实现。 1、MD5算法简介 MD5在90年代初由…

文档摘要自动提取算法——抽取式

文档摘要自动提取算法——抽取式 自动提取文档摘要的算法&#xff0c;主流方法分为两类&#xff1a;Extractive 抽取式、Abstractive 概要式。这篇我们主要将抽取式。 抽取式&#xff1a; 从原始文档集中抽取一些具有代表性的文本片段构成摘要&#xff0c;这些片段可以是整个文…

信息摘要算法之三:SHA256算法分析与实现

前面一篇中我们分析了SHA的原理&#xff0c;并且以SHA1为例实现了相关的算法&#xff0c;在这一片中我们将进一步分析SHA2并实现之。 1、SHA简述 前面的篇章中我们已经说明过&#xff0c;SHA实际包括有一系列算法&#xff0c;分别是SHA-1、SHA-224、SHA-256、SHA-384以及SHA-…

信息摘要算法之二:SHA1算法分析及实现

SHA算法&#xff0c;即安全散列算法&#xff08;Secure Hash Algorithm&#xff09;是一种与MD5同源的数据加密算法&#xff0c;该算法经过加密专家多年来的发展和改进已日益完善&#xff0c;现在已成为公认的最安全的散列算法之一&#xff0c;并被广泛使用。 1、概述 SHA算法…

常见的信息摘要和加密算法(原理+使用)

目录 散列(Hash)算法MD5MD5和Base64 SHA系列HMAC系列 对称加密算法DES3DESAES 非对称加密算法RSAECDHE 加密盐 散列(Hash)算法 MD5 MD5信息摘要算法&#xff08;MD5 Message-Digest Algorithm&#xff09;&#xff0c;一种被广泛使用的密码散列函数&#xff0c;可以将任意数据产…

【加密算法】5 种常见的摘要、加密算法

大家平时的工作中&#xff0c;可能也在很多地方用到了加密、解密&#xff0c;比如&#xff1a; 用户的密码不能明文存储&#xff0c;要存储加密后的密文用户的银行卡号、身份证号之类的敏感数据&#xff0c;需要加密传输还有一些重要接口&#xff0c;比如支付&#xff0c;客户…

6、摘要提取算法

目前主要方法有&#xff1a; 基于统计&#xff1a;统计词频&#xff0c;位置等信息&#xff0c;计算句子权值&#xff0c;再简选取权值高的句子作为文摘&#xff0c;特点&#xff1a;简单易用&#xff0c;但对词句的使用大多仅停留在表面信息。基于图模型&#xff1a;构建拓扑…

视频摘要算法概述

DSNet: A Flexible Detect-to-Summarize Network for Video Summarization 论文 代码 不同于以往将视频摘要视为回归问题&#xff08;没有考虑时间相关性和完整性约束&#xff09;&#xff0c;2021年&#xff0c;最早的考虑这两者。 视频摘要通常分为三步&#xff1a; 1、镜头…

信息摘要算法

Java常用的安全算法 目录概 述 LD is tigger forever&#xff0c;CG are not brothers forever&#xff0c; throw the pot and shine forever. Modesty is not false, solid is not naive, treacherous but not deceitful, stay with good people, and stay away from poor pe…

摘要算法(哈希算法)

1. HASH算法 哈希算法(Hash)又称摘要算法(Digest),它的作用是:对任意一组输入数据进行计算,得到一个固定长度的输出摘要。 哈希函数的主要作用不是完成数据加密与解密工作,它是用来检验数据完整性的重要技术,运算结果具有不可逆性。 通过哈希函数,可以为数据创建&…

五分钟搞懂摘要算法

一.摘要算法和摘要 1.概述 摘要算法又称哈希算法、散列算法。摘要也称哈希值&#xff0c;表示输入任意长度的数据&#xff0c;都会输出固定长度的数据。通过摘要算法&#xff08;比如MDS和SHA-1&#xff09;就可以得到该哈希值。 2.特点 长度固定&#xff0c;结果越长&#xff…

常用几种消息摘要算法

文章目录 1、MD5 (Message Digest algorithm 5 消息摘要算法版本5)2、SHA (Secure Hash Algorithm 安全散列算法)3、MAC (Hash Message Authentication Code 散列消息鉴别码) 消息摘要&#xff08;Message Digest&#xff09;又称为数字摘要&#xff08;Digital Digest&#xf…

摘要算法与加密(以MD5算法为例)

【README】 部分内容总结自&#xff1a; 摘要与加密的区别&#xff08;以MD5算法为例&#xff09; - 掘金https://juejin.cn/post/6844903561478799368 【1】摘要算法与加密区别 【1.1】摘要算法&#xff08;不可逆&#xff09; 1&#xff09;摘要算法&#xff1a; 说白了…

报文摘要算法

1 报文摘要算法 报文摘要算法是一种将任意长度报文转换成固定长度的报文摘要算法。它具有以下六个特点&#xff1a;能够作用于任意长度的报文&#xff1b;产生有限位数的标识信息&#xff1b;易于实现&#xff1b;具有单向性&#xff1b;具有抗碰撞性&#xff1b;具有高灵敏性…

摘要算法

摘要算法是一种能产生特殊输出格式的算法&#xff0c;这种算法的特点是&#xff1a;无论用户输入多少长度的原始数据&#xff0c;经过计算后输出的密文都是固定长度的&#xff0c;这种算法的原理是根据一定的运算规则对原数据进行某种形式的提取&#xff0c;这种提取就是摘要&a…