Einführung
In diesem Zusammenhang haben wir zwei Divs ohne welche komplexes Styling (einfach Hintergrundfarbe). Wir manipulieren das zweite Div so, dass es das erste überlappt, indem wir einen negativen Rand oben anwenden. Anstatt jedoch zu sehen, dass ein Element das andere vollständig überlappt, stellen wir fest, dass das zweite Div zwischen dem Inhalt und dem Hintergrund des ersten Div gleitet und ein unerwartetes Verhalten zeigt.
Die Malreihenfolge
Um dieses Verhalten zu verstehen, müssen wir uns mit den Feinheiten der Malreihenfolge in Browsern befassen. Die Malreihenfolge für Elemente innerhalb eines Stapelkontexts folgt einer vordefinierten Reihenfolge:
Erklärung der Überlappung
In unserem Beispiel, wenn das zweite Div das erste überlappt , erfolgt die folgende Malsequenz:
Da der Inhalt von Das erste Div wird vor dem Hintergrund des zweiten Div gemalt. Der Text scheint über dem grünen Hintergrund positioniert zu sein, wodurch die Illusion entsteht, dass das zweite Div dazwischen gleitet
Ändern des Verhaltens
Während die Standard-Malreihenfolge zu solchen Situationen führen kann, ist es möglich, das Verhalten zu ändern, indem Sie die Deckkraft des überlappenden Elements auf a setzen Wert kleiner als 1. Dadurch wird der Schritt zum Malen der Deckkraft vor dem Schritt zum Malen des Inhalts ausgelöst, um sicherzustellen, dass der Hintergrund des überlappenden Elements darunter erscheint Inhalt.
In unserem Beispiel führt das Hinzufügen von opacity: 0,9999 zum zweiten Div zum erwarteten Verhalten, bei dem der grüne Hintergrund den Inhalt des ersten Div vollständig abdeckt.
Referenz
Eine ausführliche Erläuterung der CSS-Malreihenfolge finden Sie im offiziellen W3C Dokumentation:
https://www.w3.org/TR/css-backgrounds-3/#box-painting
Das obige ist der detaillierte Inhalt vonWarum scheint eine Div mit negativem Rand *zwischen* den Inhalt und den Hintergrund einer anderen Div zu gleiten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!