Я достиг разумного поведения со следующими изменениями в вашем numberPadStyle
:
const numberPadStyle = theme => ({
button: {
backgroundColor: colors.surface,
borderRadius: 0, // to make buttons sharp edged
"&:hover": {
backgroundColor: colors.primary,
// Reset on touch devices, it doesn't add specificity
"@media (hover: none)": {
backgroundColor: colors.surface,
"&:active": {
backgroundColor: colors.primary
}
}
},
"&:active": {
backgroundColor: colors.primary
}
}
});
Проблема с сенсорными экранами заключается в том, что прикосновение вызывает эффект "зависания", и оно не исчезает, пока выкоснуться где-нибудь еще."@media (hover: none)"
нацеливает эффект наведения мыши на сенсорные устройства (https://developer.mozilla.org/en-US/docs/Web/CSS/@media/hover). «Активный» CSS действует во время касания / щелчка, а затем пульсация, встроенная в Button
, заботится обо всем остальном.
Вы можете, конечно, настроить наведение и активные цвета по своему усмотрению.