Heim >Web-Frontend >CSS-Tutorial >Warum verursachen :hover und mehrere Selektoren für benachbarte Geschwister Fehler in Safari und Chrome?

Warum verursachen :hover und mehrere Selektoren für benachbarte Geschwister Fehler in Safari und Chrome?

Patricia Arquette
Patricia ArquetteOriginal
2024-10-24 03:42:301058Durchsuche

Why Do :hover and Multiple Adjacent-Sibling Selectors Cause Bugs in Safari and Chrome?

Safari- und Chrome-Bug mit :hover und mehreren Adjacent-Sibling-Selektoren

In der Webentwicklung unter Verwendung der :hover-Pseudoklasse und angrenzend -sibling-Selektoren werden im Allgemeinen von gängigen Browsern wie Safari, Chrome, Opera und Firefox unterstützt. Beispielsweise funktioniert der folgende Code wie vorgesehen:

a:hover + div {}

Wenn jedoch mehrere benachbarte Geschwisterselektoren hinzugefügt werden, zeigen Webkit-Browser (einschließlich Safari und Chrome) unerwartetes Verhalten:

div:hover + a + div {}

In solchen Fällen wendet Webkit den Stil nicht wie erwartet an.

Eine Problemumgehung zur Behebung dieses Fehlers besteht darin, eine Stildeklaration für das Body-Element zu verwenden, um einen subtilen Animationseffekt zu erzeugen:

body { -webkit-animation: bugfix infinite 1s; }

@-webkit-keyframes bugfix { 
  from { padding: 0; } 
  to { padding: 0; } 
}

Diese Animation hat keinen sichtbaren Effekt, löst jedoch eine Neuberechnung des Stils aus, sodass Webkit-Browser die Auswahlstile :hover und angrenzende Geschwister korrekt anwenden können.

Hier ist ein Beispiel zur Veranschaulichung der Problemumgehung: http://jsfiddle. net/jalbertbowdenii/ds2yY/1/.

Durch den Einsatz dieser Technik können Sie die Webkit-Fehler überwinden und ein konsistentes Verhalten über verschiedene Browser hinweg sicherstellen.

Das obige ist der detaillierte Inhalt vonWarum verursachen :hover und mehrere Selektoren für benachbarte Geschwister Fehler in Safari und Chrome?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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