So blockieren Sie den Alarm-Z-Index. Z-Index-Positionierungseigenschaft in CSS. d Darstellung der Z-Achse

Die meisten CSS-Eigenschaften sind leicht zu verstehen. Oftmals führt die Anwendung einer davon auf ein Markup-Element zu sofortigen Ergebnissen – Sie müssen nur die Seite aktualisieren, und schon können Sie die Wirkung der Anwendung sehen. Allerdings gibt es einige Eigenschaften, die komplexer sind und nur unter bestimmten Umständen funktionieren.

Die Z-Index-Eigenschaft gehört zur zweiten Gruppe, die zweifellos mehr Verwirrung stiftet als alle anderen. Ironischerweise ist es jedoch, wenn man den Z-Index vollständig versteht, sehr einfach zu verwenden und oft eine effektive Möglichkeit, viele Layoutprobleme zu lösen.

In diesem Artikel werden wir uns ansehen, was Z-Index ist, welche Probleme es beim Verständnis gibt und auch einige Beispiele für seine Verwendung diskutieren. Wir werden auch den Unterschied in der Art und Weise berücksichtigen, wie Browser damit umgehen, insbesondere in früheren Versionen von Internet Explorer und Firefox.

Was ist also diese Eigenschaft?

Die Z-Index-Eigenschaft bestimmt die Platzierungsebene im Stapel und die Tiefe des HTML-Elements. „Tiefenebene“ bezeichnet die Position des Elements entlang der Z-Achse (senkrecht zur X- und Y-Achse des Bildschirms). Je höher der Z-Index-Wert ist, desto höher wird das Element sein.

Natürliche Anordnung der Elemente

Auf einer Seite wird die normale Platzierung von Elementen (und damit meine ich entlang der Z-Achse) von mehreren Faktoren bestimmt. Nachfolgend finden Sie eine Liste dieser Faktoren, beginnend mit den niedrigsten Elementen. Bei dieser Liste wird davon ausgegangen, dass keinem Element explizit eine Z-Index-Eigenschaft zugewiesen ist.

  1. Der Hintergrund und die Ränder des Elements, die den Stapelkontext definieren.
  2. Elemente mit negativem Stapelkontext, in der Anzeigereihenfolge.
  3. Nicht positionierte (Position: statisch) sowie ohne festgelegte Float-Eigenschaft (Float: keine) Blockelemente (Anzeige: Block), in der Anzeigereihenfolge.
  4. Nicht positionierte Blockelemente mit Float-Eigenschaftensatz, in der Anzeigereihenfolge.
  5. Inline-Elemente in der Reihenfolge der Anzeige.
  6. Elemente mit festgelegter Positionseigenschaft in der Anzeigereihenfolge.

Durch die korrekte Anwendung der Z-Index-Eigenschaft kann sich die natürliche Position im Stapel ändern.

Natürlich ist die Reihenfolge der Elemente in einem Stapel erst ersichtlich, wenn Sie die Elemente übereinander anzeigen müssen. Um die normale Reihenfolge der Elemente anzuzeigen, werden im folgenden Beispiel daher negative Ränder verwendet.

Diese Elemente haben unterschiedliche Hintergrund- und Rahmenfarben, und die letzten beiden sind aufgrund der eingestellten negativen Randeigenschaft versetzt. Auf diese Weise können Sie die natürliche Platzierung der Elemente erkennen, wobei jedes nächste „über“ dem vorherigen liegt. Für diese Elemente ist keine Z-Index-Eigenschaft festgelegt, und ihre Stapelreihenfolge ist natürlich.

Wo könnten die Probleme liegen?

Schauen wir uns das beliebteste Problem unter unerfahrenen Entwicklern an. Die Sache ist, dass die Z-Index-Eigenschaft nur für Elemente funktioniert, deren Positionseigenschaft auf absolute, feste oder relative gesetzt ist.

Um dies zu demonstrieren, zeigen wir dieselben drei Elemente an, wobei jedoch die Eigenschaft „z-index“ festgelegt ist, um zu versuchen, die Reihenfolge entlang der Z-Achse zu ändern.

Stellen wir den Z-Index des grauen Elements auf 9999, des blauen Elements auf 500 und des braunen Elements auf 1 ein. Es ist logisch, dass sich die Reihenfolge ändern wird. In diesem Fall jedoch nicht, da die Positionseigenschaft standardmäßig statisch ist.

Lassen Sie uns die Positionseigenschaft auf „relativ“ setzen und sehen, was passiert:

Aber jetzt haben wir das erwartete Ergebnis. Die Reihenfolge der Elemente hat sich geändert, das graue Element liegt oben und das braune ganz unten.

Syntax

Die Z-Index-Eigenschaft betrifft sowohl Blockelemente als auch Inline-Elemente. Der Wert kann eine positive oder negative Zahl sein, der Standardwert ist auto . Der Standardwert bedeutet, dass sich das Element auf derselben Ebene wie sein übergeordnetes Element befindet.

Unten finden Sie das CSS für das dritte Beispiel, in dem die Z-Index-Eigenschaft korrekt angewendet wird:

#grey_box ( Breite: 200px; Höhe: 200px; Rand: einfarbig 1px #ccc; Hintergrund: #ddd; Position: relativ; Z-Index: 9999; ) #blue_box ( Breite: 200px; Höhe: 200px; Rand: einfarbig 1px # 4a7497; Hintergrund: #8daac3; Position: relativ; Z-Index: 500; )

Noch einmal: Insbesondere für CSS-Neulinge funktioniert die Z-Index-Eigenschaft nicht, es sei denn, Sie legen die Positionseigenschaft fest.

Verwendung in Javascript

Sie können die Z-Index-Eigenschaft mithilfe von JavaScript dynamisch beeinflussen. Die Syntax ähnelt der der meisten CSS-Eigenschaften und verwendet die Kamel-Notation, um den Bindestrich in CSS-Eigenschaften zu ersetzen.

Var myElement = document.getElementById("gold_box"); myElement.style.position = "relative"; myElement.style.zIndex = "9999";

Falsche Implementierung in IE und FireFox

In einigen Fällen kommt es in IE6, IE7 und FireFox 2 zu einer falschen Implementierung der Z-Index-Eigenschaft.

Element im IE6 auswählen

In Internet Explorer 6 ist das ausgewählte Element ein Windows-Steuerelement. Aus diesem Grund wird es immer über allen Elementen angezeigt, wobei die normale Platzierungsreihenfolge sowie die Eigenschaften Position und Z-Index ignoriert werden. Das Problem ist im Bild unten dargestellt:

Das ausgewählte Element ist das erste Element im Dokument, seine Z-Index-Eigenschaft ist auf 1 und seine Position auf relativ festgelegt. Das Div wird nach der Auswahl angezeigt und sein Z-Index ist „9999“. Basierend auf all dem sollte sich das div über dem select befinden, wie es in anderen Browsern der Fall ist:

Wählen Sie Jahr – 2009 2010 2011

Wenn Sie diesen Artikel nicht in IE6 lesen, werden Sie feststellen, dass sich das div über dem select befindet.

Dieser IE6-Fehler stellt ein großes Problem für Dropdown-Menüs dar, wenn diese das ausgewählte Element überlappen müssen. Eine Lösung könnte darin bestehen, JavaScript zu verwenden, um die Selektoren vorübergehend auszublenden und sie dann wieder anzuzeigen, nachdem das Menü ausgeblendet ist. Eine andere Lösung könnte die Verwendung eines Iframes sein.

Positionierte Eltern in IE6/IE7

Internet Explorer-Versionen 6 und 7 setzen den Stapelkontext in Bezug auf das am nächsten positionierte übergeordnete Element nicht korrekt zurück. Um diesen Fehler zu veranschaulichen, werden wir erneut zwei Divs anzeigen. Aber dieses Mal werden wir das erste in ein positioniertes Element einschließen.

Das graue Element hat einen Z-Index von 9999, das blaue Element hat einen Z-Index von 1, beide Elemente sind positioniert. Daher erscheint bei korrekter Implementierung das graue Element über dem blauen.

Wenn Sie diese Seite in IE6 oder IE7 öffnen, werden Sie feststellen, dass das blaue Element das graue überlappt. Dies geschieht, weil das graue Element in ein anderes Div eingeschlossen ist, dessen Position auf relative festgelegt ist.

Beide Browser „setzen“ den Stapelkontext für relativ positionierte Elemente zurück, obwohl dies nicht der Fall sein sollte. Das graue Element hat einen höheren Z-Index als das blaue Element und sollte daher höher erscheinen. Bei anderen Browsern gibt es dieses Problem nicht.

Negative Werte in FireFox 2

In FireFox 2 befinden sich Elemente mit einem negativen Z-Index unterhalb des Stapelkontexts und nicht über dem Hintergrund und den Rändern des Elements, das den Stapelkontext bildet. Ein Beispiel sehen Sie im Bild:


Unten finden Sie die HTML-Version

Wie Sie sehen können, befindet sich der Hintergrund des grauen Elements (das den Stapelkontext bildet) unter dem blauen und der Text (der das Inline-Element im grauen Element ist) darüber, entsprechend den oben beschriebenen natürlichen Layoutregeln.

Anwendungsbeispiele

Der Originalartikel enthält viele Beispiele für die Nutzung der Immobilie. Ehrlich gesagt bin ich zu faul, das zu übersetzen, im Grunde ist es ein Screenshot, ein kleiner Kommentar und ein Link. Wenn Sie es wirklich brauchen, dann schreiben Sie, ich nehme mir Zeit dafür.

Alle auf einer Webseite positionierten Elemente können in einer bestimmten Reihenfolge übereinander gestapelt werden und so eine dritte Dimension senkrecht zum Bildschirm simulieren. Jedes Element kann sich entweder unter oder über anderen Objekten auf der Webseite befinden. Ihre Platzierung entlang der Z-Achse wird durch den Z-Index gesteuert. Diese Eigenschaft funktioniert nur für Elemente, deren Positionswert absolut, fest oder relativ ist.

Brief Information

Bezeichnungen

BeschreibungBeispiel
<тип> Gibt den Typ des Werts an.<размер>
A && BDie Werte müssen in der angegebenen Reihenfolge ausgegeben werden.<размер> && <цвет>
A | BZeigt an, dass Sie nur einen der vorgeschlagenen Werte (A oder B) auswählen müssen.normal | Small-Caps
Ein || BJeder Wert kann unabhängig oder zusammen mit anderen in beliebiger Reihenfolge verwendet werden.Breite || zählen
Gruppiert Werte.[ Zuschneiden || kreuzen ]
* Null oder mehrmals wiederholen.[,<время>]*
+ Wiederholen Sie dies einmal oder mehrmals.<число>+
? Der angegebene Typ, das Wort oder die Gruppe ist optional.Einsatz?
(A, B)Wiederholen Sie mindestens A, aber nicht mehr als B-Mal.<радиус>{1,4}
# Wiederholen Sie dies einmal oder mehrmals, getrennt durch Kommas.<время>#
×

Werte

Als Werte werden ganze Zahlen (positiv, negativ und Null) verwendet. Je höher der Wert, desto höher wird das Element im Vergleich zu den Elementen mit einem niedrigeren Wert bewertet. Wenn der Z-Index-Wert gleich ist, ist das Element im Vordergrund das unten im HTML-Code beschriebene. Es ist akzeptabel, einen negativen Wert zu verwenden.

Zusätzlich zu numerischen Werten wird auto verwendet – die Reihenfolge der Elemente wird in diesem Fall automatisch basierend auf ihrer Position im HTML-Code und ihrer Zugehörigkeit zum übergeordneten Element erstellt, da untergeordnete Elemente dieselbe Nummer wie ihr übergeordnetes Element haben.

Beispiel

Kartenbestellung

Wenn Sie in diesem Beispiel mit der Maus über die Karte fahren, gelangt diese an den vorderen Rand und überlappt teilweise den Rest der Bilder (Abb. 1).

Reis. 1. Ändern der Kartenreihenfolge

Objektmodell

Ein Objekt.style.zIndex

Notiz

Liste erstellt mit