Оскільки це одна властивість з іменем filter
, кожного разу, коли ви хочете додати до неї стиль, ви його замінюєте.
Версія CSS 1
На щастя, ви можете додати кілька стилів у деяких властивостях, таких як фонове зображення та фільтр! Щоб це працювало, вам доведеться розмістити всі стилі фільтра в одному розділеному пробілом властивості фільтра.
.grayscale.blur {
filter: blur(5px) grayscale(1);
}
Версія CSS 2
Альтернативним, гнучким рішенням було б створити спеціальний "div-суп" та встановити різні фільтри в стеці html. напр
<div class='demo__blurwrap' style='filter: blur(5px);'>
<div class="demo__graywrap" style='filter: grayscale(1);'>
<img src="awesome_image.jpeg" alt="">
</div>
</div>
Версія CSS 3
редагувати : щойно зрозумів, що я щойно написав цю версію з перетвореннями, але застосовується та сама ідея.
Ще одне рішення - CSS vars. Я б не сказав, що це ідеально, але це приємний експеримент. Основним недоліком є те, що вам потрібно оголосити багато змінних, мати довгі правила за замовчуванням для transform
вкладених перетворень, безумовно, порушить.
setInterval(() => {
yes_this_works_and_one_of_many_reasons_ids_are_bad.classList.toggle('translate');
}, 1000);
setInterval(() => {
yes_this_works_and_one_of_many_reasons_ids_are_bad.classList.toggle('scale');
}, 1500);
:root {
--scale: 1;
--translate: 0px;
}
.box {
background: blue;
width: 20px;
height: 20px;
transform:
scale(var(--scale))
translate(var(--translate), var(--translate));
transition: transform .3s;
}
.box.translate {
--translate: 20px;
}
.box.scale {
--scale: 3;
}
<div
id='yes_this_works_and_one_of_many_reasons_ids_are_bad'
class='box scale translate'
></div>
Javascript
Нарешті, якщо ви використовували JavaScript для відтворення стилів, ви можете прочитати поточні застосовані фільтри за допомогою getComputedStyle та додати більше до суміші.
І відповідна стаття - це більше для анімації і поки що не підтримується багатьма браузерами: адитивні анімації
І ще одна відповідна стаття про css-трюки: Гудіні