2012-09-25 29 views
12

CSS:HTML Nút Đình nhận: hoạt động CSS Pseudo Lớp

button:active { 
/* active css */ 
} 

button:disabled { 
    opacity: 0.5; 
} 

HTML:

<button disabled="disabled">Ok</button> 

Khi tôi nhấp vào nút trình duyệt bổ sung thêm nút: trạng thái hoạt động làm cho nó trông giống như nó được nhấp (mặc dù nó bị tắt). Tôi thề tôi nghĩ: hoạt động chỉ được thêm nếu nút đã được bật. Tôi đã bỏ lỡ điều gì?

+0

trong trình duyệt nào bạn đã thử nghiệm? – Giona

+0

Đã sao chép trên Chrome v21. –

+0

Đây là trang thử nghiệm: http://jsfiddle.net/Blender/LRvra/ – Blender

Trả lời

27

Từ những gì tôi có thể biết, :active không loại trừ các yếu tố :disabled. Bạn có thể đọc số spec nếu muốn.

Để giải quyết vấn đề của bạn, bạn có thể loại trừ các yếu tố :disabled bởi nhắm mục tiêu chỉ :enabled yếu tố với :active chọn của bạn:

button:enabled:active { 
/* active css */ 
} 

button:disabled { 
    opacity: 0.5; 
} 

Demo: http://jsfiddle.net/Blender/LRvra/1/

+0

Dang; bạn đánh bại tôi trong 5 giây. – Dai

+0

': disabled' không có trong thông số CSS2.1. – BoltClock

+0

@BoltClock: Cảm ơn, tôi đã bao gồm một liên kết đến thông số CSS3. – Blender

4

According to the CSS3 specification (:disabled không có trong CSS2.1) không có đề cập đến rằng :active:disabled loại trừ lẫn nhau. Có thể phần này của đặc tả cần làm rõ để UAs được tự do áp dụng các lớp giả kết hợp.

Tôi đề nghị bạn sửa đổi selectors của bạn sẽ được rõ ràng hơn:

button:enabled:active { 
    /* active css */ 
} 
button:disabled { 
    opacity: 0.5; 
} 
0

Bạn cũng có thể sử dụng: không() - mô tả của css:

button:active:not(:disabled) { 
/* active css */ 
} 

button:disabled { 
    opacity: 0.5; 
} 

Chúc y'all tốt nhất, Patric

Các vấn đề liên quan