我知道这应该很简单,但是任何人都可以告诉我,为什么在将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像素的位置吗?
从 W3C规范:
相对于生成的框的包含块的宽度计算百分比。请注意,“ 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将内容布置在垂直于页面向下堆叠的块中,因此,块的宽度通常完全由其父代的宽度决定。换句话说,您可以计算一个块的宽度,而不必担心该块内部的内容。
块的高度是另一回事。通常,高度取决于其内容的总高度。更改内容的高度,然后更改块的高度。看到问题了吗?
要获取内容的高度,您需要知道应用于内容的顶部和底部边距。如果这些边距取决于父块的高度,那么您就麻烦了,因为您无法在不知道另一个的情况下计算一个!
在容器的宽度上放置垂直边距可以打破这种圆形依赖性,并可以对页面进行布局。
例:
这是小提琴。和代码:
的HTML
<div class="container">
<p id="element"> Some Cool content</p>
</div>
<p>
MORE TEXT
</p>
的CSS
.container {
background: lightblue;
padding: 10px;
height: 100px;
width: 500px;
}
p {
display: block;
border: 1px solid red;
margin-top: 50%;
}
JS
window.onload = function(evt) {
var element = document.getElementById("element"),
style = element.currentStyle || window.getComputedStyle(element);
element.textContent = "the margin-top is : " + style.marginTop;
};
问题内容: 我有4个项目MySQL数据库:(数值),和。 在我的报告中,我需要通过“调查”中的数字来计算已参加调查的“雇员”的百分比。 这是我现在的声明: 表格如下: 我想按参加调查的人数来计算谁所占的百分比。即,如以上数据所示,分别为0%和95%。 问题答案: 尝试这个 在这里演示
我有一个包含4个项的MySQL数据库:(数值)、、和。 在我的中,我需要根据“surveys”中的数字来计算接受调查的“employees”的百分比。 这就是我现在的说法: 下面是表格的原样: 我想根据中的数字计算参加调查的的百分比。即,如上面的数据所示,将为0%,将为95%。
问题内容: CSS教程中通常解释的方法是: 添加边框 添加填充 当您处理带有背景图像和固定填充的像素完美布局时,所有这些副作用都会变得很明显。 有什么方法可以简单地禁用折叠而不用将多余的像素推入布局中吗?对于我来说,必须以视觉方式影响文档以更改这种行为对我来说没有任何意义。 问题答案: 好吧,您需要在两者之间有一些东西来“破坏”崩溃。 我的第一个想法是使用div并在两者之间进行设置,但这似乎不起作
我试图计算数字的百分比(取自一个文本字段),并将计算值设置为另一个表单字段。为此,我尝试了下面的代码,但我发现js正在检测的键事件/小数位数不匹配。 例如,如果我在第一个输入字段中提供100(以计算1.75的百分比),根据我的js代码,我预计是1.75,但在第二个文本字段中是0.175。我知道这是一个非常简单的计算,但我无法解决这个问题。
问题内容: 有没有一种方法可以完全禁用边距收缩?我发现的唯一解决方案(名称为“ uncollapsing”)需要使用1px边框或1px填充。我发现这是不可接受的:无关紧要的像素无缘无故使计算复杂化。有没有更合理的方法来禁用此保证金倒塌? 问题答案: 保证金崩溃的主要类型有两种: 相邻元素之间的边距崩溃 父元素和子元素之间的折叠边距 仅在后一种情况下,使用填充物或边框可以防止塌陷。另外,应用于父对象
我需要能够将一组已知大小的对象分配到3组。例如,给定一个像下面这样的有序列表,我想要找到两个除法或分离点,使三个组具有相似的和。 每组的总和必须大致相等,组2和组3的总和不能超过第一组的总和超过一个规定的量(例如10)。理想情况下,第一组比其他组稍大一些。无法更改项目的顺序。每个组由原始列表的连续元素组成。每个元素都放在一个组中。 在这种情况下,预期的解决办法是: 用例是预先计算(服务器端)按优先