90%不知道的css常识:元素纵向百分比是相对于宽度不是高度

boyanx3个月前技术教程10

我调查了身边五六年经验以上的几个前端同学和同事,尽然发现绝大部分人都不知道,当然,在看到这个文章之前,我也不知道这个,平时虽然都一直在做web前端开发,但真没涉及到这块,或者说涉及到了,也解决了,但是还真没探究过这个问题,你是否躺枪了呢?

这是一个很让人困惑的CSS特征,我之前也谈到过它。我们大家都知道,当按百分比设定一个元素的宽度时,它是相对于父容器的宽度计算的,但是,对于一些表示竖向距离的属性,例如padding-top,padding-bottom,margin-top,margin-bottom等,当按百分比设定它们时,依据的也是父容器的宽度,而不是高度。

下面是一个实例演示代码,你可以调整容器的宽度,但你会发现,黄块块的padding-bottom的距离也会随之宽度而变大或变小。

HTML代码

<div class="wrapper" id="w">

<div class="box" id="b"></div>

</div>

<input type="range" min="120" max="400" value="400" class="range" id="r">

<output>宽度是: <span id="op">400px</span></output>

<output>黄块块的Padding bottom是:<br><span id="op2">10%</span></output>

CSS代码

body {

font-family: Arial, sans-serif;

padding-top: 30px;

text-align: center;

}

.wrapper {

width: 400px;

margin: 0 auto;

border: solid 1px black;

}

.box {

width: 100px;

height: 100px;

background: gold;

margin-left: auto;

margin-right: auto;

padding-top: 10%;

padding-bottom: 10%;

margin-bottom: 5%;

}

.range {

display: block;

margin: 20px auto;

}

output {

text-align: center;

display: block;

font-weight: bold;

padding-bottom: 20px;

}

output span {

font-weight: normal;

}

上面的代码中,我们对内部子元素声明了3个竖向的距离,都是百分比形式。当移动滑块时,我们的js代码只需修改了容器的宽度。但是,这个这三个属性高度都跟随着变化,可以看出,它们的百分比计算是基于容器的宽度,而不是高度的。

切图网致力于web前端技术开发,关注用户体验,关注移动web前端,响应式,微场景等技术,如果你对此感兴趣请加公众微信账号:qietuwang

相关文章

用Auto-LOD简化网格【Babylon.js】

LOD(Level of Details)是一个强大的工具,在 2.0 版本中被添加到 Babylon.js 中。 这个概念相当简单:当相机距网格一定距离时,减少显示的面部数量将提高性能,而用户不会注...

7个html5页面适配iphone6的技巧_7个html5页面适配iphone6的技巧是什么

iphone6及iphone6plus已经出来一段时间了。很多移动端网站,以前写死body为320px的,现在估计也忙着做适配了。大屏幕手机其实一直有,只是以前大家没怎么重视,移动端的H5页面大部分都...

百分比的CSS响应式框架One CSS Grid

说到响应式css框架,你会想到哪些? bootstrap,pure.css ? 下面推荐的这块比较特别,它的栅格系统是基于100%来构建的,类似于bootstrap的100%格子系统。One% CSS...

JavaScript+css实现的计时器动画素材html页面前端源码

大家好,今天给大家介绍一款,JavaScript+css实现的计时器动画素材html页面前端源码(图1)。送给大家哦,获取方式在本文末尾。动态倒计时和动态百分比,效果分成炫酷(图2)点击右上角菜单,可...

破防!《向僵尸开炮》技能组合炸裂输出碾压僵尸

在《向僵尸开炮》的末日战场里,战局时刻都在变,想高效闯过关卡、压制源源不断的尸潮,选对、搭好技能是关键中的关键。但游戏不同阶段里,僵尸的特性不一样、关卡难度也在升级,场景更是千差万别,根本没有能 “通...

如何使用 Fraction.js 解决 BigInt 的计算盲区?

大家好,很高兴又见面了,我是"高级前端进阶",由我带着大家一起关注前端前沿、深入前端底层技术,大家一起进步,也欢迎大家关注、点赞、收藏、转发,您的支持是我不断创作的动力。1. 无法绕过...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。