Cara baru untuk melakukan ini telah tersedia untuk beberapa waktu sekarang di browser modern.
background-blend-mode memungkinkan Anda mendapatkan beberapa efek menarik, dan salah satunya adalah konversi skala abu-abu
Luminositas nilai , yang diatur pada latar belakang putih, memungkinkannya. (arahkan kursor untuk melihatnya berwarna abu-abu)
.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>
Luminositas diambil dari gambar, warnanya diambil dari latar belakang. Karena selalu putih, tidak ada warna.
Tetapi memungkinkan lebih banyak.
Anda dapat menganimasikan pengaturan efek 3 layer. Yang pertama akan menjadi gambar, dan yang kedua akan menjadi gradien putih-hitam. Jika Anda menerapkan mode campuran multiply pada ini, Anda akan mendapatkan hasil putih seperti sebelumnya pada bagian putih, tetapi gambar asli pada bagian hitam (dikalikan dengan putih memberi putih, mengalikan dengan hitam tidak berpengaruh.)
Pada bagian putih gradien, Anda mendapatkan efek yang sama seperti sebelumnya. Pada bagian hitam dari gradien, Anda memadukan gambar itu sendiri, dan hasilnya adalah gambar yang tidak dimodifikasi.
Sekarang, yang diperlukan hanyalah menggerakkan gradien untuk mendapatkan efek dinamis ini: (arahkan kursor untuk melihatnya dalam warna)
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>
referensi
matriks kompatibilitas