Câu trả lời:
Bạn có thể sử dụng : lớp giả được kích hoạt , nhưng thông báo IE<9
không hỗ trợ nó :
button:hover:enabled{
/*your styles*/
}
button:active:enabled{
/*your styles*/
}
button:hover:enabled
dường như không hoạt động trong trường hợp của tôi. Sử dụng mô phỏng IE9 theo IE11.
.button:active:hover:not([disabled]) {
/*your styles*/
}
Bạn có thể thử điều này ..
Tại sao không sử dụng thuộc tính "bị vô hiệu hóa" trong css. Điều này phải hoạt động trên tất cả các trình duyệt.
button[disabled]:hover {
background: red;
}
button:hover {
background: lime;
}
.button[disabled], .button[disabled]:hover, .button[disabled]:focus, .button[disabled]:active {}
Cách tiếp cận có độ đặc hiệu thấp hơn, hoạt động trong hầu hết các trình duyệt hiện đại (IE11 + và không bao gồm một số trình duyệt Opera & IE di động - http://caniuse.com/#feat=pulum-events ):
.btn {
/* base styles */
}
.btn[disabled]
opacity: 0.4;
cursor: default;
pointer-events: none;
}
.btn:hover {
color: red;
}
Các pointer-events: none
quy tắc sẽ vô hiệu hóa di chuột; bạn sẽ không cần nâng cao tính đặc hiệu với .btn[disabled]:hover
bộ chọn để vô hiệu hóa kiểu di chuột.
(FYI, đây là sự kiện con trỏ HTML đơn giản, không phải là sự kiện trừu tượng-đầu vào-thiết bị đầu vào-sự kiện)
Trong 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;
}
}
Nếu bạn đang sử dụng LESS
hoặc Sass
, Bạn có thể thử điều này:
.btn {
&[disabled] {
opacity: 0.6;
}
&:hover, &:active {
&:not([disabled]) {
background-color: darken($orange, 15);
}
}
}
Một cách là thêm một lớp partcular trong khi vô hiệu hóa các nút và ghi đè trạng thái di chuột và trạng thái hoạt động cho lớp đó trong css. Hoặc loại bỏ một lớp khi vô hiệu hóa và chỉ định các thuộc tính giả và di chuột hoạt động trên lớp đó chỉ trong css. Dù bằng cách nào, có thể không thể thực hiện hoàn toàn bằng css, bạn sẽ cần sử dụng một chút js.
:not()
bộ chọn, nhưng một lần nữa, nó chỉ được hỗ trợ kể từ IE9. Xem: developer.mozilla.org/en-US/docs/Web/CSS/:not