Yanıtlar:
.button:active:hover:not([disabled]) {
/*your styles*/
}
Bunu deneyebilirsiniz ..
Neden css'de "devre dışı" özelliğini kullanmıyorsunuz? Bu, tüm tarayıcılarda çalışmalıdır.
button[disabled]:hover {
background: red;
}
button:hover {
background: lime;
}
.button[disabled], .button[disabled]:hover, .button[disabled]:focus, .button[disabled]:active {}
Sass'ta (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;
}
}
Çoğu modern tarayıcıda çalışan daha düşük özgüllük yaklaşımı (IE11 + ve bazı mobil Opera ve IE tarayıcıları hariç - 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: noneKural hover devre dışı bırakır; .btn[disabled]:hoverfareyle üzerine gelme stilini geçersiz kılmak için bir seçiciyle özgüllüğü artırmanız gerekmez .
(Bilginize, bu basit HTML işaretçi olaylarıdır, tartışmalı soyutlama-girdi-aygıtları işaretçi olayları değil)
LESSVeya kullanıyorsanız Sass, Bunu deneyebilirsiniz:
.btn {
&[disabled] {
opacity: 0.6;
}
&:hover, &:active {
&:not([disabled]) {
background-color: darken($orange, 15);
}
}
}
Bunun bir yolu, düğmeleri devre dışı bırakıp css'de o sınıf için fareyle üzerine gelme ve etkin durumları geçersiz kılarken bir parçacık sınıfı eklemektir. Veya o sınıftaki fareyle üzerine gelme ve etkin sahte özellikleri devre dışı bırakıp belirtirken bir sınıfı kaldırmak yalnızca css biçiminde. Her iki durumda da, sadece css ile yapılamaz, biraz js kullanmanız gerekir.
:not()seçici, ama sonra tekrar, sadece IE9 beri desteklenen yanı var. Bakınız: developer.mozilla.org/tr-TR/docs/Web/CSS/:not