Các opacity
phong cách ảnh hưởng đến toàn bộ phần tử và tất cả mọi thứ bên trong nó. Câu trả lời chính xác cho điều này là sử dụng màu nền rgba để thay thế.
CSS khá đơn giản:
.myelement {
background: rgba(200, 54, 54, 0.5);
}
... trong đó ba số đầu tiên là các giá trị đỏ, lục và lam cho màu nền của bạn và số thứ tư là giá trị kênh 'alpha', hoạt động giống như opacity
giá trị.
Xem trang này để biết thêm thông tin: http://css-tricks.com/rgba-browser-support/
Mặt trái, là điều này không hoạt động trong IE8 hoặc thấp hơn. Trang tôi đã liên kết ở trên cũng liệt kê một số trình duyệt khác mà nó không hoạt động, nhưng tất cả chúng đều rất cũ; tất cả các trình duyệt đang được sử dụng ngoại trừ IE6 / 7/8 sẽ hoạt động với màu rgba.
Tin tốt là bạn cũng có thể buộc IE làm việc với điều này bằng cách sử dụng một bản hack có tên là CSS3Pie . CSS3Pie bổ sung một số tính năng CSS3 hiện đại cho các phiên bản IE cũ hơn, bao gồm cả màu nền rgba.
Để sử dụng CSS3Pie cho hình nền, bạn cần thêm một -pie-background
khai báo cụ thể vào CSS của mình, cũng như behavior
kiểu PIE , vì vậy, biểu định kiểu của bạn sẽ trông giống như sau:
.myelement {
background: rgba(200, 54, 54, 0.5);
-pie-background: rgba(200, 54, 54, 0.5);
behavior: url(PIE.htc);
}
Hy vọng rằng sẽ giúp.
[BIÊN TẬP]
Đối với những gì nó đáng giá, như những người khác đã đề cập, bạn có thể sử dụng filter
phong cách của IE , với gradient
từ khóa. Giải pháp CSS3Pie thực sự sử dụng kỹ thuật tương tự này đằng sau hậu trường, nhưng loại bỏ việc bạn phải xử lý trực tiếp các bộ lọc của IE, vì vậy các bảng định kiểu của bạn sạch hơn nhiều. (nó cũng bổ sung một loạt các tính năng hay khác, nhưng điều đó không liên quan đến cuộc thảo luận này)