Heim > Web-Frontend > CSS-Tutorial > Warum aktualisiert WebKit Stile nicht automatisch und wie kann ich ein Repaint erzwingen?

Warum aktualisiert WebKit Stile nicht automatisch und wie kann ich ein Repaint erzwingen?

Linda Hamilton
Freigeben: 2024-12-20 17:34:09
Original
722 Leute haben es durchsucht

Why Doesn't WebKit Update Styles Automatically, and How Can I Force a Repaint?

WebKit dazu zwingen, Stile zu aktualisieren

Sie stehen vor einem Problem, bei dem eine über JavaScript angewendete Stiländerung nicht auf alle betroffenen Elemente in übertragen wird WebKit-basierte Browser wie Chrome und Safari. Dies kann manchmal beobachtet werden, wenn mehrere Elemente Stile von einem gemeinsamen Vorfahren mit untergeordneten Elementen erben, die den Fokus haben oder interaktive Elemente wie Links enthalten.

WebKit reagiert nicht

WebKit reagiert nicht automatisch neu zeichnen, wenn es Aktualisierungen geerbter Stile erhält. Dies steht im Gegensatz zu anderen Browsern wie Firefox, Opera und IE, die diese Änderungen nahtloser verarbeiten.

Neulackierung durch Nudging erzwingen

Da WebKit nicht aktualisiert wird Wenn Sie Stile automatisch anpassen, können Sie eine Neulackierung erzwingen, indem Sie eine geringfügige Änderung an einem beliebigen Element auf der Seite vornehmen. Sie haben in den Chrome-Entwicklertools festgestellt, dass selbst das Deaktivieren und erneute Aktivieren eines Attributs eines beliebigen Elements die korrekte Stilaktualisierung auslöste.

Vorgeschlagene Lösung

Um programmgesteuert ein Repaint zu erzwingen können Sie die folgende Technik verwenden:

sel.style.display = 'none';
sel.offsetHeight; // no need to store this anywhere, just referencing it is sufficient
sel.style.display = '';
Nach dem Login kopieren

Bei diesem Ansatz wird das Element vorübergehend ausgeblendet und dann wieder eingeblendet. Die offsetHeight-Zeile stellt sicher, dass der Browser die Änderungen tatsächlich anwendet. Sie müssen die zurückgegebene Höhe nicht speichern.

Potenzielle Einschränkung

Die bereitgestellte Lösung funktioniert nachweislich für Elemente mit „Block“-Anzeige. Es ist möglich, dass es bei Elementen mit anderen Anzeigemodi ein anderes Verhalten zeigt, dies erfordert jedoch weitere Untersuchungen.

Das obige ist der detaillierte Inhalt vonWarum aktualisiert WebKit Stile nicht automatisch und wie kann ich ein Repaint erzwingen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage