[material-ui][Button] Provide an accessible focus alternative when disableRipple prop is set

q43xntqr  于 3个月前  发布在  其他
关注(0)|答案(4)|浏览(43)

问题是什么? 🤔

当你在 theme.components 上使用 disableRipple: true 属性时,例如:

MuiButtonBase: {
      defaultProps: {
        disableRipple: true,
      },
    },

那么所有依赖于 Mui-focusVisible 类的涟漪样式组件都变得无法访问。当你用键盘聚焦它们时,什么都不会发生,你无法知道它们是否被聚焦。
| Ripple | Disabled Ripple |
| ------------ | ------------ |
|

|

|

需要满足哪些条件? ❓

需要有一种某种回退方案。我在我的应用中这样做了,并且一段时间内一直困惑不解,为什么什么都不起作用,包括:

  • 单选按钮
  • 复选框
  • 按钮

我们有哪些选择? 💡

我在我的应用中所做的是一个全局样式到:

.Mui-focusVisible: {
outline: 2px solid #000
}

应该有一些回退方案。

建议的解决方案 🟢

我不了解MUI的内部,应该有更多知识的人提出一个解决方案。我对我的应用提出的解决方案是我在 "What are our options? 💡" 部分中写的内容。

资源和基准测试 🔗

  • 无响应*
eanckbw9

eanckbw91#

抱歉,这个问题有些枯燥。但是,为什么要禁用标准的涟漪效果,而不是根据我们的需求自定义它呢?

这里有一个简单的例子:

$x_{1}e^{0}f_{1}x$

tjrkku2a

tjrkku2a2#

对不起,这个问题可能有些枯燥,但是为什么我们要禁用标准的涟漪效果,而不是根据我们的需要定制它呢?

这里有一个简单的例子:https://codesandbox.io/s/mui-change-global-ripple-color-forked-zk0xr3

@kachar 涟漪控制了点击涟漪和焦点涟漪。通常情况下,我们不希望有点击涟漪,但是这样做会使使用焦点涟漪的所有内容都无法访问。

hvvq6cgz

hvvq6cgz3#

看起来,它似乎在Button Base的API中有说明:https://mui.com/material-ui/api/button-base/#props。

wbgh16ku

wbgh16ku4#

如您所见,这是一个预期的且已记录的行为。如果您禁用了波纹效果,那么您必须为焦点状态提供自己的样式。
在v5中,我们对此无能为力,因为这可能会破坏依赖于此的用户,但我们将在v6中进行更改(通过用不同的背景阴影替换焦点波纹效果)。

相关问题