css悬停创建边框但推送内容

Sim*_*mon 8 css layout hover

情况

我正在建立一个网站,并希望有一些元素在将鼠标悬停在它们上方时创建边框/轮廓.这很简单,可以完成工作.有关参考,请参阅Stagin地区链接的临时站点.我正在使用最新bootstrap和box-sizing模型的网格部分.

问题

我发现在悬停时,正在徘徊的内容下面的内容被"推"到下一个元素下方.使用滞留区域作为参考,我可以通过CSS更改行为以在左侧或右侧修复此问题,但不能同时进行.

这是我用来产生效果的CSS的片段:

.hover-border:hover {
   border: 3px solid #3A3A3A;
   display: block;
}
Run Code Online (Sandbox Code Playgroud)

使用此方法,除第一个元素之外的任何内容都按预期运行.如果我尝试下一个片段,第一个元素可以工作但是其他元素会破坏:

.hover-border:hover {
    border: 3px solid #3A3A3A;
    display: block;
    margin-top: -6px;
}
Run Code Online (Sandbox Code Playgroud)

为了澄清有关继承的属性,我已将有问题的元素的边距/填充设置为标准行为的'0!important',直到悬停

问题

如何阻止下面的元素被推动?

小智 23

就个人而言 - 我选择了以下内容:

.hover-border {
  border: 3px solid transparent;
  display: block;
}

.hover-border:hover {
  border: 3px solid #3A3A3A;
}
Run Code Online (Sandbox Code Playgroud)


oem*_*era 7

另一种代码较少的解决方案:

.hover-border:hover{
  box-shadow: inset 0 0 0 3px #3a3a3a;
}
Run Code Online (Sandbox Code Playgroud)


Pau*_*e_D 5

这些问题的最佳解决方案是使用 box-sizing:border box 属性

* {box-sizing:border-box;}
Run Code Online (Sandbox Code Playgroud)

然后元素将保留您定义的任何大小,但它现在将包括边框和填充。

  • 这并不总是有效,我真的不知道为什么。CSS 很奇怪。 (2认同)
  • 我以为这会起作用,但实际上并没有。这就是我在这里的原因。 (2认同)