爱美容
当前位置: 首页 美容百科

css实现垂直居中的5种方法(CSS之基于不同场景的垂直居中解决方案)

时间:2023-05-23 作者: 小编 阅读量: 3 栏目名: 美容百科

如果只是相对于视口进行居中,依然使用margin就可以解决,只是需要使用一个很少见的单位“vh”。“vh”是一个视口相关的长度单位,1vh表示视口高度的1%,50vh表示视口高度的一半,由此一个基于视口垂直居中的方法如下:div{margin:50vhauto0;transform:translateY;}这种方法无需定位,可自适应高度,缺点就是只适用于基于视口的垂直居中。

大家好,今天要给大家分享的是CSS实现垂直居中的几种方法,相信大家对元素的水平居中都非常了解了,如果是一个行内元素,就对它的父元素应用 “text-align:center”;如果是一个块级元素,就对它自身应用“margin:auto”。但是要对一个元素进行垂直居中,你能想到哪些方法呢?下面我给大家介绍几种基于不同场景实现元素垂直居中的方法,希望能对你有所帮助。

水平垂直居中

首先我们用一些基本的html和css得到下图的效果,后面几种居中方法都基于此。

一、基于绝对定位的解决方案

1、绝对定位 固定宽高的垂直居中

div{position: absolute;width: 18em;height: 6em;top: 50%;left: 50%;margin-top: -3em;/*高度的一半*/margin-left: -9em;/*宽度的一半*/}

原理:这种居中的方法本质上做了两件事,一是先把需要居中的元素的左上角放在视口(或具有定位属性的父元素)的正中心,然后再利用负外边距把它向左、向上移动自身宽高的一半,从而使元素水平和垂直居中(如下图所示)。

缺点:要求元素有固定的宽高,但很多情况下,居中元素的尺寸是由其内容来决定的。

那么对于未知宽高的元素如何实现垂直居中呢?这时我们可能会想到用百分比来解析,但问题是,包括margin在内的很多CSS属性,百分比都是以其父元素的尺寸为基准进行解析的。

2、绝对定位 自适应宽高的垂直居中

如果找到一个能以自身尺寸为基准进行解析的属性对元素进行移动变换问题是不是就迎刃而解了呢?细心的同学会发现,CSS3为我们提供的2D转换属性中的translate属性恰好是以元素自身尺寸为基准进行换算和移动的。

div{position: absolute;top: 50%;left: 50%;transform:translate(-50%,-50%);}

这样是不是就可以摆脱对固定尺寸的依赖实现垂直居中了。

二、基于视口单位的解决方案

有些情况基于对整体布局的考虑不想使用绝对定位,这时我们任然可以采用translate()技巧把元素以其自身宽高的一半为距离进行移动,只是在没有定位缺少left和top的情况下如何把元素的左上角放在容器的中心呢?如果只是相对于视口进行居中,依然使用margin就可以解决,只是需要使用一个很少见的单位 “vh”。

“vh” 是一个视口相关的长度单位,1vh表示视口高度的1%,50vh表示视口高度的一半,由此一个基于视口垂直居中的方法如下:

div{margin: 50vh auto 0;transform:translateY(-50%);}

这种方法无需定位,可自适应高度,缺点就是只适用于基于视口的垂直居中。

三、基于Flexbox(伸缩盒)的解决方案

我认为这是最简单也是最高效的方法,唯一需要注意的就是浏览器的兼容问题,只需要两行代码就可以搞定:

一是给待居中元素的父元素设置display:flex,再给自身设置 margin:auto即可。

body{height: 100vh;display: flex;}div{margin: auto;}

除此之外,给父元素指定一个固定尺寸,可借助 "align-items" 和 “justify-content" 属性对其子元素进行垂直和水平居中,这种方法同时也适用于文本,自此就不用太过纠结line-height了。

div{display: flex;align-items: center;justify-content:center;width: 20em;height:10em;}

上面的代码随意改变div的宽高,里面文本始终保持水平和垂直居中。

    推荐阅读
  • 新手刷酸产品推荐干皮(敲详细刷酸教程)

    敲详细刷酸教程刷酸也有一段时间了今天做了个小小的总结,包含了各个阶段不同的刷酸方法~—先来说一下怎么去选酸新手——维A酸乳膏进阶——水杨酸棉片(0.5%浓度)老手——果酸(30%浓度)—如果之前没刷过酸的话,记得现。

  • 刀锋鞋适合什么人穿(刀锋鞋的原理)

    刀锋鞋适合什么人穿刀锋跑鞋当然适合跑步运动的青年人,不适合体重过大人群,刀锋跑鞋是2013年6月24日在美国波特兰发布一款结构减震跑鞋。鞋底搭载了16个由高科技聚合物制成的叶片,为跑者提供最高的纵向能量反馈。保护膝盖,减少运动消耗,延长运动时间,提高运动效率。

  • 石家庄紧急寻人通告(河北多地最新公告石家庄)

    石家庄紧急寻人通告行程轨迹公布!定州紧急提醒广大市民:2月28日0时至24时,天津市新增6例确诊病例,其中滨海新区4例、东丽区2例。截至目前,本轮疫情累计报告19例阳性感染者,均在定点医院治疗。为保障广大市民身体健康与生命

  • 2.7霸道加92号油可以吗 丰田霸道3.5可以加92号油吗

    有毒苯含量不得超过1%。是的,这款搭载奥迪新一代共轨直喷柴油发动机的A6L2.7TDI绝对值得好奇了解甚至驾驶。经过几天的试驾,这款奥迪A6L2.7TDI的总里程约为960公里,油表显示还能开100公里。从这几天试驾的操控性表现来看,奥迪A6L2.7TDI作为一款豪华行政轿车,其操控性和其他奥迪A6L一样稳健舒适。轮毂方面,A6L2.7TDI配备了与2.4款相同的7辐17英寸轮毂,轮胎尺寸完全相同。

  • 蒸2个鸡蛋要放多少水(这里有答案)

    蒸2个鸡蛋要放多少水?下面更多详细答案一起来看看吧!准备好所有材料,把两个鸡蛋放在碗中打散打匀。在鸡蛋液中加入156ml的饮用水,用筷子继续打匀。打匀后拿筛子把泡沫全部过滤掉,一定要过滤干净。盖上保鲜薄膜,防止水滴进去鸡蛋羹不平。小火蒸12分钟后,把火关掉,继续焖5分钟。五分钟后拿出来后在鸡蛋液上倒上酱油和麻油就可以开动了。

  • 简笔画少女古装美人(人物简笔画女孩可爱古装)

    少女古装美人简笔画你会画吗?儿童画第1页漫画图片简笔美女漫画人物简笔画少女古装古装漫画人物,下面来看看有没有你喜欢的简笔画少女古装美人?接下来我们一起去欣赏以下简笔画作品吧!

  • 如何让蒸蛋又嫩又滑好吃不翻车呢(蒸蛋又嫩又滑做法)

    接下来我们就一起去了解一下吧!如何让蒸蛋又嫩又滑好吃不翻车呢将鸡蛋打入碗里打散,一定要打得很散。加入温开水,边加水边搅拌,多搅拌几分钟。加入适量的盐,继续打散,用小勺撇去上面的一层泡沫不要。碗上盖上盖子,也可以用保鲜膜,蒸锅里加好水烧开,把蒸碗放入蒸锅。盖好盖子,蒸12分钟左右就好了。最后起锅后可加点葱花,芝麻油。

  • 牙膏怎么选择才是好的(如何选择牙膏)

    牙膏怎么选择才是好的试挤,质量良好的牙膏应能自然地挤出,膏体比较细腻光滑,并非正常的圆条状。在阳光反射下看细腻、光滑、洁净、无杂质和发黑现象,而质量低劣的牙膏发硬挤不出,或稍一挤膏体便大量涌出。试尝,将牙膏挤出少许试尝,质量好的牙膏香味纯正,无刺激味道。如果口感粗糙,有像沙子一样的颗粒滞留在嘴里,大多是含粗糙磨擦剂的牙膏,建议立即停用。对症选用药物牙膏,根据防蛀功效选用含氟牙膏。

  • 苹果充电器怎么保护(苹果手机如何充电才保护电池)

    苹果充电器怎么保护由于iPhone使用的是锂聚合物电池,并不存在记忆效应,因此并不需要等到手机彻底没电或者是低电量之后再充电,也就是说随时都可以充电。由于手机内还有一个充放电的计量芯片,每个月只需要完成一次完整的充放电就能够将电池进行校准。建议在充电的时候使用质量合格的充电器以及数据线,由于目前iPhone手机已经支持PD的快充协议,因此使用支持PD的快充头是能够支持快充。

  • 汽车电瓶什么情况下才换(汽车电瓶换完了)

    与电动转向泵通信才是重点发动机电脑自身可是重要部件,它要坏了,可能就打不着车了,所以咱们检查电动转向泵,这个标致3008,电动转向泵油是不缺的,通过诊断电脑我们去查找泵的电路图,搞清楚泵的供电和接地以及信号线。至此真相大明,紧固螺丝,清除故障码,试车正常。我接着说,重点在于你没换电瓶之前,都是好的,她说是的是的,这个标致3008外形时尚,平时开着也省心,我很喜欢这车,但就是换了电瓶之后就这不好,那不好了。