Lösen Sie das Hierarchieproblem des Z-Index des untergeordneten Elements und der Geschwisterknoten des übergeordneten Elements in CSS

Lösen Sie das Hierarchieproblem des Z-Index des untergeordneten Elements und der Geschwisterknoten des übergeordneten Elements in CSS

1. Die Entstehung des Problems

Habe eine flache Liste geschrieben, von denen einige Popup-Fenster haben, die beim Hovern erscheinen. Das gewünschte Ziel besteht darin, den Inhalt des Listenelements abzudecken, wenn das Popup-Fenster angezeigt wird, um sicherzustellen, dass der Inhalt des Popup-Fensters zuerst angezeigt wird.

Der Aufbau des Elements ist etwa wie folgt:

<div Klasse="Liste">
    <div Klasse="Einheit">
        <div class="content">Listenelement 1</div>
        <div class="hover">Popup-Fenster 1</div>
    </div>
     <div Klasse="Einheit">
        <div class="content">Listenelement 2</div>
    </div>
     <div Klasse="Einheit">
        <div class="content">Listenelement 3</div>
        <div class="hover">Popup-Fenster 3</div>
    </div>
</div>

Einige der Stile sind wie folgt:

.Einheit{
    Position: relativ;
    Z-Index: 1;
}
.schweben{
    Position: absolut;
    Z-Index: 10;
}

Die tatsächliche Wirkung ist wie folgt:

Obwohl das Popup-Fenster von Listenelement 1 seinen eigenen Inhalt verdecken kann, kann es den Inhalt von Listenelement 2 nicht verdecken.

2. Grundsatz

Es scheint, dass der Z-Indexwert des Popup-Fensters größer ist als der Z-Indexwert des übergeordneten Elements des Listenelements (einschließlich Geschwisterelemente), sodass er den Inhalt aller Listenelemente abdecken sollte.

Tatsächlich habe ich hier aber einen ganz grundlegenden Punkt übersehen. Da es sich bei dem Popup-Fenster um ein untergeordnetes Element des Listenelements handelt, ist die Größe seines Z-Index-Werts nur im Vergleich zu den Geschwisterelementen des Popup-Fensters von Bedeutung. Was die Hierarchie mit dem Inhalt des übergeordneten Elements (Listenelement) betrifft, sollten Sie die hierarchische Beziehung des übergeordneten Elements betrachten.

Wir können uns vorstellen, dass jedes Listenelement eine Parallelwelt ist. Der in einer Parallelwelt festgelegte Z-Index ist nur dann sinnvoll, wenn er mit anderen Inhalten in dieser Welt verglichen wird. Wenn Sie ihn mit anderen Parallelwelten vergleichen möchten, tut es mir leid, dieses Ding hat eine Dimensionsunterdrückung. Wenn das Level einer anderen Parallelwelt höher ist als das Ihrer Welt, ist es unabhängig davon, wie hoch Ihr eigener Z-Index eingestellt ist, nur eine interne Dominanz und wird nie höher sein als das Level der anderen Welt.

Obwohl im obigen Beispiel der Z-Index aller Listenelemente entsprechend der Reihenfolge ihres Auftretens auf 1 gesetzt ist, wird der gesamte Inhalt von Listenelement 1 von Listenelement 2 abgedeckt, da das zweite Listenelement höher ist als das erste.

3. Lösung

Die einzige Lösung, die derzeit in Betracht kommt, besteht darin, das Popup-Fenster und das Listenelement auf die gleiche Ebene zu setzen (sie zu Geschwisterelementen zu machen), den Z-Index-Wert des Popup-Fensters größer als den Z-Index des Listenelements zu machen und die Positionierung jedes Popup-Fensters manuell mit js festzulegen.

Dies ist das Ende dieses Artikels über die Lösung des Hierarchieproblems des Z-Index von untergeordneten Elementen und der Geschwisterknoten von übergeordneten Elementen in CSS. Weitere relevante Inhalte zur CSS-Z-Indexhierarchie finden Sie in den vorherigen Artikeln von 123WORDPRESS.COM oder in den verwandten Artikeln weiter unten. Ich hoffe, dass jeder 123WORDPRESS.COM in Zukunft unterstützen wird!

<<:  Neue interaktive Erfahrungen mit Online-Werbung bei der Website-Erstellung (grafisches Tutorial)

>>:  Beispiel einer DOM-Operationstabelle (DOM erstellt Tabelle)

Artikel empfehlen

Eine kurze Analyse, wie MySQL die Transaktionsisolierung implementiert

Inhaltsverzeichnis 1. Einleitung 2. RC- und RR-Is...

Beispiel für die Verwendung von rem zum Ersetzen von px in einem Vue-Projekt

Inhaltsverzeichnis Werkzeug Installieren Sie das ...

MySQL-Optimierungslösung: Aktivieren Sie das Protokoll für langsame Abfragen

Inhaltsverzeichnis Vorwort Einrichten der Protoko...

Document Object Model (DOM) in JavaScript

Inhaltsverzeichnis 1. Was ist DOM 2. Elemente aus...

So implementieren Sie den neuen Operator von JavaScript selbst

Inhaltsverzeichnis Konstruktor neuer Operator Imp...

Online- und Offlineinstallation von Docker und allgemeine Befehlsvorgänge

1. Testumgebung Name Version centos 7.6 Docker 18...

So führen Sie Linux-Shell-Befehle in Docker aus

Um einen Shell-Befehl in Docker auszuführen, müss...

Eine kurze Einführung in MySQL-Funktionen

Inhaltsverzeichnis 1. Mathematische Funktionen 2....

Erweiterte MySQL-Datenbankabfrage und Mehrtabellenabfrage

MySQL-Abfrage für mehrere Tabellen Hinzufügen ein...

Hinweise zur IE8-Kompatibilität, die mir aufgefallen sind

1. getElementById von IE8 unterstützt nur IDs, nic...

React antd realisiert dynamische Vergrößerung und Verkleinerung der Form

Beim Schreiben dynamischer Formulare bin ich zuvo...

Tutorial zur Installation von Pycharm und Ipython unter Ubuntu 16.04/18.04

Unter Ubuntu 18.04 1. sudo apt install python ins...