当padding/margin的取值形式为百分比时。。。。。

一个基础却又容易混淆的css知识点:当margin/padding取形式为百分比的值时,无论是left/right,还是top/bottom,都是以父元素的width为参照物的!
也许你会说,left/right以父元素的width为参照物好理解,但是top/bottom为什么也是以父元素的width为参照物的呢?网上众说纷纭,关键还是看W3C的规范

利用这个规范,我们可以用来解决移动端的高度自适应占位问题,在移动端,高度一般都是用内部撑开,例如,一个div包着一个图片。如果是用图片撑开div的话,那么在图片未加载出来时,整个页面的布局就会发生变化。即使图片加载速度很快,容器在图片加载前后都会有一个变型的过程,也就是俗称的“闪烁”,而如果图片加载不出来,整体布局就更是难看了。

现在,利用margin/padding的百分比值。就可以做到不靠图片本身就能把容器的高度撑开

div{
      width:100%
      height:0
      padding-top:100%
      position:relative
      background:rgba(7,17,27,.4)
}
div img{
      position:absolute
      width:100%
      top:0
}

盒子模型如下:

从盒子模型可以看出,虽然容器的内容高度为0,但由于有了跟内容宽度一致的padding,因此整体视觉效果上像是被撑开了;

后记,当然还有其他的方案也能实现宽高自适应,例如css3新推出的长度单位vw。。。。

时间: 2024-07-29 22:34:42

当padding/margin的取值形式为百分比时。。。。。的相关文章

CSS margin属性取值

margin表示一个元素的外边距.取值为正值时,表示相对于正常流离邻近元素更远,而取负值时,使其更近 但是,设置margin后,四个方向的表现形式不同 自身发生移动:top.left margin-top <div id="negtive_top"> <div>margin-top: -50px;自身向上移动50px</div> </div> CSS #negtive_top{ background-color: green; borde

【转】MySQL外键约束On Delete、On Update各取值的含义

转载地址:http://hi.baidu.com/jxqlovejava/item/3d2cc5b5d689917c244b0920 ? 先看On Delete属性,可能取值如上图为:No Action, Cascade,Set Null, Restrict属性. 当取值为No Action或者Restrict时,则当在父表(即外键的来源表)中删除对应记录时,首先检查该记录是否有对应外键,如果有则不允许删除. 当取值为Cascade时,则当在父表(即外键的来源表)中删除对应记录时,首先检查该记录

关于margin和padding取值为百分比和负值的总结

以下是自己学习过程中的总结,直接上结论: 1.margin/padding取值为百分比: margin和padding四个方向上的取值为百分比都是参照父级元素的宽度来计算的. 2.margin取值为负值:      比如 margin-top / right / bottom / left :  -100px; 为负值的情况讨论如下: ①: ②:若元素存在width:则正常: 比如 div { margin: 10px 2% -40px 0 } 表示该盒子顶边距为10px,右边距是父元素宽度的2

SSH中各种形式的取值方式

现在这个项目是用SSH来开发的,遇到很多取值方式,在此总结一下,因为一直在用,很容易弄混,取值有问题: JSP通过url参数值取值: 例如:http://127.0.0.1:8080/portal/login!toAddPag.action?keyCode=1234555 通过以下语句取值: <% String keyCode=request.getParameter("keyCode"); %> 在页面中显示值:有以下两种方式: 第一: <%=keyCode  %&

CSS定位布局display/float/position属性之间的关系/区别和如何使用取值行为机制

float: left|right; 可以自动排列自动折行, 但需要clear来配合清除浮动;display: inline-block; 有些时候可以替代float实现相同的效果.position: absolute|relative; 要配合top,left等定位; position: absolute会导致元素脱离文档流,被定位的元素等于在文档中不占据任何位置,在另一个层呈现,可以设置z-index.PS的图层效果就是position: absolute. float也会导致元素脱离文档流

html常用标签的取值和赋值操作

我们在html页面当中,面对各种各样的标签,经常需要处理取值和赋值的问题,下面,就把常见的一些html标签元素的取值和赋值操作进行总结整理,以后备用. 1.button:改变button按钮上面的值,比如把确定按钮取消按钮 <button id="btn">确定</button> $("#btn").click(function () { $("#btn").text("取消");//这个是改变按钮上面

position和display的取值和用法

position设置对象的定位方式,可以让布局层容易位置绝对定位,控制盒子对象更加准确 position的值和作用: position的所有值:static(默认).relative.absolute.fixed.inherit.(initial.unset.sticky) 1.static:始终处于文档流给予的位置,可以快速取消定位,让top,right,bottom,left的值失效 2.relative:绝对定位,定位原点relative是相对于它在正常流中的默认位置偏移,它原本占据的空间

关于offsetLeft的取值

ele.offsetLeft的取值,如果ele是body的直接子元素,那么ele.offset的取值就是ele距离body左侧的距离. 但是如果ele不是body的直接子元素,中间还有其他元素,而且中间元素存在margin边距值,在相对高级的浏览器和ie6\7之间,ele.offsetLeft就会产生不同的取值. 只要ele的父元素使用了定位,不论是相对定位还是绝对定位.那么各个浏览器的ele.offsetLeft取值就会全部相同,都是现对于这个父元素左边距. 但这仅仅是对ele的父元素使用定位

[转]图解CSS的padding,margin,border属性(详细介绍及举例说明)

图解CSS的padding,margin,border属性 W3C组织建议把所有网页上的对像都放在一个盒(box)中,设计师可以通过创建定义来控制这个盒的属性,这些对像包括段落.列表.标题.图片以及层.盒模型主要定义四个区域:内容(content).边框距(padding).边界(border)和边距(margin). 对于初学者,经常会搞不清楚margin,background-color,background-image,padding,content,border之间的层次.关系和相互影响