ボタンのスタイルを設定するには、ホバー、アクティブ、および無効を使用します。
ただし、問題は、ボタンが無効になっている場合でも、ホバーしてもアクティブなスタイルが適用されることです。
ホバーを適用して、有効なボタンでのみアクティブにする方法は?
ボタンのスタイルを設定するには、ホバー、アクティブ、および無効を使用します。
ただし、問題は、ボタンが無効になっている場合でも、ホバーしてもアクティブなスタイルが適用されることです。
ホバーを適用して、有効なボタンでのみアクティブにする方法は?
:enabled疑似クラスを使用できますが、 noticeIE<9
はそれをサポートしていません:
button:hover:enabled{
/*your styles*/
}
button:active:enabled{
/*your styles*/
}
.button:active:hover:not([disabled]) {
/*your styles*/
}
あなたはこれを試すことができます。
cssで属性「disabled」を使用しないのはなぜですか。これはすべてのブラウザで機能する必要があります。
button[disabled]:hover {
background: red;
}
button:hover {
background: lime;
}
LESS
またはを使用している場合はSass
、これを試すことができます:
.btn {
&[disabled] {
opacity: 0.6;
}
&:hover, &:active {
&:not([disabled]) {
background-color: darken($orange, 15);
}
}
}
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;
}
}
最も軽いタッチを使用します:ルールの順序でオーバーライドします。
.btn {
/* base styles */
}
.btn:hover {
color: red;
}
.btn:active {
color: green;
}
.btn:disabled {
color: #aaa;
}
秘訣は順序です。無効になっていないすべての状態を最初に適用し、それらすべてが同じ特異性を持っていることを確認し、最後に同じ特異性で無効にします。
disabled
これは、リンクに追加されたクラス、またはプロパティを持たない非対話型要素では機能しません。
(より特異性の高いルールを削除するために編集され、pointer-events
)
1つの方法は、ボタンを無効にし、cssでそのクラスのホバー状態とアクティブ状態をオーバーライドしながら、特定のクラスを追加することです。または、cssでのみそのクラスのホバーとアクティブな疑似プロパティを無効にして指定するときにクラスを削除します。いずれにせよ、cssだけでは実行できない可能性が高いため、少しjsを使用する必要があります。
私のプロジェクトでは以下のものを使用しています。
.bg-brand-3 {
background-color: black;
&[type="button"]:enabled {
&:hover {
background-color: orange;
}
&:active {
background-color: green;
}
}
&[type="submit"] {
// css
}
}
と:enable
同じ意味です:not(:disabled)