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

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的宽高,里面文本始终保持水平和垂直居中。

    推荐阅读
  • 欧盘黄金市场(杜卡斯贝黄金欧元)

    由于超过半数的待完成订单势将买入,黄金可能会继续大幅上涨。另一方面,一些技术指标表明,该货币对已经超买。这一事件通常会引起高度的波动,这意味着英镑在本交易日结束之前可能会一直保持在模式中。这一走势似乎证实了一个新的小型下行通道的存在。市场上的积极情绪表明,新一轮反弹即将到来。但是,即使这种情况发生,113.00水平也不会失守,因其受到200小时均线和50%斐波纳契回撤位的支撑。

  • 重楼种植技术(它有什么价值)

    它有什么价值重楼种子应选择成熟的表皮微皱果实饱满的种子,将种子装入网袋,用一层土一层种子的方式贮藏在室内进行催芽处理,等种子长出新根时(4-5月份)即可播种贮藏要求:贮藏层数控制在五层一下,土壤要保持湿润,不能积。

  • 2022瓦屋山接待行程卡带星游客吗

    若显示带*号,则检查身份证,如处于高、中风险区,则暂不接待;如处于该市其他区、县,则出示48小时内核酸阴性证明,方可入园。

  • 2022河北高职单招报考须知(2020河北高职单招网)

    已通过2022年河北省普通高校招生报名,且符合所报考院校招生条件的考生。各院校具体招生专业以教育厅批准的最终招生计划为准。①2022年3月8日9时至3月11日17时,考生登录河北省高职单招服务平台进行报考、选择考试类,并向对应的牵头院校缴纳考试费。报考缴费过程中出现问题,可根据页面提示操作或向牵头院校咨询。

  • 为什么成年人喜欢打感叹号(你见过红色感叹号吗)

    “你见过红色感叹号吗”,大学生晒和直男老爸聊天,父爱如“山体滑坡”“没到月底,你别想我!”“女儿,你还是画一点妆,不化妆好丑”都说女儿是爸爸的“小棉袄”,逢年过节也会享受到女儿的关心与问候,但大学生晒和直男老板聊天,看后笑出鹅叫声,真是父爱如同“山体滑坡”呀,本来好好的和老爸聊天,没成想因为没化妆给拒绝了,估计女生也会是一头雾水吧,说好的“小棉袄”呢?看后叫人笑到捧腹!

  • vivo双引擎闪充都有哪些(VIVO双引擎闪充实测体验)

    不过,OPPO的VOOC闪充技术这算是第一个能够量产的快速充电方案,实测能够比传统的充电方式省上接近一倍的时间,而“充电5分钟通话2小时”的广告语也迅速深入人心。笔者用最新的Xplay5进行测试,值得一提的是,目前市售的只有骁龙652版本,传说中的骁龙820版本并未见在官网出现。

  • 踏板摩托车打不起火怎么解决(踏板摩托车打不起火怎么解决图解)

    这个过程大约需要三至五分钟。3、关于怠速问题,有时打不着火,是由于怠速比较低,正常夏天看迈数表达指针到一个格或者一个多点就可以了,冬季调整到一个半以上两个以下。

  • 华为云会议与腾讯会议(华为CloudLink企业会议解决方案被加纳副总统点赞)

    活动期间,加纳副总统参观了华为展台,体验了华为创新的CloudLink企业会议解决方案。

  • 北的拼音(北的造句)

    以下内容大家不妨参考一二希望能帮到您!参看〖南北朝〗。

  • 硒元素含量最高的十种食物(哪些食物含硒量高)

    在日常饮食中,不同种类的食物含硒量不同,肉类、水产品、蛋类、奶制品、蔬菜含硒量有显著差别,即使同一种动物,不同部位含硒量也不同。根据营养学家测定,蛋白质高的食物含硒量大于蛋白质低的食物,从动物内脏、海产品、鱼、蛋、肉、蔬菜到水果,含硒量逐渐减少。13种含硒高的水产类食品水产品品种丰富,包括淡水鱼类和海鲜类,是人们日常餐桌上的重要餐食。