Tính năng bạn đang tìm kiếm là filter
. Nó có khả năng thực hiện một loạt các hiệu ứng hình ảnh, bao gồm cả độ sáng:
#myimage {
filter: brightness(50%);
}
Bạn có thể tìm thấy một bài viết hữu ích về nó tại đây: http://www.html5rocks.com/en/tutorials/filters/und hieu-css/
Một cái khác: http://davidwalsh.name/css-filters
Và quan trọng nhất, thông số kỹ thuật W3C: https://dvcs.w3.org/hg/FXTF/raw-file/tip/filters/index.html
Lưu ý rằng đây là thứ chỉ mới xuất hiện gần đây trong CSS như một tính năng. Nó có sẵn, nhưng một số lượng lớn các trình duyệt hiện có sẽ không hỗ trợ nó nêu ra, và những người làm hỗ trợ nó sẽ đòi hỏi một tiền tố nhà cung cấp (ví dụ -webkit-filter:
, -moz-filter
, vv).
Cũng có thể thực hiện các hiệu ứng bộ lọc như thế này bằng cách sử dụng SVG. Hỗ trợ SVG cho những hiệu ứng này được thiết lập tốt và được hỗ trợ rộng rãi (thông số kỹ thuật bộ lọc CSS đã được lấy từ thông số kỹ thuật SVG hiện có)
Cũng lưu ý rằng điều này không được nhầm lẫn với filter
kiểu độc quyền có sẵn trong các phiên bản IE cũ (mặc dù tôi có thể dự đoán sự cố với xung đột không gian tên khi kiểu mới giảm tiền tố nhà cung cấp của nó).
Nếu không có cách nào phù hợp với bạn, bạn vẫn có thể sử dụng opacity
tính năng hiện có, nhưng không phải theo cách bạn đang nghĩ: chỉ cần tạo một phần tử mới với màu tối đồng nhất, đặt nó lên trên hình ảnh của bạn và làm mờ nó bằng cách sử dụng opacity
. Hiệu ứng sẽ là ảnh phía sau bị tối.
Cuối cùng, bạn có thể kiểm tra sự hỗ trợ của trình duyệt filter
tại đây .