Da es sich um eine Eigenschaft mit dem Namen handelt filter
, überschreiben Sie sie jedes Mal, wenn Sie einen Stil hinzufügen möchten.
CSS Version 1
Glücklicherweise können Sie in einigen Eigenschaften wie Hintergrundbild und Filter mehrere Stile hinzufügen! Damit dies funktioniert, müssen Sie alle Filterstile in einer durch Leerzeichen getrennten Filtereigenschaft platzieren.
.grayscale.blur {
filter: blur(5px) grayscale(1);
}
CSS Version 2
Eine alternative, flexible Lösung wäre, absichtlich eine "Div-Suppe" zu erstellen und verschiedene Filter im HTML-Stapel festzulegen. z.B
<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 Version 3
edit : habe gerade gemerkt, dass ich diese Version gerade mit Transformationen geschrieben habe, aber die gleiche Idee gilt.
Eine weitere Lösung ist CSS vars. Ich würde nicht sagen, dass es ideal ist, aber es ist ein schönes Experiment. Der Hauptnachteil ist, dass Sie viele Variablen deklarieren müssen, standardmäßige lange Regeln für haben transform
und verschachtelte Transformationen definitiv brechen.
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
Wenn Sie JavaScript zum Rendern der Stile verwenden, können Sie die aktuell angewendeten Filter mit getComputedStyle lesen und der Mischung weitere hinzufügen.
Und ein relevanter Artikel - dies ist eher für Animationen gedacht und wird von vielen Browsern noch nicht unterstützt: Additive Animationen
Und noch ein relevanter Artikel über CSS-Tricks: Houdini