Wenn ich das z-index
richtig verstehe , wäre es in dieser Situation perfekt:
Ich möchte das untere Bild (das Tag / die Karte) unter dem Div darüber platzieren. Sie können also die scharfen Kanten nicht sehen. Wie mache ich das?
z-index:-1 // on the image tag/card
oder
z-index:100 // on the div above
funktioniert auch nicht. Eine Kombination aus so etwas auch nicht. Woher?
Stacking Context
.position: relative
static
Elemente sind statisch und können sich nicht bewegenx, y or z planes
. Sie können nicht einziehenx plane (left or right)
odery plane (top or bottom)
mögen, wenn wir mit ihnen arbeitenposition: absolute
. Und sie können sich auch nicht in der bewegenz plane i.e. with z-index
.z-index
in einem Rasterelement bekannt?Wenn Sie die Position auf einen anderen Wert als setzen
static
, Ihr Element jedochz-index
immer noch nicht zu funktionieren scheint, wurde möglicherweise ein übergeordnetes Elementz-index
festgelegt.Die Stapelkontexte haben eine Hierarchie, und jeder Stapelkontext wird in der Stapelreihenfolge des Stapelkontexts des übergeordneten Kontexts berücksichtigt.
Also mit folgendem HTML
Unabhängig davon, wie groß das
z-index
vonel3
gesetzt wird, wird es immer unter sein,el1
da das übergeordnete Element einen niedrigeren Stapelkontext hat. Sie können sich die Stapelreihenfolge als Ebenen vorstellen, in denen die Stapelreihenfolgeel3
tatsächlich 3,8 beträgt, was niedriger als 5 ist .Wenn Sie Stapelkontexte übergeordneter Elemente überprüfen möchten, können Sie Folgendes verwenden:
Es gibt einen großartigen Artikel über das Stapeln von Kontexten auf MDN
quelle
Ihre Elemente müssen ein
position
Attribut haben. (zBabsolute
,relative
,fixed
) oderz-index
nicht funktionieren.quelle
In vielen Fällen muss ein Element positioniert werden, damit
z-index
es funktioniert.In der Tat würde eine Anwendung
position: relative
auf die Elemente in der Frage das Problem wahrscheinlich lösen (aber es wird nicht genügend Code bereitgestellt, um dies sicher zu wissen).Eigentlich
position: fixed
,position: absolute
undposition: sticky
wird auch ermöglichenz-index
, aber diese Werte auch das Layout ändern. Mitposition: relative
dem Layout wird nicht gestört.Solange das Element nicht vorhanden ist
position: static
(Standardeinstellung), wird es im Wesentlichen als positioniert betrachtet undz-index
funktioniert.Viele Antworten auf "Warum funktioniert der Z-Index nicht?" Fragen behaupten, dass
z-index
nur auf positionierten Elementen funktioniert. Ab CSS3 ist dies nicht mehr der Fall.Elemente, die flexible Elemente oder Rasterelemente sind, können auch dann verwendet werden
z-index
, wenn dies der Fallposition
iststatic
.Aus den Spezifikationen:
Hier ist eine Demonstration der
z-index
Arbeit an nicht positionierten Flex-Elementen: https://jsfiddle.net/m0wddwxs/quelle
position: static
genau das Gleiche wieposition: relative
bei Flex- und Rasterelementen behandelt werden soll . Ich würde also vielleicht sagen, dass es in CSS3 nicht mehr so ist, dass ein Element positioniert werden muss, sondern dass CSS3 Flex- und Grid-Elemente unabhängig davon so behandelt, als wären sie positioniert. Wahrscheinlich nur zwei Arten, dasselbe zu betrachten.position:relative
. Nachkommen von Flex-Elementen mit absoluter Position betrachten das Flex-Element nicht als ihren enthaltenden Block, da das Flex-Element nicht positioniert ist. ( jsfiddle.net/0yo7utfL/2 )overflow-y: scroll
verhindert zuoverflow-x: visible
arbeiten ... können Sie bitte einen Blick darauf werfen?