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)あなたが反転色でRaisedButton
の小道具を初期化する必要があります)RaisedButtonが
2をレンダリング<button>
要素にCSS :hover
を使用する必要があります(これは、材料-uiがラベルの色を使用してホバーのオーバーレイとリップルの色を決定するためです)。あなたのCSSを使用して、スワップされていない色を「修正する」:ホバーします。
3)あなたは材料-UIは、ボタンのラベルに使用するトランジションを一致させる必要がある、またはそれが正しく
NOTEをアニメーション化しません:あなたは材料-UIのカスタムテーマを使用している場合は、このコンポーネントを修正することができますカスタムカラーを受け入れるのではなく、raisedButtonテーマのプライマリ/セカンダリカラーを使用してください。
驚くばかりです。これを私自身の設定に入れようとして2時間後、私はこれを正しく再現することはできません。更新されたフィドルは次のとおりです:https://jsfiddle.net/0gjs8bh3/4/ idの代わりにclassNameを使用しても動作しないのは知っていますか? また、このフィドルにはどのようなバージョンのmaterial-uiを使用しましたか?このフィドルと自分のセットアップのボタンのHTMLツリーは同じではありません。 –
私はオンラインで見つけた基本バージョンからjsFiddleをフォークしたバージョンがわかりません。 RE:id vs className ... material-uiはbutton要素のIDをレンダリングするようですが、親divのclassNameをレンダリングします。したがって、classNameを使用する場合は、少しCSSのセレクタを微調整するだけです。更新されたフィディドの更新:https://jsfiddle.net/96618s4b/1/ –
最終的に2つのRaisedButtonタグの間にボタンラベルを設定する代わりに、コンポーネントの「ラベル」小道具を使用しました。色の問題があります。そのように動作させる方法を知っていますか(標準的なm-uiのアプローチのようです)? fiddle:https://jsfiddle.net/0gjs8bh3/6/ –