Respostas:
Você pode usar : pseudo classe habilitada , mas o aviso IE<9
não a suporta :
button:hover:enabled{
/*your styles*/
}
button:active:enabled{
/*your styles*/
}
button:hover:enabled
não parecia funcionar no meu caso. Usando a emulação IE9 no IE11.
.button:active:hover:not([disabled]) {
/*your styles*/
}
Você pode tentar isso ..
Por que não usar o atributo "disabled" em css. Isso deve funcionar em todos os navegadores.
button[disabled]:hover {
background: red;
}
button:hover {
background: lime;
}
.button[disabled], .button[disabled]:hover, .button[disabled]:focus, .button[disabled]:active {}
Uma abordagem com especificidade mais baixa que funciona nos navegadores mais modernos (IE11 + e excluindo alguns navegadores Opera e IE móveis - http://caniuse.com/#feat=pointer-events ):
.btn {
/* base styles */
}
.btn[disabled]
opacity: 0.4;
cursor: default;
pointer-events: none;
}
.btn:hover {
color: red;
}
A pointer-events: none
regra desabilitará o foco; você não precisará aumentar a especificidade com um .btn[disabled]:hover
seletor para anular o estilo de foco.
(Para sua informação, estes são os eventos-ponteiro HTML simples, não os eventos-ponteiro contenciosos de dispositivos de entrada de abstração)
Em 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;
}
}
Se você estiver usando LESS
ou Sass
, você pode tentar o seguinte:
.btn {
&[disabled] {
opacity: 0.6;
}
&:hover, &:active {
&:not([disabled]) {
background-color: darken($orange, 15);
}
}
}
Uma maneira é adicionar uma classe partcular ao desativar botões e substituir os estados de foco e ativo dessa classe em css. Ou removendo uma classe ao desativar e especificar as propriedades de foco e pseudo ativo nessa classe apenas em css. De qualquer forma, provavelmente não pode ser feito apenas com css, você precisará usar um pouco de js.
:not()
seletor, mas, novamente, só é suportado desde o IE9. Veja: developer.mozilla.org/pt-BR/docs/Web/CSS/:not