【问题标题】:how to remove focus on button click in react js?如何在反应js中消除对按钮单击的关注?
【发布时间】:2021-06-09 11:37:27
【问题描述】:

对于 a11y(可访问性),我添加了这个我无法更改的 css。下面的 css 始终存在于我的演示应用程序中。我无法控制更改该 CSS。

button:focus,
a:focus {
  outline-offset: 2px;
  outline-width: 2px !important;
  outline-style: dotted !important;
  outline-color: currentColor;
}

但问题是当我点击按钮时它会显示 outline 。如何在单击按钮时删除该轮廓。

为了解决这个问题,我看到了两个选项。

  1. 在点击时使用blur 事件。它隐藏了outline但它会在几秒钟内显示轮廓。这对我不起作用
  2. 使用这个 pseudo https://developer.mozilla.org/en-US/docs/Web/CSS/:focus-visible .but 它在 safari 上不起作用

有没有更好的方法或任何习惯。钩子移除按钮点击的焦点?

这是我的代码

https://codesandbox.io/s/angry-lamarr-lz586?file=/src/styles.css:59-207

function handleProductNavigation(event) {
    btnRef.current.blur();
    console.log(btnRef.current.blur);
    //event.currentTarget.blur();
  }

【问题讨论】:

标签: javascript reactjs accessibility


【解决方案1】:

您可以将 :focus-visible 方法与 Safari 和旧版 Chrome/Firefox 版本的 polyfill 一起使用:

https://github.com/WICG/focus-visible

该 polyfill 为使用键盘聚焦的元素添加了一个 focus-visible 类。

【讨论】:

  • 能否请您更改codesandbox如何使用polyfil
  • @user944513 我看到您提出了一个问题,即由于默认的 Safari 选项卡行为,根本无法聚焦按钮。你设法解决了吗?我可能会尝试帮助您解决样式问题,但如果是关于默认行为问题,则 polyfill 是不够的。
猜你喜欢
  • 2020-04-26
  • 2021-05-31
  • 2016-09-14
  • 2021-10-04
  • 1970-01-01
  • 2021-02-24
  • 1970-01-01
  • 2020-09-25
  • 1970-01-01
相关资源
最近更新 更多