css水平垂直居中的12种方式

relative或absolute或fixed实现水平垂直居中的若干方案 阅读详情

如何实现元素的水平垂直居中?这是一道常见面试题,本篇文章将就两种情形解答这一问题

目录

一、 固定尺寸

1. absolute + 负margin

2. absolute + margin auto

3. absolute + calc

二、 不定尺寸

1. position + absolute (依赖 translate 2d 的兼容性)

2. flex + justify-content + align-items

3. flex + margin auto

4. grid (兼容性差,不推荐使用)

5. 行内块元素 + line-height (元素内容为文字时生效)

6. 行内块元素 + 辅助元素

7. 行内块元素 + css-table

8. 行内块元素 + table (代码冗余,不推荐使用)

9. 行内块元素 + writing-mode


一、 固定尺寸

1. absolute + 负margin

.container {
    position: relative;
    width: 500px;
    height: 500px;
    border: 1px solid #465468;
}
.box {
    position: absolute;
    top: 50%;
    left: 50%;
    width: 250px;
    height: 250px;
    margin-top: -125px;  /* 设置为高度的一半 */
    margin-left: -125px; /* 设置为宽度的一半 */
    background-color: lightblue;
}
<div class="container">
    <div class="box"></div>
</div>

效果图:

2. absolute + margin auto

.container {
    position: relative;
    width: 500px;
    height: 500px;
    border: 1px solid #465468;
}
.box {
    position: absolute;
    top: 0;
    right: 0;
    bottom: 0;
    left: 0;
    width: 250px;
    height: 250px;
    margin: auto;
    background-color: lightblue;
}
<div class="container">
    <div class="box"></div>
</div>

效果图:

3. absolute + calc

.container {
    position: relative;
    width: 500px;
    height: 500px;
    border: 1px solid #465468;
}
.box {
    position: absolute;
    top: calc(50% - 125px);
    left: calc(50% - 125px);
    width: 250px;
    height: 250px;
    background-color: lightblue;
}

效果图:

二、 不定尺寸

1. position + absolute (依赖 translate 2d 的兼容性)

.father {
    position: relative;
    width: 500px;
    height: 500px;
    border: 1px solid #465468;
}
.box {
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    background-color: lightblue;
}
<div class="father">
    <div class="box">
        <img
             style="width: 300px; height: 200px;"
             src="https://tenfei02.cfp.cn/creative/vcg/800/new/VCG211314245608.jpg"
        >
    </div>
</div>

效果图:

2. flex + justify-content + align-items

.father {
    display: flex;
    width: 500px;
    height: 500px;
    border: 1px solid #465468;
    justify-content: center;
    align-items: center;
}
<div class="father">
    <div class="box">
        <img
             style="width: 300px; height: 200px;"
             src="https://tenfei02.cfp.cn/creative/vcg/800/new/VCG211314245608.jpg"
        >
    </div>
</div>

效果图:

3. flex + margin auto

.father {
    display: flex;
    width: 500px;
    height: 500px;
    border: 1px solid #465468;
}
.box {
    margin: auto;
}
<div class="father">
    <div class="box">
        <img
             style="width: 300px; height: 200px;"
             src="https://tenfei02.cfp.cn/creative/vcg/800/new/VCG211314245608.jpg"
        >
    </div>
</div>

效果图:

4. grid (兼容性差,不推荐使用)

.father {
    display: grid;
    width: 500px;
    height: 500px;
    border: 1px solid #465468;
}
.box {
    justify-self: center;
    align-self: center;
}
<div class="father">
    <div class="box">
        <img
             style="width: 300px; height: 200px;"
             src="https://tenfei02.cfp.cn/creative/vcg/800/new/VCG211314245608.jpg"
        >
    </div>
</div>

效果图:

5. 行内块元素 + line-height (元素内容为文字时生效)

.father {
    width: 500px;
    height: 500px;
    line-height: 500px;
    border: 1px solid #465468;
    text-align: center;
}
.box {
    display: inline-block;
    vertical-align: middle;
    line-height: inherit;
}
<div class="father">
    <div class="box">
        不定尺寸
    </div>
</div>

效果图:

6. 行内块元素 + 辅助元素

.father {
    width: 500px;
    height: 500px;
    border: 1px solid #465468;
    text-align: center;
    font-size: 0px;
}
.box {
    display: inline-block;
    vertical-align: middle;
}
/* 辅助元素 */
.father::after {
    content: "";
    display: inline-block;
    height: 100%;
    vertical-align: middle;
}
<div class="father">
    <div class="box">
        <img
             style="width: 300px; height: 200px;"
             src="https://tenfei02.cfp.cn/creative/vcg/800/new/VCG211314245608.jpg"
        >
    </div>
</div>

效果图:

7. 行内块元素 + css-table

.father {
    width: 500px;
    height: 500px;
    border: 1px solid #465468;
    display: table-cell;
    text-align: center;
    vertical-align: middle;
}
.box {
    display: inline-block;
}
<div class="father">
    <div class="box">
        <img
             style="width: 300px; height: 200px;"
             src="https://tenfei02.cfp.cn/creative/vcg/800/new/VCG211314245608.jpg"
        >
    </div>
</div>

效果图:

8. 行内块元素 + table (代码冗余,不推荐使用)

.father {
    width: 500px;
    height: 500px;
    border: 1px solid #465468;
    text-align: center;
}
.box {
    display: inline-block;
}
<table>
    <tbody>
        <tr>
            <td class="father">
                <div class="box">
                    <img
                         style="width: 300px; height: 200px;"
                         src="https://tenfei02.cfp.cn/creative/vcg/800/new/VCG211314245608.jpg"
                    >
                </div>
            </td>
        </tr>
    </tbody>
</table>

效果图:

9. 行内块元素 + writing-mode

.father {
    width: 500px;
    height: 500px;
    border: 1px solid #465468;
    text-align: center;
    writing-mode: vertical-lr;
    text-align: center;
}
.inner {
    display: inline-block;
    width: 100%;
    writing-mode: horizontal-tb;
    text-align: center;
}
.box {
    display: inline-block;
    margin: auto;
}
<div class="father">
    <div class="inner">
        <div class="box">
            <img
                 style="width: 300px; height: 200px;"
                                 
             src="https://tenfei02.cfp.cn/creative/vcg/800/new/VCG211314245608.jpg"
            >
        </div>
    </div>
</div>

效果图:

总结

  • PC端有兼容性要求,宽高固定,推荐absolute + 负margin
  • PC端有兼容要求,宽高不固定,推荐css-table
  • PC端无兼容性要求,推荐flex
  • 移动端推荐使用flex

CSS3/CSS之居中解析(水平+垂直居中、水平居中,垂直居中) CSS3/CSS中居中解析今天,博主带来的是CSS3/CSS中的居中解析,相信小伙伴们有时候也会被各种居中搞的一脸懵逼把!居中总体来说可以分为水平居中还有垂直居中,顾名思义,定义这里就不解释了!首先,我们来看下垂直居中:(1)、如果是单行文本,则可以设置的line-height的数值,让其等于父级元素的高度!&lt;!DOCTYPE html&gt;&lt;html lang="en"&gt;&l... 阅读详情

相关推荐

Html css水平居中+垂直居中+水平垂直居中的方法总结

(1)块级元素(如div):独占一行,不和其他元素在一起,可以设置宽和高;当没设置宽和高时,宽度和父级宽度一样,高度由内容的高度决定;当设置宽和高时,元素的宽高就是设置值,当内容超过宽高值时,元素宽高值也不变高,会溢出。(2)行级元素(如span):不会独占一行,和其它元素在一起,不可以设置宽和高,由里面的内容决定;设置的宽高无效。(3)行内块级元素(如img):不会独占一行,可以和其它元素在一起,可以设置宽和高;当没设置宽和高时,宽高有元素内容决定;当设置宽和高时,元素内容宽高为设置值。

qq_36158551的博客 2955

absolute绝对定位.实现水平垂直居中

当容器的position属性值为absolute时,这个容器即被绝对定位了。使用绝对定位的容器,会脱离文档流。 当有多个绝对定位容器放在同一个位置时,显示哪个容器的内容呢?类似Photoshop的图层有上下关系,绝对定位的容器也有上下的关系,在同一个位置只会显示最上面的容器。在计算机显示中把垂直于显示屏幕平面的方向称为z方向,CSS绝对定位的容器的z-index属性对应这个方向,z-index属性的值越大,容器越靠上。即同一个位置上的2个绝对定位的容器只会显示z-index属性值较大的。 如果容器设置.

qq_45753147的博客 4216

QGIS安装与使用教程

QGIS安装与使用教程

weixin_46713695的博客 2万+

Absolute 盘点8种CSS实现垂直居中水平居中的绝对定位居中技术

Ⅰ.绝对定位居中(Absolute Centering)技术 我们经常用margin:0 auto来实现水平居中,而一直认为margin:auto不能实现垂直居中……实际上,实现垂直居中仅需要声明元素高度和下面的CSS: .Absolute-Center { margin: auto; position: absolute; top: 0; left: 0; bottom: 0; right: 0; } 我不是这种实现方法的第一人,可能这只是非常常见的一种小技术,我斗胆将其

luckychen81的博客 4610

YOLOv11原创改进专栏|原创自研篇|DAA模块手把手添加教程

个人简介:大家好!我是 DAA 注意力机制,堪称深度学习中的“聚光灯”。我的任务是帮助模型聪明地识别关键特征,就像一位经验丰富的侦探,能够在繁杂的数据中找到重要线索。通过结合通道和空间的注意力,我能确保模型把重点放在最有价值的信息上,从而提升识别准确率。简单来说,我就是帮助你的模型变得更加专注、敏锐,让它在一堆数据中轻松找到“宝藏”,为检测精度加分!动态适应性特征提取DAA通过动态生成卷积核来适应输入特征的变化,从而实现针对不同数据的自适应特征提取。

mywhyyds的博客 380

Altair HyperWorks软件二次开发:二次开发成果展示与报告撰写

HyperMesh Python API允许用户通过Python脚本控制HyperMesh的大部分功能,包括模型创建、修改和分析。它提供了丰富的函数库,可以处理节点、元素、材料属性、载荷和边界条件等。二次开发可以用于创建自定义工具,这些工具可以集成到HyperWorks中,提供特定的功能或简化复杂的操作。

kkchenjj的博客 1642

盘点8种CSS实现垂直居中水平居中的绝对定位居中技术

Ⅰ.绝对定位居中(Absolute Centering)技术 我们经常用margin:0 auto来实现水平居中,而一直认为margin:auto不能实现垂直居中……实际上,实现垂直居中仅需要声明元素高度和下面的CSS: .Absolute-Center { margin: auto; position: absolute; top: 0; left: 0; botto...

923723914 4803

【推荐100个unity插件】制作美丽 Unity 景观,增强Terrain材质表现的插件——GTS

GTS地形着色器是一款专为Unity设计的强大工具,可解决地形纹理绘制和光照处理的难题。它提供一键式配置,支持实时调整地形效果,包含细节注入、高度混合、雪注入等核心功能,并兼容网格地形和低多边形模型。插件完美集成Gaia天气系统,支持HDRP细分效果。安装后通过GTS管理器创建配置文件并应用到地形,即可快速生成高质量地形渲染。其模块化设计包含全局设置、网格转换和细节调整等面板,使开发者能灵活控制地形表现,显著提升视觉效果与性能表现。

向宇的博客,专注php/web全栈 unity游戏开发,欢迎大家评论纠错 1567

CSS 水平,垂直,水平垂直居中方案——持续更新

我在成长过程中也是一路摸爬滚打,没有任何人的指点,所以走的很艰难。例如在大三的时候,如果有个学长可以阶段性的指点一二,如果有已经工作的师兄可以告诉我工作上需要什么,我应该前面的三年可以缩短一半;后来去面试bat,失败了有5、6次,每次也不知道具体是什么原因,都是靠面试回忆去猜测可能是哪方面的问题,回来学习和完善,当你真正去招人的时候,你就会知道面试记录是多么重要,面试官可以从面试记录里看到你的成长,总是去面试,总是没有成长,就会被定义为缺乏潜力。top: 0;bottom: 0;

2401_85122963的博客 883

VSCode PlantUML 插件超详细教程:从安装配置到实战绘图全流程

VSCode PlantUML 插件超详细教程:从安装配置到实战绘图全流程

weixin_69237381的博客 911

学习STM32的DS18B20温度传感器

该函数首先复位传感器,然后发送跳过ROM命令和转换命令,并等待转换完成。接下来,它再次复位传感器,发送跳过ROM命令和读取温度命令。最后,它读取温度值的最低字节和最高字节,并将其组合成16位温度值。传感器的VCC引脚连接到STM32的3.3V电源,GND引脚连接到GND,而数据引脚连接到任何一个IO引脚。需要注意的是,示例代码中使用了一个简单的延时函数来等待转换完成。实际上,您可能需要使用定时器或其他更精确的延时方法来实现更准确的延时。下面是一个示例代码,演示如何读取DS18B20传感器的温度值。

m0_75244442的博客 1182

CSS设置水平垂直居中的方法( 7种 )

CSS中内容居中的方法有很多种,具体取决于您想要居中的内容是什么类型的元素以及是在什么情况下居中。

大剑师兰特的GIS世界 3632

深度学习在地质勘探中的应用:使用Python构建卷积神经网络进行地震数据分析

在本文中,我们介绍了如何利用深度学习技术,特别是卷积神经网络(CNN),来处理和分析地震数据。我们使用了Python编程语言和TensorFlow框架构建了一个CNN模型,并使用地震数据进行了训练和评估。在本文中,我们将探讨如何利用深度学习技术,特别是卷积神经网络(CNN),来处理和分析地震数据。首先,我们需要获取地震数据集。通过本文的介绍,希望您能对深度学习在地质勘探领域的应用有更深入的了解,并能够应用这些技术来解决实际问题。在准备好地震数据和构建CNN模型后,我们需要将数据分为训练集和测试集。

斌擎科技 1472

水平垂直居中的几种方式

水平垂直居中的几种方式

weixin_44335776的博客 1万+

SerDes学习笔记:DFE均衡架构示例(USB3.1、PCIe3.0\4.0)

本文探讨了DFE均衡器架构在不同数据接口中的应用特性。研究表明,抽头数量随数据速率提升而增加,1-16抽头架构较为常见。通过PCIeGen3/4实例分析,对比了单抽头、双抽头和15抽头DFE的性能差异,证明多抽头结构能通过精细调节有效提升噪声容限和降低误码率。文章详细阐述了DFE工作原理,包括其通过反馈信号对输入信号的补偿机制,以及不同抽头对消除码间干扰的作用。实验采用8Gbps速率(125ps/UI)进行波形仿真,直观展示了均衡处理前后的信号变化,为理解信道均衡技术提供了重要参考。

一只豌豆象的博客 519

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

【Web】CSS水平垂直居中常见方法总结

文章目录一、简介二、元素水平居中三、元素水平垂直居中3.1 position 元素已知宽度3.2 position transform 元素未知宽度3.3 flex布局3.4 table-cell布局 一、简介 说明:本篇文章只是总结一些方法,例子用到的各个元素属性不做解释,详情请看MDN文档,非常的详尽,例子在chrome浏览器下完全好使,IE这个渣渣。 本文出现的错误,请大佬们及时指正,人非圣...

沙师弟专栏 2万+

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

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

使用CSS样式实现DIV的水平与垂直居中。 1、使用<div>标签的 align 属性实现水平居中 HTML中的 <div> 标签的 align 属性用于规定 div 元素中的内容的水平对齐方式。所有浏览器都支持 align 属性。 语法: <div align="value"> 属性值: 值 描述 left 左对齐内容。 ri...

pan_junbiao的博客 9308

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

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

  目录 水平居中  行内元素  块级元素 方案一:(分宽度定不定两种情况) 方案二:使用定位属性 方案三:使用flexbox布局实现(宽度定不定都可以) 垂直居中 单行的行内元素 多行的行内元素  块级元素 水平垂直居中 已知高度和宽度的元素 未知高度和宽度的元素 方案一:使用定位属性 方案二:使用flex布局实现 水平居中  行内元素 首先看它的父元...

半夏半暖半倾城的博客 20万+

CSS 水平垂直居中的方式

在实际使用最好测试下最低版本是否支持对应的实现方式,尽量选各个浏览器支持比较好的,或者最常见的实现方式。浏览器兼容性:最新主流浏览器基本上兼容,对于老版本浏览器可能会有兼容性问题。兼容性:基本都支持,只是书写起来比较繁琐,多层嵌套。浏览器兼容性:主流浏览器基本上都支持的。

专注于大数据方向,区块链,前后端,数据可视化,人工智能等领域 1675

CSS实现水平垂直居中的5种方法

本文将详细介绍五种不同的CSS技术来实现这一目标,并通过具体示例帮助读者理解每种方法的工作原理及其适用场景。随着CSS的发展,实现这一效果的方法越来越多,包括使用。希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。通过上述示例和技术解析,希望能帮助大家更好地理解和应用CSS来实现水平垂直居中的效果。一个做过前端开发的产品经理,经历过睿智产品的折磨导致脱发之后,励志要翻身农奴把歌唱,对于某些情况,我们可能需要基于父元素的尺寸来计算子元素的位置。

一个做过前端开发的产品经理,经历过睿智产品的折磨导致脱发之后,励志要翻身"农奴"把歌唱,一边打入敌人内部一边持续提升自己,为我们广大开发同胞谋福祉,坚决抵制睿智产品折磨我们码农兄弟! 3185

还不会CSS水平垂直居中?这里有12种方案

今天读书的时候,愕然发现自己居然没有总结过水平垂直居中的方法,在印象中,这个知识点确实是很神奇的存在:极其常见的需求,从理论上来看,它似乎极其简单,在实践中,它往往难如登天,当涉及尺寸不固定的元素时尤其如此。接下来我们就来总结一下该如何实现这...

前端向朔 1498

利用CSS实现【水平居中和垂直居中】的方法

使用该方法实现垂直居中的原理和上面所讲的水平居中类似,简而言之就是,先让元素向下移动父元素的50%,在向上移动自身的50%,从而移动到了父元素垂直方向的中间位置。(2) flex布局中,通过设置侧轴上子元素排列方式为center,可以实现将元素水平居中,适用于所有类型的元素。(1)flex布局中,通过设置侧轴上子元素排列方式为center,可以实现将元素垂直居中,适用于所有类型的元素。对文本元素设置水平居中。/*设置侧轴上,子元素的排列方式为居中对齐*//*设置侧轴上,子元素的排列方式为居中对齐*/

2401_82930760的博客 3191

css实现水平垂直居中的几种方式

水平垂直居中的几种方式 总结了一下css实现水平垂直居中比较常用的几种方法 居中元素宽高固定时的方法 absolute + top:50% left:50% + margin负值 absolute + top:0 left:0 right:0 botton:0 + margin:auto absolute + top:calc left:calc 居中元素宽高未知时的方法 absolute...

一个慢的博客 3691

css元素水平垂直居中

/图片与文字垂直居中,但会有少量偏差,再通过。在应用一的基础上,给子项(元素) 添加 vertical-align: middle;//子元素相对父元素水平(主轴)居中。//子元素相对父元素垂直(交叉轴)居中。这种写法,在没有指定子元素宽高的情况下,也能让其在父容器中垂直居中。//给父元素加,弹性布局。margin-left:- 自身宽度一半;margin-top:-自身高度一半;

博哥的二进制世界 2048

CSS将元素水平居中、垂直居中、水平垂直居中的方法总结

在实际开发中,经常会遇到要将页面上某个盒子元素水平居中、垂直居中或者水平垂直居中的情况,需要居中的元素类型不同,采用的方法也不一样,下面就一起看看实现不同类型的元素居中的方法吧

qq_35727582的博客 1632

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

CSS水平、垂直、水平垂直居中总结

qq_37219845的博客 3784
下一篇: 微信云开发 创建一个云函数
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值