html - 悬停时如何使元素与 CSS 保持原位

标签 html css

我有一个元素,当我想将鼠标悬停在它上面时。它显示了我想要的边框,但是,它所做的是缩放文本并实际移动它......

像这样:-

过渡前

Before the Transition

过渡后

enter image description here

正如您在图片中看到的那样,“关于我们”在悬停后向左移动了一点,这是因为边框。我怎样才能让它留在原地? 这是我的代码

&--dropdown {
      list-style: none;
      position: absolute;
      width: 25rem;
      height: 14rem;
      background-color: $color-additional;
      overflow: hidden;

      &-item {
        position: relative;
        width: 34rem;
        padding: 1rem 0 1rem 2rem;
        transition: all ease 0.2s;
        &:not(:first-of-type) {
          border-top: 1px solid $color-navigation-border;
        }
        &:hover {
          background-color: $color-white;
          border-left: 5px solid $color-primary;
        }
        &-link {
          color: $color-black;
          text-decoration: none;
        }
      }
    }

最佳答案

不要为此使用大纲。相反,将左填充降低边框添加的量。

li {
  width: 300px;
  padding: 20px 30px;
  list-style: none;
  background: yellow;
  border-bottom: 1px solid black;
}

li:hover {
  border-left: 5px solid red;
}
<li>Test</li>
<li>Test2</li>

这就是您现在拥有的方式。 padding-left30px 并且在 :hoverborder-left 添加了 5px。所以只需从 padding-left 宽度中减去 border-left 宽度:

li {
  width: 300px;
  padding: 20px 30px;
  list-style: none;
  background: yellow;
  border-bottom: 1px solid black;
}

li:hover {
  border-left: 5px solid red;
  padding-left: 25px;
}
<li>Test</li>
<li>Test2</li>

编辑:

既然你现在提供了一些代码,就把它改成这样:

&--dropdown {
      list-style: none;
      position: absolute;
      width: 25rem;
      height: 14rem;
      background-color: $color-additional;
      overflow: hidden;

      &-item {
        position: relative;
        width: 34rem;
        padding: 1rem 0 1rem 2rem;
        transition: all ease 0.2s;
        &:not(:first-of-type) {
          border-top: 1px solid $color-navigation-border;
        }
        &:hover {
          background-color: $color-white;
          border-left: 5px solid $color-primary;
          padding-left: calc(2rem - 5px); //<-- I added this line of code
        }
        &-link {
          color: $color-black;
          text-decoration: none;
        }
      }
    }

关于html - 悬停时如何使元素与 CSS 保持原位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59116684/

相关文章:

javascript - 有没有办法让屏幕阅读器在渲染元素时只宣布一次?

html - 尝试使用许多粘性页脚教程,无法修复页脚

javascript - 如何在无序列表中使列表项与其他项宽度相同?

html - 显示 :none when rotating smartphone

c# - 我们如何从 View 到 Controller 访问列表和其他字段

html - 防止 float div在小窗口中 split

javascript - 抓取和刷卡

css - 标记中的多个类 - 它会降低性能吗?

html - 如何限制 &lt;textarea&gt; 的可拖动宽度

javascript - 如何让 jQuery 在每次悬停时识别鼠标悬停在图像上一次