Вам нужно будет использовать CSS и некоторые хакеры, но ниже это небольшой компонент, который его обертывает.
https://jsfiddle.net/0gjs8bh3/3/
const InvertHoverButton = ({ id, backgroundColor, labelColor }) => {
// cubic-bezier(0.23, 1, 0.32, 1)
const transition = `background-color 450ms ${MaterialUI.transitions.easeOutFunction} 0ms`;
return (
<div style={{ display: 'inline-block' }}>
<style>
{`
#${id}:hover {
transition: ${transition} !important;
background-color: ${labelColor} !important;
color: ${backgroundColor} !important;
}
#${id} {
transition: ${transition} !important;
background-color: ${backgroundColor} !important;
color: ${labelColor} !important;
}
`}
</style>
<RaisedButton id={id} backgroundColor={labelColor} labelColor={backgroundColor} className="test">Fiddle!</RaisedButton>
</div>
);
};
Пример:
// Must set id, backgroundColor and labelColor
<InvertHoverButton id="myButton" backgroundColor="red" labelColor="white">Fiddle!</InvertHoverButton>
Вы можете выбрать, чтобы сделать CSS по-разному, но я просто пытаюсь инкапсулировать для вас здесь, на SO, чтобы сделать его более легко проверяемым , Если вы решили осуществить это по-разному, ключевые моменты:
1) Вы должны использовать CSS :hover
на <button>
элементе, который RaisedButton делает
2) Вы должны инициализировать реквизит RaisedButton
«s с цветами перевернутых уже (это потому, что material-ui использует цвет ярлыка, чтобы определить наложение и цвет пульсации). Используйте свой CSS для «исправления» измененных цветов, если не: hover'ing.
3) Вы должны соответствовать переходу, материал-интерфейс использует на этикетке кнопки, либо он не будет анимировать правильно
ПРИМЕЧАНИЯ: Если вы используете материал-Ui в пользовательских тематизацию, вы можете изменить этот компонент используйте основной/вторичный цвет темы raiseButton, вместо того, чтобы принимать пользовательские цвета.
Awesome. Хотя после 2 часов попыток поставить это в мою собственную настройку, я полностью неспособен воспроизвести это правильно. Вот обновленная скрипка: https://jsfiddle.net/0gjs8bh3/4/ Знаете ли вы, почему использование имени класса вместо id не работает? Также, какую версию материала вы использовали для этой скрипки? Дерево HTML кнопки на этой скрипке и моя настройка не совпадают. –
Не знаю, какую версию я разветвил, что jsFiddle от базовой, которую я нашел в Интернете. RE: id vs className ... Похоже, что материал-ui отображает идентификатор элемента кнопки, но className в его родительском div.Итак, если вы хотите использовать className, вам просто нужно немного настроить селектор CSS. Обновление обновленной скрипты: https://jsfiddle.net/96618s4b/1/ –
наконец. Вместо того, чтобы устанавливать ярлык кнопки между тэгами 2 RaisedButton, я использовал «метку» для поддержки компонента, и в этом случае ваш подход имеет проблему цвета. Вы знаете, как заставить его работать таким образом (это, кажется, канонический подход m-ui)? fiddle: https://jsfiddle.net/0gjs8bh3/6/ –