我正在尝试整合box-sizing
,但似乎无效。任何人都帮我理解这个问题..
a{
display:inline-block;
background:#fff;
border:1px solid #ccc;
box-sizing:border-box;
padding:1rem;
}
a.active{
border:0;
background:orange;
}

<a class="active" href="#">EN</a><a href="#">FR</a>
&#13;
答案 0 :(得分:1)
代码中存在两个主要问题:首先,正如@Daniel在他的回答中指出的那样,元素的尺寸必须明确,以防止自动调整大小。此外,正如this answer中所述,inline-block
元素与border-box
大小调整冲突,但有几种解决方法。
首先,CSS属性overflow: hidden
也可以添加到相关元素中。或者,可以使用vertical-align: top
来确保所有元素具有相同的基线。下面是一个功能性的例子,有一个更大的边界用于强调:
a{
display:inline-block;
background:#fff;
border:10px solid #ccc;
box-sizing:border-box;
width:5em;
height:5em;
overflow:hidden;
padding:1rem;
}
a.active{
border:0;
background:orange;
}
<a class="active" href="#">EN</a><a href="#">FR</a>
答案 1 :(得分:0)
您需要明确设置希望浏览器使用border-box
计算的维度值。
根据spec对border-box
值的引用:
通过减去边框来计算内容宽度和高度 和指定的各边的填充宽度 。由于内容的宽度和高度不能 否定,这个计算被置于零。
因此,设置a
元素的宽度和/或高度属性,然后从中减去填充/边框。
box-sizing: border-box;
没有指定宽度或高度尺寸的元素的值将被忽略。