【CSS】元素居中总结-水平居中、垂直居中、水平垂直居中

article/2025/9/21 10:33:02

【CSS】元素居中

  • 一、 水平居中
    • 1.行内元素水平居中
      • (1)text-align
    • 2.块级元素水平居中
      • 2.1 margin
        • (1)margin
      • 2.2布局
        • (1)flex+ justify-content(推荐)
        • (2) flex+margin
        • (3)grid+ justify-content
        • (4)grid+ margin
        • (5)table+margin
      • 2.3 定位
        • (1)absolute+translate+left
        • (2)absolute+margin
        • (3)absolute+负margin+left(定宽)
        • (4)relative + 负margin(定宽)
      • 2.4 其他方法
        • (1)转行内元素inline-block+text-align
        • (2)浮动元素:margin
        • (3)浮动元素:relative
  • 二、 垂直居中
    • 1.行内元素水平居中
      • (1)line-height=height
    • 2.块级元素垂直居中
      • 2.2布局
        • (1)flex+ align-items
        • (2)flex+ margin
        • (3)grid+ align-content
        • (4)table-cell+vertical-align+inline-block
      • 2.3 定位
        • (1)absolute+translate+top
        • (2)absolute+负margin+left(定宽)
    • 3.垂直水平居中
      • 3.1布局
        • (1)flex+ align-items+justify-content
        • (2)flex+ margin
        • (3)grid+ place-items
        • (4)table-cell+text-align+vertical-align
      • 3.1定位
        • (1)absolute+translate+left+top
        • (2)absolute+负margin+left+top(定宽)

每每用到居中,总会头疼于css的编写,想着一定要找个时间好好整理一番:
整理的过程中发现很多拼拼凑凑的属性都能实现居中,其实掌握通用的几个就行,一般都比较推荐flex布局,绝对定位在项目中也常有见到,大部分水平和垂直居中分别掌握了,水平垂直居中就是合并在一起,简单的做了个图
(代码部分可以用菜鸟工具在线运行查看:https://c.runoob.com/front-end/61/)

在这里插入图片描述

一、 水平居中

1.行内元素水平居中

(1)text-align

(1)块级元素使用text-align: center,使得块级元素文本内容水平居中
(2)块级元素使用text-align: center,使得包含在块级元素的行内元素或行内块元素居中对齐
(3)块级元素下使用text-align: center,包含在其中的块级元素不能居中对齐
<div class="div1"><p class="p1">块级元素内块级元素文本内容水平居中</p><span class="span1">块级元素内行内元素或行内块元素水平居中</span><p class="p2">块级元素内块级元素本身不能水平居中</p><p class="p2">但块级元素内块级元素继承了文本内容水平居中</p>
</div>
.div1{width:80%;border:10px solid green;text-align:center;
}
.p1{background-color:red
}
.span1{background-color:yellow  
}
.p2{background-color:grey;width:80%
}

在这里插入图片描述

2.块级元素水平居中

2.1 margin

(1)margin

块级元素上margin:0 auto (必须设置宽度width)
适合单个块级元素

 <div class="div1"><p class="p1">块级元素利用margin水平居中</p>
</div>
.div1{width:90%;border:10px solid red;}
.p1{background-color:grey;width:90%;margin:0 auto;
}

在这里插入图片描述

2.2布局

(1)flex+ justify-content(推荐)

块级元素父元素上:
display:flex
justify-cointent:center
(可实现多个块元素同行居中)

<div class="div2"><p class="p2">块级元素利用flex+justify-content水平居中</p>
</div>
.div2{width:90%;border:10px solid blue;display:flex;justify-content:center;
}.p2{width:90%;background-color:grey;
}

在这里插入图片描述

(2) flex+margin

父元素: display:flex
子元素: margin:0 auto
(可实现多个块元素在一行中水平居)

<div class="div3"><p class="p3">块级元素利用flex+margin水平居中</p>
</div>
.div3{width:90%;border:10px solid purple;display:flex;
}
.p3{width:90%;background-color:grey;margin:0 auto
}

在这里插入图片描述
felx+margin此方法还可实现多个块元素在一行中水平居中

<div class="div3"><p class="p3">块级元素利用flex+margin水平居中</p><p class="p3">块级元素利用flex+margin水平居中</p><p class="p3">块级元素利用flex+margin水平居中</p>
</div>
.div3{width:90%;height:20%;border:10px solid purple;display:flex;
}
.p3{background-color:grey;border:1px solid yellow;margin:0 auto
}

在这里插入图片描述

(3)grid+ justify-content

(4)grid+ margin

将方法(1)(2)中flex改为grid即可实现
此方法不能多个块元素一行居中

(5)table+margin

将方法(2)中flex改为table即可实现
此方法不能多个块元素一行居中

2.3 定位

(1)absolute+translate+left

父元素相对定位:position:relative;
子元素绝对定位:
position:absolute;
left:50%;
transform:translate(-50%,0);
其中: left:50%子元素以它自己的左边为基准,向右平移了父元素宽度的50%,此时子元素的左边基准在中间位置,整体子元素偏右
transform:translate(-50%,0);(子元素向左平移自己宽度的一半)
transate参考:https://blog.csdn.net/weixin_42154189/article/details/109714379

 <div class="div6"><p class="p6">块级元素absolute+translate水平居中</p>
</div>
.div6{width:90%;height:20%;border:10px solid orange;position:relative;
}
.p6{width:90%;background-color:grey;position:absolute;left:50%;transform:translate(-50%,0);
}

在这里插入图片描述

(2)absolute+margin

父级元素:position:relative
子元素:
position:absolute;
left:0;
right:0;
margin:0 auto;

<div class="div9"><p class="p9">块级元素absolute+margin水平居中</p>
</div>
.div9{width:90%;height:20%;border:10px solid pink ;position:relative;
}
.p9{width:90%;background-color:grey;position:absolute;left:0;right:0;margin:0 auto;}

在这里插入图片描述

(3)absolute+负margin+left(定宽)

(类似于absolute+translate,只不过这个要求居中的元素定宽)
父级元素:position:relative
子元素:
position:absolute;
left:50%;
margin-left:-100px;

<div class="div8"><p class="p8">块级元素absolute+负margin水平居中</p>
</div>
.div8{width:90%;height:20%;border:10px solid Brown ;position:relative;
}
.p8{width:200px;background-color:grey;position:absolute;left:50%;margin-left:-100px;}

在这里插入图片描述

(4)relative + 负margin(定宽)

对于定宽的块级元素:(对于浮动元素也有效)
position:relative
margin-left:-(元素宽一半)px;

<div class="div7"><p class="p7">块级元素relative + 负margin(定宽)水平居中</p>
</div>
.div7{width:90%;border:10px solid black;
}
.p7{width:200px;background-color:grey;position:relative;left:50%;margin-left:-100px;
}

在这里插入图片描述

2.4 其他方法

(1)转行内元素inline-block+text-align

块级元素转为行内元素:
父级元素text-align:center ;
块级元素display:inline-block;
(其中多个块级元素并列,可在并列块级元素中添加display:inline-block;)

 <div class="div5"><p class="p5">块级元素转为行内元素水平居中</p>
</div>
.div5{width:90%;border:10px solid yellow;text-align:center;
}
.p5{width:90%;background-color:grey;display:inline-block;
}

在这里插入图片描述

(2)浮动元素:margin

在浮动的元素外套一个div,设置margin: 0 auto

<div class="div10"> <div class="div101"><p class="p10">浮动块级元素水平居中</p></div>
</div>
.div10{width:90%;height:20%;border:10px solid GreenYellow  ;
}
.div101{width:20%;margin:0 auto;
}
.p10{background-color:grey;float: left;
}

在这里插入图片描述

(3)浮动元素:relative

<div class="div11"> <div class="div111"><p class="p11">浮动块级元素水平居中</p></div>
</div>
.div11{width:90%;height:20%;border:10px solid LightBlue   ;
}
.div111{float: left;position: relative;left: 50%;
}
.p11{
background-color:grey;
float: left;
position: relative;
right: 50%;
}

在这里插入图片描述

二、 垂直居中

1.行内元素水平居中

(1)line-height=height

父元素的height=子元素line-height

<div class="div1"> <p class="p1">浮动块级元素垂直居中</p>
</div>
*{margin:0px;padding
}
.div1{width:90%;height:200px;border:10px solid GreenYellow  ;
}
.p1{background-color:grey;line-height:200px
}

在这里插入图片描述

2.块级元素垂直居中

2.2布局

(1)flex+ align-items

父元素:display:flex;
align-items:center;

<div class="div2"><p class="p2">块级元素利用flex+align-items垂直居中</p>
</div>
*{margin:0px;padding
}
.div2{width:90%;height:20%;border:10px solid blue;display:flex;align-items:center;
}.p2{width:90%;background-color:grey;
}

在这里插入图片描述

(2)flex+ margin

<div class="div3"><p class="p3">块级元素利用flex+margin垂直
</div>
*{margin:0px;padding:0px;
}
.div3{width:90%;height:100px;border:10px solid purple;display:flex;
}
.p3{width:40%;background-color:grey;margin:auto 0
}

在这里插入图片描述

(3)grid+ align-content

display:grid;
align-content:center;

<div class="div22"><p class="p22">块级元素利用grid+align-content垂直居中</p>
</div>
*{margin:0px;padding
}
.div22{width:90%;height:20%;border:10px solid red;display:grid;align-content:center;
}.p22{background-color:grey;
}

在这里插入图片描述

(4)table-cell+vertical-align+inline-block

<div class="div2"><p class="p2">块级元素利用table-cell;vertical-align垂直居中</p>
</div>
.div2{width:90%;height:200px;border:10px solid blue;vertical-align:middle;display:table-cell;
}.p2{width:90%;background-color:grey;display:inline-block;
}

在这里插入图片描述

2.3 定位

(1)absolute+translate+top

参照水平方法,把移动从x轴变为y轴即可
父元素相对定位:position:relative;
子元素绝对定位:
position:absolute;
top:50%;
transform:translate(0,-50%);

 <div class="div6"><p class="p6">块级元素absolute+translate垂直居中</p>
</div>
*{margin:0px;padding
}
.div6{width:90%;height:20%;border:10px solid orange;position:relative;
}
.p6{width:90%;background-color:grey;position:absolute;top:50%;transform:translate(0,-50%);
}

在这里插入图片描述

(2)absolute+负margin+left(定宽)

<div class="div8"><p class="p8">块级元素absolute+负margin垂直居中</p>
</div>
*{margin:0px;padding
}
.div8{width:90%;height:200px;border:10px solid Brown ;position:relative;
}
.p8{width:200px;height:100px;background-color:grey;position:absolute;top:50%;
margin-top:-50px;
}

在这里插入图片描述

3.垂直水平居中

3.1布局

(1)flex+ align-items+justify-content

结合水平和垂直方法

<div class="div2"><p class="p2">块级元素利用flex+align-items+justify-content垂直居中</p>
</div>
*{margin:0px;padding
}
.div2{width:90%;height:20%;border:10px solid blue;display:flex;align-items:center;justify-content:center;
}.p2{width:90%;background-color:grey;
}

在这里插入图片描述

(2)flex+ margin

结合水平和垂直方法

<div class="div3"><p class="p3">块级元素利用flex+margin垂直居中</p>
</div>
*{margin:0px;padding:0px;
}
.div3{width:90%;height:100px;border:10px solid purple;display:flex;
}
.p3{width:40%;background-color:grey;margin:auto 
}

在这里插入图片描述

(3)grid+ place-items

结合水平和垂直方法

<div class="div22"><p class="p22">块级元素利用grid+place-items垂直居中</p>
</div>
*{margin:0px;padding
}
.div22{width:90%;height:20%;border:10px solid red;display:grid;place-items:center;
}.p22{background-color:grey;
}

在这里插入图片描述

(4)table-cell+text-align+vertical-align

父元素:
display:table-cell;
text-align:center;
vertical-align:middle;
子元素:
display:inline-block;
(会被float、absolute属性破坏效果,同时margin没有效果)

<div class="div8"><p class="p8">块级元素table-cell+水平垂直居中</p>
</div>
*{margin:0px;padding:0px;
}
.div8{width:80%;height:200px;border:10px solid Brown ;display:table-cell;text-align:center;vertical-align:middle;
}
.p8{width:80%;background-color:grey;display:inline-block;
}

在这里插入图片描述

3.1定位

(1)absolute+translate+left+top

结合水平和垂直方法

<div class="div6"><p class="p6">块级元素absolute+translate+left+top水平垂直居中</p>
</div>
*{margin:0px;padding
}
.div22{width:90%;height:20%;border:10px solid orange;position:relative;
}.p22{width:90%;background-color:grey;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);
}

在这里插入图片描述

(2)absolute+负margin+left+top(定宽)

结合水平和垂直方法

<div class="div8"><p class="p8">块级元素absolute+负margin水平垂直居中</p>
</div>
*{margin:0px;padding
}
.div8{width:90%;height:200px;border:10px solid Brown ;position:relative;
}
.p8{width:200px;height:100px;background-color:grey;position:absolute;top:50%;left:50%;margin-left:-100px;margin-top:-50px;
}

在这里插入图片描述


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

相关文章

关于照片(img)的水平居中和垂直居中

本文主要是讲述照片&#xff08;img&#xff09;的水平居中和垂直居中&#xff0c;但是其他元素的水平居中和垂直居中也可借鉴此文。 水平居中&#xff1a; 1.将img元素设置成块级元素 img {display: block;margin: 0 auto;} 2.flex布局 .box1 {width: 100px;height: 100p…

margin 实现水平居中,垂直居中

首先了解下&#xff0c;margin的auto属性的作用是用来分配剩余空间&#xff0c;所以对于有剩余空间的元素才有效哦&#xff08;块及元素&#xff09;。比如图片设置margin: 0 auto是无效的&#xff0c;因为图片是内联元素&#xff0c;不是占一整行&#xff0c;没有剩余空间。 1…

让div在屏幕中居中(水平居中+垂直居中)的几种方法

这里是修真院前端小课堂&#xff0c;本篇分析的主题是 【让div在屏幕中居中&#xff08;水平居中垂直居中&#xff09;的几种方法】 水平居中方法: 1.inline&#xff0c;inline-block元素的水平居中&#xff0c;在父级块级元素中设置text-align:center; 2.确定宽度的块级元素…

CSS布局对齐方式--水平居中、垂直居中、水平垂直居中

前言&#xff1a;在网页布局中&#xff0c;经常遇到需要使元素居中对齐的时候&#xff0c;居中对齐的方式有&#xff1a;水平居中、垂直居中和水平垂直居中。这次&#xff0c;借此回顾总结一下&#xff0c;并在此记录下相关内容。 一、水平居中&#xff1a; &#xff08;1&…

CSS水平居中+垂直居中+水平/垂直居中的方法总结

目录 水平居中 行内元素 块级元素 方案一&#xff1a;(分宽度定不定两种情况) 方案二&#xff1a;使用定位属性 方案三&#xff1a;使用flexbox布局实现&#xff08;宽度定不定都可以&#xff09; 垂直居中 单行的行内元素 多行的行内元素 块级元素 水平垂直居中 已…

HTML/CSS常见的几种水平居中、垂直居中、水平垂直居中方法

HTML/CSS常见的几种水平居中、垂直居中、水平居中方式 一、水平居中 1.第一种方式 在css中使用text-align和display属性 <!DOCTYPE html> <html lang="en"> <head> <meta http-equiv="Content-Type" content="text/html; ch…

CSS居中——水平居中、垂直居中方法

水平居中 1、行内或类行内元素&#xff08;如文本、链接&#xff09; 在块级父元素中用CSS样式实现行内元素水平居中&#xff0c;只需要设置&#xff1a;text-align: center; 这种方法可以让 inline / inline-block / inline-table / flex 等类型的元素实现居中。 效果图&a…

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

CSS实现水平居中与垂直居中 一、水平居中1. 必备知识1.1 text-align 属性1.2 display 属性1.3 margin 属性1.4 position 属性1.5 transform 属性 2. 实现方式2.1 内联元素居中2.2 块级元素居中2.2.1 margin: 0 auto2.2.2 text-align display2.2.3 position transform 二、垂直…

CSS基础知识(五):水平居中和垂直居中

文章目录 一、居中二、水平居中1. 行内元素水平居中2. 块级元素水平居中2.1 使用margin: 0 auto2.2 使用position2.3 使用flex 三、垂直居中1. 行内元素1.1 单行行内元素垂直居中1.2 多行行内元素垂直居中 2. 块级元素2.1 使用position2.2 使用flex 一、居中 行内元素&#xff…

字符串匹配算法之KMP算法(图例详解)

字符串匹配算法之KMP算法&#xff08;图例详解&#xff09; 1.字符串匹配算法及暴力算法1.1 简介1.2 示例题目 2.KMP算法&#xff08;Knuth-Morris-Pratt algorith&#xff09;2.1 朴素算法的缺点2.2 KMP算法2.2.1 KMP算法中的前缀算法2.2.1.1 前缀函数pi的定义2.2.1.2 前缀函数…

字符串匹配算法(KMP)

问题&#xff1a; 给你两个字符串 s 和 pat &#xff0c;请你在 s 字符串中找出 pat 字符串出现的第一个位置&#xff08;下标从 0 开始&#xff09;&#xff0c;如果不存在则返回-1。 1.暴力匹配算法。 暴力匹配算法较好理解&#xff0c;其大致原理如图&#xff1a; 当D和E不…

字符串匹配算法KMP详细解释——深入理解

1. 前言 字符串匹配是一个经典算法问题&#xff0c;展开来讲各类问题多达几十种&#xff0c;有名称的算法也不下三十种&#xff0c;所以需要深入学习的东西有很多。这次我们来探讨一个最简单的问题&#xff0c;假设现在随机输入一个长度为m的主串T&#xff0c;另外输入一个长度…

几种常见的字符串匹配算法

转自http://www.360doc.com/content/14/0325/15/15064667_363609292.shtml 1. 朴素算法 朴素算法是最简单的字符串匹配算法&#xff0c;也是人们接触得最多的字符串匹配算法。代码一看就懂&#xff0c;在此不在赘述。 #include<stdio.h> #include<string.h> voi…

字符串匹配算法——JavaScript

字符串匹配算法——javascript 文章目录 字符串匹配算法——javascript字符串匹配BF算法 &#xff08;暴力匹配&#xff09; √KMP算法 √BM算法**坏字符规则**好后缀规则 Trid树&#xff08;字典树&#xff09;√ 字符串匹配 字符串匹配问题的形式定义&#xff1a; **文本&a…

数据结构与算法--字符串匹配算法

目录 概要 单模式与多模式的区别 单模式匹配算法 BF算法 概念 代码实现 时间复杂度 应用 RK算法 概念 代码实现 时间复杂度 应用 BM算法 概念 算法原理 代码实现 时间复杂度 应用 多模式匹配算法 Trie树 概念 Trie树的插入 Trie树的查找 代码实现 时间复杂度 应用 概要 字符…

简单高效的字符串匹配算法

Quick Search算法 算法简介 Quick Search算法属于Sunday算法的一种。Sunday算法由Daniel M Sunday在1990年提出。论文原文&#xff1a;A VERV FAST SU6STRINC SEARCH ALGORITHM 在论文中&#xff0c;作者提出了三个不同的算法&#xff1a;Quick Search算法、Maximal Shift算…

算法之字符串匹配

字符串匹配&#xff1a;设 S 和 T 是给定的两个串&#xff0c;在主串 S 中找到模式串 T 的过程称为字符串匹配&#xff0c;如果在主串 S 中找到模式串 T &#xff0c;则称匹配成功&#xff0c;函数返回 T 在 S 中首次出现的位置&#xff0c;否则匹配不成功&#xff0c;返回 -1。…

经典字符串匹配算法——KMP算法

KMP算法 KMP算法是一种高效的字符串匹配算法&#xff0c;在传统暴力遍历匹配的基础上做了一定的优化。 首先KMP算法的实现也是使用了回退思想&#xff0c;不过与暴力遍历不同&#xff0c;KMP的回退&#xff0c;是让子串进行匹配&#xff0c;而不是主串。 KMP示例 首先我们来…

16.算法之字符串匹配算法

前言 字符串匹配是我们在程序开发中经常遇见的功能&#xff0c;比如sql语句中的like,java中的indexof,都是用来判断一个字符串是否包含另外一个字符串的。那么&#xff0c;这些关键字&#xff0c;方法&#xff0c;底层算法是怎么实现的么&#xff1f;本节&#xff0c;我们来探…

字符串匹配算法(BM)

文章目录 1. BM&#xff08;Boyer-Moore&#xff09;算法1.1 坏字符规则1.2 好后缀规则1.3 两种规则如何选择 2. BM算法代码实现2.1 坏字符2.2 好后缀2.3 完整代码2.4 调试 3. 总结 1. BM&#xff08;Boyer-Moore&#xff09;算法 思想&#xff1a;有模式串中不存在的字符&…