让一个块级元素垂直居中的八种方法

让一个块级元素垂直居中的八种方法怎么让一个元素垂直居中文章目录怎么让一个元素垂直居中前言正题前言今天有个 web 前端的面试 公司挺大的 全国各地还都有分支机构 估计是因为最近缺人吧 所以我非常幸运的通过了简历筛选 但是过程有点 因为面试官问我的很多基础的问题我都半懂不懂的 主要还是基础没打牢 唉 感觉受到了一万点暴击 又错过了一个亿 正题题目就是面试官问我的其中一个问题 很搞笑的是 在上个月我同桌还问过我这个问

让一个块级元素垂直居中的八种方法

第一种方法

  • 利用弹性布局实现,在父容器中添加display: flex;align-items: center;
  • 首先解释一下flex布局,Flex是Flexible Box的缩写,翻译成中文就是“弹性盒子”,用来为盒装模型提供最大的灵活性。任何一个容器都可以指定为Flex布局。
  • 采用Flex布局的元素,被称为Flex容器(flex container),简称“容器”。其所有子元素自动成为容器成员,成为Flex项目(Flex item),简称“项目”。
  • 注意,设为Flex布局以后,子元素的float、clear和vertical-align属性将失效。
  • 浏览器的支持如下:
    在这里插入图片描述
    代码附上:




               

第二种方法

设置父元素相对定位,子元素position: absolute;top: 50%;同时margin-top值为-(子元素高度的一半),因为设置top值时是相对于盒子顶部,所以想要居中还要往上移动半个盒子的高度才能实现。IE版本都可以兼容,代码如下:

 
   
    
    
   

第三种方法

和上一种方法原理差不多,都是利用相对定位和绝对定位,有点不同是子元素内加上了transform: translateY(-50%);margin-top: -50px;作用差不多,话不多说,上代码:

 
   
    
    
   

第四种方法

这种方法和上一种相似,这是利用相对定位,在子元素中设置position: relative;top: 50%;transform: translateY(-50%);先相对自身向下平移父元素的50%,再。。。你们懂的。
代码:

 
   
    
    
   

第五种方法

  • 这种方法和第一种差不多,在父容器中设置display:flex;子元素设置align-self: center;
  • align-self属性:align-self属性允许单个项目有与其他项目不一样的对齐方式,可覆盖align-items属性。默认值为auto,表示继承父元素的align-items属性,如果没有父元素,则等同于stretch。
  • 效果图:
    在这里插入图片描述

第六种方法

这是一种障眼法,在父容器中再加上一个子元素,把它的高度设为去掉盒子高度后的一半,实际上就是设置了一个隐藏块元素,把实际上显示的块元素“挤”到垂直居中的位置。看代码:

 
   
    
    
   

第七种方法

设置父元素为相对定位,子元素为绝对定位,同时设置子元素的top,bottom,left,right值为0,最后设置margin:auto;这能实现块元素的垂直+水平居中,看代码:

 
   
    
    
   
.in{ width: 100px; height: 100px; background-color: salmon; position: absolute; top: 0; bottom: 0; margin: auto; } 

如果要实现水平居中当然是只设置right,left为0就好啦。

第八种方法

设置父容器为display: table-cell;vertical-align: middle;注意:不能将display:inline-block;替代display:table-cell;具体代码如下:

 
   
    
    
   

  • 有些朋友可能会说可以设置line-height为父元素的高实现垂直居中,但是,划重点!!! 这种方法只适用于子元素为单行文本的情况!!! 记住不要搞错了。
  • 还有一个vertical-align: middle;这个适用于行内元素的垂直居中,块元素不可以。

最后

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/210530.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月19日 上午7:27
下一篇 2026年3月19日 上午7:28


相关推荐

  • php连接ldap服务器,使用PHP连接LDAP服务器[通俗易懂]

    php连接ldap服务器,使用PHP连接LDAP服务器[通俗易懂]LDAP是一个用来发布目录信息到许多不同资源的协议。通常它都作为一个集中的地址本使用。LDAP最基本的形式是一个连接数据库的标准方式。该数据库为读查询作了优化。因此它可以很快地得到查询结果,不过在其它方面,例如更新,就慢得多。要特别注意的是,LDAP通常作为一个hierarchal数据库使用,而不是一个关系数据库。因此,它的结构用树来表示比用表格好。正因为这样,就不能用SQL语句了。简单说来,LD…

    2022年5月15日
    35
  • python检测字符串乱码

    python检测字符串乱码importchardetf=open(‘test.txt’,’rb’)f_read=f.read()f_charInfo=chardet.detect(f_read)print(f_charInfo)#f_charInfo的输出是这样的的一个字典{‘confidence’:0.99,’encoding’:’utf-8′}转载于:https://www.cnblogs.c…

    2022年5月17日
    95
  • linux中sigaction函数详解

    linux中sigaction函数详解一、函数原型:sigaction函数的功能是检查或修改与指定信号相关联的处理动作(可同时两种操作)intsigaction(intsignum,conststructsigaction*act,structsigaction*oldact);signum参数指出要捕获的信号类型,act参数指定新的信号处理方式,oldact参数…

    2022年5月26日
    58
  • 交叉验证_验证的三种方法

    交叉验证_验证的三种方法什么是交叉验证?它的基本思想就是将原始数据(dataset)进行分组,一部分做为训练集来训练模型,另一部分做为测试集来评价模型。主要是用于小部分数据集中。通过图片可以看出,划分出来的测试集(tes

    2022年8月3日
    9
  • 吐血总结:解决 Reboot and select proper boot device or ……以及其它蓝屏黑屏「建议收藏」

    吐血总结:解决 Reboot and select proper boot device or ……以及其它蓝屏黑屏「建议收藏」程序猿一枚,笔记本用了两年了,被我鼓捣的死去活来,难免会跟我闹些“小别扭”,借助各种黑屏蓝屏对我“发脾气”~开始还好(一年前),一些小错误还都镇的住,免去了重装系统带来的麻烦。近来不知怎地,各种傲娇,疯狂蓝屏、自动重启外加重启后黑屏,最让我头疼的就是Rebootandselectproperbootdeviceor。。。这个错误,以前都还好,出现这个错误之后进入BIOS面板来回调…

    2022年4月30日
    242
  • C盘AppData目录文件夹JxBrowser占用90G?

    C盘AppData目录文件夹JxBrowser占用90G?续上一篇文章 C 盘 AppData 文件占用 83 7G 本篇文章讲一下发现的新东西之前找到了这个文件占用 83 7G 然后我就没理他 今天电脑提示我空间不足 然后一看 C 盘还剩下几百 M 然后找到 AppData 文件 结果占用 105G 了 本来 C 盘还剩 20G 现在是一滴也没有了终于 通过一个个文件夹查看 在 AppData 文件夹下面找到了这个文件夹我惊了 看上去像浏览器的文件夹 但是什么浏览器占用 90G 的数据 然后百度 百度说这个是 java 的库 但是我压根没有装过这个 文件夹下面都是这样的文件 du

    2026年3月18日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号