Squigglevision ein (echter!) Begriff für Animation, bei der die Linien zu zappeln scheinen, selbst wenn das Objekt/die Szene in Ruhe ist. Es ist Teil des ikonischen Looks von Shows wie Dr. Katz, erinnern Sie sich?


Ein ziemlich einzigartiger Look! Er ist sogar patentiert. Aber das Patent spricht von fünf bearbeiteten Bildern und deren Anzeige in "schneller Abfolge". Wikipedia
Um die Linienoszillationseffekte zu erzeugen, die Squigglevision charakterisieren, schleifen die Animatoren von Tom Snyder Productions fünf leicht unterschiedliche Zeichnungen in einer Sequenz namens Flic.
Im Web würden wir, wenn wir fünf (oder mehr) Bilder in schneller Abfolge animieren müssten, dies wahrscheinlich mit einer step()-basierten @keyframes-Animation und einem Sprite-Sheet tun. Hier ist ein großartiges Beispiel dafür von simuari, das genau zeigt, wie es funktioniert, mit dem Sprite-Sheet oben (10 Bilder kombiniert zu 1) und der Animation darunter.

Aber das ist viel Arbeit! Es gibt eine Möglichkeit, das Wackeln, Schwingen und Zucken bei jedem Element zu erreichen, ohne eine Menge einzelner Bilder von Hand erstellen und spezielle Keyframes in speziellen Größen anfertigen zu müssen, damit es funktioniert.
Der Trick?
Schnell iterierte SVG-Turbulenfilter
Whaaaat? Ja, das ist so cool.
Diesen Trick habe ich von David Khourshid gelernt, der eine wunderbare Demo erstellt hat, Alex the CSS Husky (siehe unten), bei der das Zucken nicht einmal das Hauptmerkmal der Demo war! David sagt, er habe den Trick von Lucas Bebber in einer anderen Demo, die ich unten einbetten werde, gelernt.
(Das ist meine geforkte Version für eine winzige Firefox-Korrektur: Man kann SVG in Firefox nicht display: none; setzen.)

So funktioniert ein einzelner SVG-Turbulenfilter. Zuerst deklarieren Sie ihn mit etwas Inline-<svg>
<svg display="none">
<defs>
<filter id="turb">
<feTurbulence baseFrequency="0.3" numOctaves="2" />
<feDisplacementMap in="SourceGraphic" scale="20" />
</filter>
</defs>
</svg>
Dann können Sie ihn auf jedes HTML-Element anwenden, wie folgt
.filter {
filter: url("#turb");
}
Hier ist ein Vorher/Nachher

Das ist eine ziemlich extreme Menge an Turbulenzen. Versuchen Sie, sie auf baseFrequency="0.003" zu reduzieren und sehen Sie eine viel subtilere Version. Hmmm – sieht fast aus wie ein ganz leichtes Zucken, nicht wahr?
Der Trick besteht darin, nur ein kleines bisschen zu verwenden, mehrere verschiedene zu machen und dann dazwischen zu animieren.
Hier sind fünf verschiedene Turbulenfilter, alle leicht unterschiedlich voneinander, mit verschiedenen IDs
<svg>
<filter id="turbulence-1">
<feTurbulence type="fractalNoise" baseFrequency="0.001" numOctaves="2" data-filterId="3" />
<feDisplacementMap xChannelSelector="R" yChannelSelector="G" in="SourceGraphic" scale="25" />
</filter>
<filter id="turbulence-2">
<feTurbulence type="fractalNoise" baseFrequency="0.0015" numOctaves="2" data-filterId="3" />
<feDisplacementMap xChannelSelector="R" yChannelSelector="G" in="SourceGraphic" scale="25" />
</filter>
<filter id="turbulence-3">
<feTurbulence type="fractalNoise" baseFrequency="0.002" numOctaves="2" data-filterId="3" />
<feDisplacementMap xChannelSelector="R" yChannelSelector="G" in="SourceGraphic" scale="25" />
</filter>
<filter id="turbulence-4">
<feTurbulence type="fractalNoise" baseFrequency="0.0025" numOctaves="2" data-filterId="3" />
<feDisplacementMap xChannelSelector="R" yChannelSelector="G" in="SourceGraphic" scale="25" />
</filter>
<filter id="turbulence-5">
<feTurbulence type="fractalNoise" baseFrequency="0.003" numOctaves="2" data-filterId="3" />
<feDisplacementMap xChannelSelector="R" yChannelSelector="G" in="SourceGraphic" scale="25" />
</filter>
</svg>
Und eine CSS-Keyframe-Animation, um zwischen ihnen zu animieren
@keyframes squigglevision {
0% {
filter: url("#turbulence-1");
}
25% {
filter: url("#turbulence-2");
}
50% {
filter: url("#turbulence-3");
}
75% {
filter: url("#turbulence-4");
}
100% {
filter: url("#turbulence-5");
}
}
Die Sie auf alles anwenden können, was Sie zum Zucken bringen wollen
.squiggle {
animation: squigglevision 0.4s infinite alternate;
}

Das ist ziemlich genau das, was mit Alex the CSS Husky passiert, nur dass die Filter noch entspannter sind.
Hier ist Lucas' ursprüngliche Demo











































































