如何计算保证金最高百分比?
我知道这应该很简单,但是任何人都可以告诉我,为什么在将a margin-top:
50%应用于子项时,以下子项框为什么会超出其父项的容器。如何计算保证金最高百分比?
.container { background: lightblue;
padding: 10px;
height: 200px;
}
p {
display: block;
border:1px solid red;
margin-top:50%;
}
<div class="container">
<p> Some Cool content</p>
</div>
子元素不应放置在200像素(父元素的高度)的50%处,即距顶部100像素的位置吗?
回答:
相对于生成的框的包含块的宽度计算百分比。请注意,“ margin-top”和“ margin-
bottom”也是如此。如果包含块的宽度取决于此元素,则结果布局在CSS 2.1中未定义。
有两个很好的理由使垂直边距基于包含块的宽度:
当然,有一个速记属性,可让您为块的所有四个边指定边距:
margin: 10%;
扩展为:
margin-top: 10%;margin-right: 10%;
margin-bottom: 10%;
margin-left: 10%;
现在,如果您编写了上面的任何一篇,您可能希望该块的所有四个边的边距都相等,不是吗?但是,如果左边距的边距和右边距的边距是基于容器的宽度,而margin-
top和margin-bottom是基于容器的高度,则它们通常是不同的!
CSS将内容布置在垂直于页面向下堆叠的块中,因此,块的宽度通常完全由其父代的宽度决定。换句话说,您可以计算一个块的宽度,而不必担心该块内部的内容。
块的高度是另一回事。通常,高度取决于其内容的总高度。更改内容的高度,然后更改块的高度。看到问题了吗?
要获取内容的高度,您需要知道应用于内容的顶部和底部边距。如果这些边距取决于父块的高度,那么您就麻烦了,因为您无法在不知道另一个的情况下计算一个!
在容器的宽度上放置垂直边距可以打破这种圆形依赖性,并可以对页面进行布局。
这是小提琴。和代码:
<div class="container"> <p id="element"> Some Cool content</p>
</div>
<p>
MORE TEXT
</p>
.container { background: lightblue;
padding: 10px;
height: 100px;
width: 500px;
}
p {
display: block;
border: 1px solid red;
margin-top: 50%;
}
window.onload = function(evt) { var element = document.getElementById("element"),
style = element.currentStyle || window.getComputedStyle(element);
element.textContent = "the margin-top is : " + style.marginTop;
};
以上是 如何计算保证金最高百分比? 的全部内容, 来源链接: utcz.com/qa/407401.html