html - CSS 变换移动点击处理程序?

标签 html css reactjs sass

我倾向于使用以下 SCSS @mixin用于动画效果,让用户知道我的元素中有什么是交互的。

@mixin clickAnimation($opacity: 0.5, $distance: -1px, $time: 75ms) {
  opacity: 1;
  transition: $time ease;
  cursor: pointer;
  &:hover {
    transform: translateY($distance);
    opacity: $opacity;
  }
  &:active {
    transform: translateY(2px);
  }
}

我倾向于像这样在整个网站上使用它:

a:not(.disabled) {
  @include clickAnimation();
}

最近我注意到一个奇怪的问题。

如果用户将鼠标悬停在 <a><a> 底部像素上的元素, <a>将转换为 -1px .当用户点击 <a> , :active css state 将执行(在本例中,向下转换为 2px ),但不会注册点击操作。因此不会触发点击处理程序,也不会导致重定向。

有没有人以前遇到过这个问题并且知道我可以做些什么来解决它?

根据要求,这是一个演示问题的 fiddle :https://jsfiddle.net/bf9yk0tn/

最佳答案

显然,DOM 失去了对元素的跟踪,因为它从其原始位置移动,并且在点击事件发生时没有任何东西(虽然它以某种方式管理悬停)。

您可以采用这样的解决方法来填补空白,但我不确定它是否是最佳解决方案。

a:hover::after {
  content: '';
  position: absolute;
  bottom: -1px;
  left: 0;
  height: 1px;
  width: 100%;
}

这是更新 jsfiddle

关于html - CSS 变换移动点击处理程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56874279/

相关文章:

javascript - 如何检测表中动态生成的行

html - 为什么在 css 中从下到上获取菜单列表?

html - 如何创建带有预览的选择字体下拉列表?

html - CSS 中的特殊性问题

javascript - 使用 jquery 切换多个复选框

javascript - 音频 HTML5 自动播放 WebWorks

node.js - 如何实现没有ID的React HTTP删除请求?

javascript - Django 和 React : csrf cookie is not being set in request header

单击列表项时不会调用 Javascript 函数

javascript - 如何按 es6/React 中的特定字段对 map 进行排序?