我有一个inline-block
元素列表,我想为悬停的元素添加边框。但是,请注意边框如何偏移元素,即使我使用box-sizing: border-box
并明确定义了元素的宽度和高度。我说明了以下行为:
* { box-sizing: border-box }
ul { font-size: 0 }
li {
display: inline-block;
width: 100px; height: 40px; margin: 10px;
font-size: 20px; text-align: center;
background-color: #FFF176;
}
li:hover { border: 5px dashed grey }
<ul>
<li>hover</li>
<li>over</li>
<li>me!</li>
</ul>
我找到的最佳解决方案是使用outline
andoutline-offset
而不是border
,但我真的很想知道为什么我的原始方法不起作用:/
更新:虽然 BoltClock 给出了非常好的解释和建议(这就是我所要求的),但我只想提一下我完全忘记了flexbox,它几乎解决了我在使用内联元素时遇到的所有问题。我将它与 BoltClock 的透明边框技巧相结合,用于我的最终 JSFiddle 解决方案