【发布时间】:2014-12-12 07:20:36
【问题描述】:
我目前正在构建一个完全响应的网站,但我越想了解,就越不了解。主要是百分比。
我知道 % 是基于第一个定位的父级。但是,我在 JSFiddle 上做了一些例子,得到了不同的结果:
Fiddle
在所有示例中,我们都有相同的基础:
HTML:
<div class="example">
<div class="container">
<div class="item"></div>
</div>
</div>
divs 的 CSS 属性:
-
.example块具有position: relative。它有一个width: 60%(他的父母:身体)。 -
.container块具有position: static。它有一个宽度:80%(这次是.example,因为它是一个相对的块)。
我的问题:
当我想移动 .item 块而不是 .example 大小时,但对于我正在使用的每个 CSS 属性(margin-left、left、transform 等),100% 的结果是不同的尺寸。此外,如果我更改.item(static、relative 等)的位置,大小又会不同。
有人可以解释为什么.item 上的 100% 与 margin、left 或 transform 不同吗?
【问题讨论】:
-
CASCADING 样式表。 “以上”规则为“较低”规则设置基线值,并且值/计算向下级联。如果您将容器设置为 1000 像素宽,并且该容器中的子级设置为 80%,则子级的有效/计算大小将为 800 像素。执行 100% -> 50% -> 33% 使该孙元素有效地成为原始祖父母元素大小的
1.0 * 0.5 * .33 -> 0.165 -> 16.5%,或者只是父元素大小的 33%,而父元素本身是祖父母元素的 1/2。 -
是的,但是我所有的 .item 都具有相同的 xpath:.example .container .item.. 但是 100% 始终不同,并且父级大小永远不会改变。
-
I know a % is based on the first parent with a relative position这种说法不一定正确。事实上,定位元素为具有position或absolute的元素建立了一个包含块。而已。并非所有元素都如此。 -
你没有回答这个问题,为什么 .item 上的 100% 与 margin、left、ou transform 不同?
标签: html css width percentage