【发布时间】:2019-06-20 17:27:44
【问题描述】:
我有一段 html/css 代表一个带边框的按钮。
按钮具有覆盖按钮的伪元素 - 简单示例显示其中之一。
伪元素比原始元素高(使用 px 设置高度)但宽度相同(设置为 100%)。
在当前的设计中,有两个问题没有像我预期的那样工作:
- 尽管使用了 box-sizing:border-box,但伪宽度没有 包括边框。
- 伪元素是绝对定位的(顶部,左侧),但是这个 参考位置在父边框内。
这在 Chrome 和 Edge 中似乎是相同的,这表明我做的不对 - 但是,我对 box-sizing 感到特别困惑。
.container {
padding: 50px;
}
.button {
border: solid 4px red;
box-sizing: border-box;
display: inline-flex;
justify-content: center;
align-items: center;
height: 36px;
padding: 0 16px;
position: relative;
z-index: 1;
}
.button::before {
background-color: rgba(76, 255, 0, 0.8);
box-sizing: inherit;
content: "";
display: block;
position: absolute;
top: -4px;
left: 0;
height: 44px;
width: 100%;
z-index: -1;
}
<div class="container">
<a class="button">Button</a>
</div>
【问题讨论】:
-
这是合乎逻辑的,边框在父元素而不是伪元素上,box-sizing 与那里无关.. 是的,参考是填充框,而不是边框框跨度>
-
该位置在其父级内部,因为父级有
position: relative。 jsbin.com/dupubutofa/edit?html,css,output -
@TemaniAfif - 我不相信盒子大小是合乎逻辑的。比方说,父宽度是 100px,包括 8px 边框(4px x 2),我希望伪也有 100px 的宽度。
-
不,元素的宽度将是父元素减去边框的宽度