Новий спосіб зробити це вже деякий час доступний у сучасних браузерах.
background-blend-mode дозволяє отримати цікаві ефекти, і одним з них є перетворення сірого масштабу
Значення освітленості , встановлене на білому тлі, дозволяє це. (наведіть курсор, щоб побачити його сірим кольором)
.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>
Світлість береться із зображення, колір - із фону. Оскільки він завжди білий, кольору немає.
Але це дозволяє набагато більше.
Можна анімувати налаштування ефекту в 3 шари. Перший - зображення, а другий - біло-чорний градієнт. Якщо застосувати для цього режим множення суміші, ви отримаєте білий результат, як і раніше, на білій частині, але вихідне зображення на чорній частині (множення на біле дає біле, множення на чорне не має ефекту).
На білій частині градієнта ви отримуєте такий же ефект, як і раніше. На чорній частині градієнта ви змішуєте зображення над собою, і результат - немодифіковане зображення.
Тепер все, що потрібно, - це перемістити градієнт, щоб цей ефект був динамічним: (наведіть курсор, щоб побачити його в кольорі)
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>
довідник
матриця сумісності