【问题标题】:How to animate border using vanilla javascript or css如何使用 vanilla javascript 或 css 为边框设置动画
【发布时间】:2017-09-21 19:24:07
【问题描述】:

我将边框底部颜色设置为灰色并将过渡添加到 .3s,并添加“:悬停”效果,因此在悬停时它会将其颜色更改为蓝色。问题与此有关:当我将鼠标放在具有悬停效果的元素上时,我设置的边框(蓝色)从上到下出现(下降效果)。

this is it

现在我的客户希望边框在悬停时从左到右出现,并且边框不应在悬停在另一个列表项上时消失,它(边框)必须“落后”光标试图“抓住”光标并填充下一个列表项的边框位置。我希望你得到我想要的。我知道在 css 中不可能做到这一点,但我不知道如何在 js 中做到这一点,有人可以帮我解决这个问题并向我解释该怎么做,而不使用任何像 jQuery 这样的框架。

【问题讨论】:

  • 您能在 codepen 或 fiddle 或该位置的链接中与我们分享您的动画代码吗?
  • 你应该在你的边框现在显示的地方添加一个 div,并将宽度属性从 0% 设置为 100%。您应该为 div 设置类似于当前边框样式的样式。
  • 不用js也可以。

标签: javascript css jquery-animate css-animations


【解决方案1】:

您可以按照 Thusitha 所说的那样使用 width 属性来制作动画。

这里我附上了codepen 链接以实现该效果。

ul {
  list-style-type: none;
  border-bottom: 5px solid #eee;
}
ul li {
  display: inline-block;
  position: relative;
  padding: 20px;
}
ul li:before {
  content: "";
  position: absolute;
  height: 5px;
  width: 0px;
  bottom: -5px;
  left: 0;
  background: blue;
  transition: all linear 0.25s;
}

/* Expanding Animation Element */
ul li:hover:before {
  width: 100%
}
<div class="box">
  <ul>
    <li>Homepage</li>
    <li>Style Demo</li>
  </ul>  
</div>

【讨论】:

  • 非常感谢,但这不是我的全部问题,正如我所说,我需要边框来“捕捉”我的光标并且在光标移动到第二个列表项时不会消失
  • 在这种情况下你需要使用javascript或jquery插件,这里我附上了插件链接,可能对实现这个效果有用。 tympanus.net/TipsTricks/DirectionAwareHoverEffect
  • 你能在不使用插件的情况下帮助我实现这种效果,而只使用 javascript 本身。只需给我一个指示或为我提供一篇文章即可
  • tympanus.net/codrops/2012/04/09/…,这里是实现这个效果的文章,你可以按照里面提到的步骤操作。他们已经解释了它是如何工作的。
  • 我还附上了上述插件的 GitHub 链接。 github.com/codrops/DirectionAwareHoverEffect
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-06-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-09-26
  • 1970-01-01
  • 2020-12-29
相关资源
最近更新 更多