Một cách mới để làm điều này đã có sẵn một thời gian trên các trình duyệt hiện đại.
chế độ trộn nền cho phép bạn có được một số hiệu ứng thú vị và một trong số đó là chuyển đổi thang độ xám
Độ sáng giá trị , được đặt trên nền trắng, cho phép nó. (di chuột để xem nó màu xám)
.test {
width: 300px;
height: 200px;
background: url("http://placekitten.com/1000/750"), white;
background-size: cover;
}
.test:hover {
background-blend-mode: luminosity;
}
<div class="test"></div>
Độ sáng được lấy từ hình ảnh, màu sắc được lấy từ nền. Vì nó luôn luôn là màu trắng, không có màu.
Nhưng nó cho phép nhiều hơn nữa.
Bạn có thể làm động các thiết lập hiệu ứng 3 lớp. Cái đầu tiên sẽ là hình ảnh, và cái thứ hai sẽ là một gradient trắng đen. Nếu bạn áp dụng chế độ hòa trộn nhân cho điều này, bạn sẽ nhận được kết quả màu trắng như trước trên phần trắng, nhưng hình ảnh gốc trên phần màu đen (nhân với màu trắng cho màu trắng, nhân với màu đen không có hiệu lực.)
Trên phần màu trắng của gradient, bạn có được hiệu ứng như trước. Trên phần màu đen của gradient, bạn đang trộn hình ảnh lên chính nó và kết quả là hình ảnh không được chỉnh sửa.
Bây giờ, tất cả những gì cần thiết là di chuyển gradient để có hiệu ứng động này: (di chuột để xem nó có màu)
div {
width: 600px;
height: 400px;
}
.test {
background: url("http://placekitten.com/1000/750"),
linear-gradient(0deg, white 33%, black 66%), url("http://placekitten.com/1000/750");
background-position: 0px 0px, 0px 0%, 0px 0px;
background-size: cover, 100% 300%, cover;
background-blend-mode: luminosity, multiply;
transition: all 2s;
}
.test:hover {
background-position: 0px 0px, 0px 66%, 0px 0px;
}
<div class="test"></div>
tài liệu tham khảo
ma trận tương thích