【发布时间】:2022-01-24 03:57:13
【问题描述】:
我知道margin的百分比值基于其包含块的宽度。
当我为框的边距分配了准确的值,并且边距框没有溢出父元素时,它按预期工作。
但是当我分配百分比值时,margin-right 或 margin-inline-end 将会增长,就像在 Firefox 或 Chrome
margin-right: auto;
那么,这是规范要求,还是浏览器实现中的巧合。
var exact = document.querySelector('.exact')
var percent = document.querySelector('.percent')
exact.innerText = 'Computed margin-right: ' + getComputedStyle(exact).getPropertyValue('margin-right')
percent.innerText = 'Computed margin-right: ' + getComputedStyle(percent).getPropertyValue('margin-right')
body {
margin: 0;
}
.wrap {
margin: 20px auto;
width: 200px;
height: 200px;
background-color: cadetblue;
border: 1px solid transparent;
}
.box {
width: 100px;
height: 100px;
background-color: antiquewhite;
}
.exact {
margin: 20px;
}
.percent {
margin: 10%
}
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width">
<title>margin right</title>
</head>
<body>
<div class="wrap">
<div class="box exact"></div>
</div>
<div class="wrap">
<div class="box percent"></div>
</div>
</body>
</html>
【问题讨论】:
-
这取决于元素的父元素的
display:属性。 -
另外,如果一个元素曾经被所有不同的大小相关属性过度约束,那么
margin:属性的值is ignored and it's treated asauto可以解释你所看到的。 -
@dai “过度约束”是什么意思?在这两种情况下,边距框都不会溢出父内容
-
但是当我分配百分比值时,margin-right 或 margin-inline-end 会增长,就像 margin-right: auto;无论是在 Firefox 还是 Chrome 中 --> 向我们展示产生这种结果的代码
-
@temani-afif 我已经编辑了问题:)