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

yumo6663个月前 (08-03)技术文章36

我调查了身边五六年经验以上的几个前端同学和同事,尽然发现绝大部分人都不知道,当然,在看到这个文章之前,我也不知道这个,平时虽然都一直在做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

相关文章

关于元素CSS高度的5个概念,一次性搞清楚它们

一次分清clientHeight、offsetHeight、scrollHeight、scrollTop、offsetTop概念:clientHeight:可视的,看得见的部分,content+pad...

一、什么是CSS3(一,什么是旧胜情耶稣基督)

一、什么是CSS3如何学习SEO搜索引擎优化CSS是什么Cascading Sheet层叠级联样式表,表现,网页美化CSS发展史:CSS1.0 CSS2.0 DIV + CSS HTML和CSS结构分...

在移动端别再用 100vh 了!试试这些全新的 CSS 单位

开发者在设计移动端布局时,经常遇到这样的问题:在桌面浏览器上一切正常,但当页面打开到手机上时,精心设计的页面却总会出现奇怪的截断、异常滚动,甚至布局在浏览器工具栏隐藏或出现时发生位移。这类问题的元凶通...

2015年学习CSS3的15个高级免费教程

CSS 3D云这是一个demo应用程序,你可以生成一个与现实生活一模一样的云,并可以对其进行调整。这个demo的代码比较复杂,它运用了CSS3 3D变换和部分JavaScript技术。效果演示>...

17.CSS概念和语法(css 概念)

CSS(层叠样式表)是一种用于描述HTML或XML(包括各种XML方言,如SVG或XHTML)文档的视觉表现的样式语言。CSS描述了元素应该如何在屏幕、纸张、语音或其他媒体上显示。本文将深入探讨CSS...

太强了!字节大佬总结——《你不知道得css原理》!

BFC、IFC、FFC、GFC粗解flex容易忽略的属性flex-grow:等比分配剩余空间flex-shrink:等比压缩多余空间flex-basis: 基本格的大小,可以是百分比min/max-w...