Heim > Web-Frontend > CSS-Tutorial > Warum verschieben sich Inline-Elemente beim Schweben, wenn Fettschrift angewendet wird, und wie können Pseudoelemente dieses Problem lösen?

Warum verschieben sich Inline-Elemente beim Schweben, wenn Fettschrift angewendet wird, und wie können Pseudoelemente dieses Problem lösen?

Mary-Kate Olsen
Freigeben: 2024-12-22 03:28:20
Original
1005 Leute haben es durchsucht

Why Do Inline Elements Shift on Hover When Bold Font is Applied, and How Can Pseudo-Elements Solve This?

Inline-Elemente verschieben sich beim Schweben aufgrund von fettem Stil

Viele Entwickler stoßen auf das Problem, dass sich Inline-Elemente verschieben, wenn beim Schweben fette Schriftart angewendet wird. Dieses Problem kann beispielsweise bei Listen auftreten, wenn Listenelemente dynamischen Textinhalt haben.

Im bereitgestellten Beispiel wird ein horizontales Menü mithilfe von HTML-Listen und CSS erstellt und der Hover-Stil wird angewendet, um die Links fett darzustellen. Allerdings verschieben sich die Menüelemente beim Schweben aufgrund der Änderung der Elementbreite, die durch die Fettschrift verursacht wird.

Lösung mit Pseudoelementen

Um dieses Problem zu beheben, eine clevere Lösung Die Lösung besteht darin, ein unsichtbares Pseudoelement zu verwenden, um die Breite des Elements voreinzustellen. Der Inhalt dieses Pseudoelements entspricht dem des übergeordneten Elements und der Hover-Stil wird darauf angewendet. Durch das visuelle Ausblenden dieses Pseudoelements legen wir effektiv die Breite des übergeordneten Elements vorab fest, bevor wir den fetten Hover-Stil anwenden.

Hier ist der geänderte CSS-Code:

li {
    display: inline-block;
    font-size: 0;
}

li a {
    display:inline-block;
    text-align:center;
    font: normal 16px Arial;
    text-transform: uppercase;
}

a:hover {
    font-weight:bold;
}

/* SOLUTION */
/* The pseudo element has the same content and hover style, so it pre-sets the width of the element and visibility: hidden hides the pseudo element from actual view. */
a::before {
    display: block;
    content: attr(title);
    font-weight: bold;
    height: 0;
    overflow: hidden;
    visibility: hidden;
}
Nach dem Login kopieren

Durch Hinzufügen des Pseudoelements -Element und dem entsprechenden Hover-Stil wird die Breite des Elements voreingestellt, bevor der fette Stil angewendet wird. Dadurch verschieben sich die Menüelemente beim Hovern nicht mehr.

Verwendung und Überlegungen

Der Wert des Titelattributs für jeden Link sollte mit dem erwarteten Hover-Text übereinstimmen . Dadurch wird sichergestellt, dass das Pseudoelement die Breite für jeden Link korrekt voreinstellt.

Es ist wichtig zu beachten, dass diese Lösung speziell für Inline-Elemente mit dynamischem Textinhalt funktioniert. Für komplexere Elemente oder Szenarien können alternative Ansätze erforderlich sein.

Das obige ist der detaillierte Inhalt vonWarum verschieben sich Inline-Elemente beim Schweben, wenn Fettschrift angewendet wird, und wie können Pseudoelemente dieses Problem lösen?. 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