回答:
:enabled疑似クラスを使用できますが、notice IE<9
はサポートしていません。
button:hover:enabled{
/*your styles*/
}
button:active:enabled{
/*your styles*/
}
button:hover:enabled
私の場合はうまくいかなかったようです。IE11でのIE9エミュレーションの使用。
.button:active:hover:not([disabled]) {
/*your styles*/
}
あなたはこれを試すことができます。
最新のブラウザ(IE11 +、および一部の携帯オペラ&IEブラウザを除く-で動作し、低特異性のアプローチhttp://caniuse.com/#feat=pointer-events):
.btn {
/* base styles */
}
.btn[disabled]
opacity: 0.4;
cursor: default;
pointer-events: none;
}
.btn:hover {
color: red;
}
pointer-events: none
ルールはホバー無効になります。.btn[disabled]:hover
ホバースタイルを無効にするために、セレクターで具体性を上げる必要はありません。
(参考までに、これは単純なHTMLポインターイベントであり、問題のある抽象化入力デバイスポインターイベントではありません)
sass(scss):
button {
color: white;
cursor: pointer;
border-radius: 4px;
&:disabled{
opacity: 0.4;
&:hover{
opacity: 0.4; //this is what you want
}
}
&:hover{
opacity: 0.9;
}
}
LESS
またはを使用している場合はSass
、これを試すことができます:
.btn {
&[disabled] {
opacity: 0.6;
}
&:hover, &:active {
&:not([disabled]) {
background-color: darken($orange, 15);
}
}
}
1つの方法は、ボタンを無効にし、CSSでそのクラスのホバー状態とアクティブ状態をオーバーライドしながら、特定のクラスを追加することです。または、CSSでのみそのクラスのホバーとアクティブな疑似プロパティを無効にして指定するときにクラスを削除します。どちらにしても、CSSだけでは実現できない可能性が高いので、少しjsを使用する必要があります。
:not()
セレクターもありますが、IE9以降もサポートされています。参照:developer.mozilla.org/en-US/docs/Web/CSS/