div+css实现水平/垂直/水平垂直居中超详解

article/2025/9/27 15:09:52

目录

  • 一、水平居中
    • 1.块级元素水平居中
      • 方法一:设置margin:0 auto
      • 方法二:设置flex布局
      • 方法三:设置css3的transform
    • 2.行内元素水平居中
      • 行内元素在块级元素中水平居中
        • 方法一:将外层块级元素设置为text-align:center
        • 方法二:将行内元素设置为块级元素
    • 3.元素内部文字水平居中
      • 1)块内文字水平居中
        • 方法:text-align:center
      • 2)行内文字水平居中
  • 二、垂直居中
    • 1)块级元素的内部元素垂直居中
      • 方法一:flex布局(块级元素、行内元素都可)
      • 方法二:css3 transform属性(对行内元素无效)
    • 2)元素内文字垂直居中
      • 1.设置line-height和height相同(仅在容器宽高固定时有效,那么当宽高为百分比时无效)
      • 2.flex布局
    • 附:css2的vertical-align属性(对块级元素无效)
  • 三、水平垂直居中
    • 1.块级元素水平垂直居中
      • 1)flex布局:设置父元素flex属性
      • 2)flex布局:设置子元素margin:auto
      • 3)使用css3 transform属性
      • 4)使用absolute定位
      • 5)absolute定位+margin:auto
    • 2.元素内文字水平垂直居中
      • 方法一:设置text-align和line-height
      • 方法二:flex布局(都可)
  • 综上所述,flex布局近乎全能,要好好掌握!!

在此之前,清除一下浏览器的默认样式

html,body {margin: 0;padding: 0;
}

ok,开始正文~

一、水平居中

1.块级元素水平居中

注意点:需要设置父元素的width
例:wrapper相对屏幕居中
在这里插入图片描述
html代码:

<div class="wrapper"><div class="box"></div>
</div>

方法一:设置margin:0 auto

只要水平居中时,推荐使用!

.wrapper {width: 100%;	/*默认也为100%*/
}
.box {margin: 0 auto;width: 100px;height: 100px;background-color: red;
}

方法二:设置flex布局

注意点:需要设置父元素的width

.wrapper {width: 100%;display: flex;flex-direction: row;justify-content: center;
}
.box {width: 100px;height: 100px;background-color: red;
}

方法三:设置css3的transform

默认情况下,position的值为static(静止的、不可以移动的),元素在文档流里是从上往下、从左到右紧密的布局的,我们不可以直接通过top、left等属性改变它的偏移。所以,想要移动元素的位置,就要把position设置为不是static的其他值,如relative,absolute,fixed等。然后,就可以通过top、bottom、right、left等属性使它在文档中发生位置偏移(注意,relative是不会使元素脱离文档流的,absolute和fixed则会!也就是说,relative会占据着移动之前的位置,但是absolute和fixed就不会)。

设置了position: relative后的代码如下:

.wrapper {width: 100%;
}
.box {position: relative;left: 50%;transform: translateX(-50%);width: 100px;height: 100px;background-color: red;
}

2.行内元素水平居中

行内元素(内联元素)
(1) 不占据一整行,随内容而定
(2) 不可以设置宽高,也不可以设置行高,其宽度随着内容增加,高度随字体大小而改变
(3) 内联元素可以设置外边界,但是外边界不对上下起作用,只能对左右起作用
(4) 也可以设置内边界,但是内边界在ie6中不对上下起作用,只能对左右起作用

为了确保行内元素span的长宽不为0,我们在元素中写入一些文字,使元素长宽即为文字长宽。
ps:要想达到空行内元素的居中效果,需要先将行内元素设置为块级元素,然后按块级元素的居中方法设置。
在这里插入图片描述
html代码:

<div class="wrapper"><span class="box">aaa</div>
</div>

行内元素在块级元素中水平居中

方法一:将外层块级元素设置为text-align:center

.wrapper {text-align: center;
}
.box {background-color: red;
}

方法二:将行内元素设置为块级元素

.wrapper {
}
.box {width: 20%;		/*这时如果不设置width,则默认为100%*/display: block;margin: o auto;background-color: red;
}

3.元素内部文字水平居中

在这里插入图片描述

1)块内文字水平居中

方法:text-align:center

html代码:

<div class="wrapper"><div class="box">水平居中</div>
</div>
.box {width: 100px;height: 100px;background-color: red;text-align: center;
}

2)行内文字水平居中

行内元素不存在宽度这一概念,它的宽度即为内部元素宽度,因此他内部的元素一定是居中的。
当然,如果一定要设置,可以将行内元素转化为块级元素,达到内部文字居中效果(不过没有什么必要)。

<div class="wrapper"><span class="box">水平居中</div>
</div>
.box {width: 100px;height: 100px;background-color: red;display: block;text-align: center;
}

二、垂直居中

在这里插入图片描述

1)块级元素的内部元素垂直居中

行内元素本身不存在高度,所以也不会也内部元素居中的概念。
注意点:需要设置父元素的height,这里为了方便设置为100vh
html:

<div class="wrapper"><div class="box"></div>
</div>

方法一:flex布局(块级元素、行内元素都可)

.wrapper {height: 100vh;     /*将高度设置为屏幕高,默认height随内部元素高度变化而变化*/display: flex; 		/*行内元素为inline-flex*/flex-direction: column;justify-content: center;
}
.box {width: 50px;height: 50px;background-color: red;
}

据我观察,divspan元素的display属性均可以设置为flexinline-flex。也就是说,当使用flex时,是不看元素为div还是span的,但是,flexinline-flex却有着明显的区别:
display:inline-flex;
在这里插入图片描述
display:flex;
在这里插入图片描述
以上蓝色部分均为div.wrapper。
可以看到,flex时,wrapper宽度为整个屏幕宽;inline-flex时,wrapper宽度仅为内部元素的宽度。

方法二:css3 transform属性(对行内元素无效)

body {margin: 0;padding: 0;
}
.wrapper {height: 100vh;     /*将高度设置为屏幕高,默认height随内部元素高度变化而变化*/
}
.box {position: relative;   /*脱离文档流*/top: 50%;transform: translateY(-50%); width: 50px;height: 50px;background-color: red;
}

2)元素内文字垂直居中

在这里插入图片描述

<div class="wrapper"><div class="box">aaa</div>
</div>

1.设置line-height和height相同(仅在容器宽高固定时有效,那么当宽高为百分比时无效)

.wrapper {display: flex;flex-direction: row;justify-content: center;align-items: center;	/*以上的flex是为了使wrapper在屏幕中水平垂直居中*/width: 100%;height: 100vh;
}
.box{width: 50px;height: 50px;background-color: red;line-height: 50px;
}

2.flex布局

.wrapper {display: flex;flex-direction: row;justify-content: center;align-items: center;	/*以上的flex是为了使wrapper在屏幕中水平垂直居中*/width: 100%;height: 100vh;
}
.box{display: flex;flex-direction: row;align-items: center;  /*以上的flex是为了使文字在box中垂直居中*/width: 50px;height: 50px;background-color: red;
}

附:css2的vertical-align属性(对块级元素无效)

首先要说明的是,该属性不适用于将元素相对屏幕垂直居中,一般用于指定行内元素(inline)或表格单元格(table-cell)元素的垂直对齐方式

该属性定义行内元素的基线相对于该元素所在行的基线的垂直对齐。允许指定负长度值和百分比值。这会使元素降低而不是升高。在表单元格中,这个属性会设置单元格框中的单元格内容的对齐方式。
因此,对于块级元素,该属性不起作用。

网上也有很多关于这个属性的说明,这里不再多说。详细可以参看这篇文章:https://segmentfault.com/a/1190000015366749
不过我更倾向于使用flex

三、水平垂直居中

1.块级元素水平垂直居中

在这里插入图片描述

<div class="wrapper"><div class="box"></div>
</div>

其实也就是将上面的写法结合一下,这里列出两种方法:
同样,我们需要设置父元素的宽、高。其中,width默认为100%;height默认为内部元素高度,这里依然以100vh也就是整个屏幕高度为例。

1)flex布局:设置父元素flex属性

.wrapper {width: 100%;height: 100vh;display: flex;flex-direction: row;justify-content: center;align-items: center;
}
.box{width: 50px;height: 50px;background-color: red;
}

2)flex布局:设置子元素margin:auto

.wrapper {width: 100%;height: 100vh;display: flex;
}
.box{margin: autowidth: 50px;height: 50px;background-color: red;
}

3)使用css3 transform属性

.wrapper {width: 100%;height: 100vh;
}
.box{position: relative;top: 50%;left: 50%;transform: translate(-50%,-50%);width: 50px;height: 50px;background-color: red;
}

4)使用absolute定位

.wrapper {width: 100%;height: 100vh;position: relative;
}
.box{position: absolute;top: 50%;left: 50%;margin-top: -50px; /*height的一半*/margin-left: -50px; /*width的一半*/width: 100px;height: 100px;background-color: red;
}

5)absolute定位+margin:auto

.wrapper {width: 100%;height: 100vh;background-color: #666;position: relative;	/*由于这里wrapper为整个屏幕,所以不加也可以,但当父容器为其他宽高时,这一项必须加上*/
}
.box{position: absolute;top: 0;bottom: 0;left: 0;right: 0;margin: auto;width: 100px;height: 100px;background-color: red;
}

2.元素内文字水平垂直居中

在这里插入图片描述
html:

<div class="wrapper"><div class="box">aaa</div>
</div>

方法一:设置text-align和line-height

.wrapper {display: flex;flex-direction: row;justify-content: center;align-items: center;	/*以上的flex是为了使wrapper在屏幕中水平垂直居中*/width: 100%;height: 100vh;
}
.box{width: 50px;height: 50px;background-color: red;text-align: center;line-height: 50px;  /*与height值相同*/
}

方法二:flex布局(都可)

.wrapper {display: flex;flex-direction: row;justify-content: center;align-items: center;   /*以上的flex是为了使wrapper在屏幕中水平垂直居中*/width: 100%;height: 100vh;
}
.box{display: flex;flex-direction: row;justify-content: center;align-items: center;		/*以上的flex是为了使box内的文字相对box水平垂直居中*/width: 50px;height: 50px;background-color: red;
}

综上所述,flex布局近乎全能,要好好掌握!!


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

相关文章

16种CSS水平垂直居中方法

16种css水平垂直居中方法以及应用&#xff08;文字、图片&#xff09; 一、垂直居中 1、行内元素 基本思想&#xff1a;单行文本子元素line-height 值为父元素 height 值 .parent {height: 200px; }.son {line-height: 200px; }2、块级元素 2.1行内块级元素 基本思想&…

【CSS】CSS实现水平垂直居中

元素水平垂直居中的场景很常见&#xff0c;常用的方法如下&#xff1a; &#xff08;以下方法在chorme测试可行&#xff09; 一、文本垂直居中 <div class"test">这是一段文字</div>.test {width: 200px;height: 200px;background: orange;text-align:…

CSS实现水平垂直居中

方法1&#xff1a;position transform 先设置一个父元素和一个子元素 <div class"father"><div class"child"></div> </div> 给父元素添加相对定位 .father {position: relative; /* 省略部分代码 */ } 给子元素添加绝对定位…

css grid布局实现水平垂直居中 文字水平垂直居中

原来一直使用flex布局来实现水平垂直居中&#xff0c;今天才知道还有grid也是很好用的&#xff0c;参考阮一峰大神的博客&#xff0c;简单记录一下学习&#xff1b; <div class"container"> <div class"item">1</div><…

html css实现文本水平垂直居中显示

这几天在工作中遇到了一个小问题&#xff1a;文本内容怎么能在div里水平垂直居中显示呢&#xff1f;同时群里的小伙伴恰巧也有提问这个问题的&#xff0c;所以我就总结了一下我知道的方法。 一、利用行高(line-height)和vertical-align配合实现 具体做法如下&#xff1a; ht…

CSS 布局 - 水平 垂直对齐

CSS 布局 - 水平 & 垂直对齐 那么怎样设置居中对齐呢? 我们可以用margin: auto来设置水平居中对其元素。auto可以防止 元素的宽高溢出&#xff0c;而且也可以平均分配两边的空白。 举例说明: .center {padding: 23px;border: 5px solid red;width: 41%;margin: auto; }那…

CSS如何实现水平垂直居中?4种工作中非常常用的方法

*CSS如何实现水平垂直居中&#xff1f; ** 1.用定位中的 “子绝父相” 来做 [核心代码是给子盒子添加的margin-top、margin-left 分别等于自身的高度、宽度的负的 一半] PS&#xff1a;缺点&#xff1a;需要提前知道元素的尺寸。如果不知道元素尺寸&#xff0c;这个时候就需要…

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

关于 CSS 如何将元素进行水平垂直居中的几种常用方法 前言 在设计网页页面的过程中&#xff0c;总会有将元素或者文字进行水平或者垂直居中的要求&#xff0c;各种CSS样式调整&#xff0c;搞的头都大了。这里将会介绍 CSS 中几种常用到的水平垂直居中的方法&#xff0c;希望能够…

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;构建拓扑…