Schauen wir uns zunächst die Definition des Positionsattributs in der CSS3-API an:
Wie wäre es damit? Sind Sie immer noch verwirrt? Das macht nichts. Lassen Sie es mich Ihnen anhand einiger grundlegender Konzepte Schritt für Schritt erklären: Was ist Dokumentenfluss? Teilen Sie das Formular von oben nach unten in Zeilen auf und ordnen Sie die Elemente in jeder Zeile von links nach rechts an. Dies stellt den Dokumentfluss dar. Es gibt nur drei Situationen, in denen ein Element außerhalb des Dokumentflusses liegt: schwebend , absolute Positionierung und relative Positionierung . Statische Positionierung (statisch): statisch, keine spezielle Positionierung, dies ist der Standardpositionierungsmodus von HTML-Elementen, d. h. wenn wir das Positionsattribut des Elements nicht festlegen, ist der Standardpositionswert statisch und folgt dem normalen Dokumentflussobjekt. Das Objekt nimmt den Dokumentbereich ein. Bei diesem Positionierungsmodus sind die Attribute oben, rechts, unten, links, Z-Index und andere ungültig. Relative Positionierung: Die relative Positionierung, auch als relative Positionierung bezeichnet, kann wörtlich als das Hauptmerkmal dieses Attributs interpretiert werden: relativ. Aber relativ wozu? Dies ist der entscheidende Punkt und für mich auch der verwirrendste Teil. Machen wir jetzt einen Test, ich denke, jeder wird es verstehen: (1) Zunächst nicht positioniert Code kopieren Der Code lautet wie folgt:/******anfänglich*********/ <style type="text/css"> #first { Breite: 200px; Höhe: 100px; Rahmen: 1px durchgehend rot; } #Sekunde{ Breite: 200px; Höhe: 100px; Rahmen: 1px durchgehend blau;} </Stil> <Text> <div id="first"> zuerst</div> <div id="zweite">Sekunde</div> </body> Originalbild: (2) Wir verändern das Positionsattribut des ersten Elements: Code kopieren Der Code lautet wie folgt:<style type="text/css"> #first{ Breite: 200px; Höhe: 100px; Rahmen: 1px durchgehend rot; Position: relativ; oben: 20px; links: 20px;} /*Position hinzufügen*/ #zweite{Breite: 200px; Höhe: 100px; Rahmen: 1px durchgehend blau;} </Stil> Nach dem Versatz um 20px:
Jetzt verstehen Sie, dass die relative Positionierung relativ zu ihrer ursprünglichen Position im Dokumentfluss ist, und wir wissen auch, dass die relative Positionierung auch dem normalen Dokumentfluss folgt, sie weicht nicht vom Dokumentfluss ab, aber ihre Attribute oben/links/rechts/unten sind wirksam. Man kann sagen, dass es ein Zwischenübergangsattribut von statisch zu absolut ist. Das Wichtigste ist, dass es immer noch Dokumentraum einnimmt, und der eingenommene Dokumentraum ändert sich nicht mit dem Versatz der Attribute oben/rechts/links/unten, d. h. die Elemente dahinter werden entsprechend der gepunkteten Linienposition positioniert (bevor die Attribute oben/links/rechts/unten wirksam werden). Dies muss verstanden werden. OK, wir wissen also, dass die Eigenschaften Oben/Rechts/Links/Unten den Dokumentbereich, der von einem relativ positionierten Element belegt wird, nicht ausgleichen. Aber werden die Ränder/Füllungen diesen Dokumentbereich ausgleichen? Die Antwort ist ja. Lassen Sie uns gemeinsam ein Experiment durchführen: (3) Randattribut hinzufügen: Code kopieren Der Code lautet wie folgt:<style type="text/css"> #first{width: 200px;height: 100px;border: 1px solid red;position: relative;top: 20px;left: 20px;margin: 20px;} /* Rand hinzufügen*/ #zweite{Breite: 200px;Höhe: 100px;Rand: 1px durchgehend blau;} </Stil> Nach dem Einstellen des Rands: 20px: Ist das im Vergleich nicht ganz klar? Wir setzen zuerst den Rand des ersten Elements auf 20px, dann muss das zweite Element um 40px nach unten versetzt werden, damit der Rand den Dokumentraum einnimmt! Ebenso können Sie die Wirkung der Polsterung selbst messen! Absolute Positionierung: Absolute Positionierung, auch als absolute Positionierung bekannt, obwohl der Name „absolut“ lautet, ähnelt seine Funktion eher dem Wort „relativ“. Warum sagen Sie das? Es stellt sich heraus, dass ein mit Absolute positioniertes Element, nachdem es den Dokumentfluss verlassen hat, nur basierend auf einem Vorgängerelement (über dem übergeordneten Element) positioniert werden kann und dieses Vorgängerelement auf eine nicht statische Weise positioniert werden muss. Wenn beispielsweise ein Element mit Absolute positioniert wird, beginnt es bei der übergeordneten Klasse und sucht nach einem Vorgängerelement, das auf eine nicht statische Weise positioniert ist (beachten Sie, dass es ein direkter Vorgänger sein muss~), bis zum <html>-Tag. Es sollte hier auch beachtet werden, dass die relativen und statischen Methoden das <body>-Tag als Ursprung für die Positionierung in der äußersten Ebene verwenden, während die Absolute-Methode <html> als Ursprung für die Positionierung verwendet, wenn kein übergeordnetes Element vorhanden ist und die Position nicht statisch ist. Die Elemente <html> und <body> unterscheiden sich um etwa 9px. Schauen wir uns die Wirkung an: (4) Fügen Sie das Attribut „absoulte“ hinzu: Code kopieren Der Code lautet wie folgt:<html> <style type="text/css"> html{border:1px gestrichelt grün;} body{border:1px gestrichelt lila;} #first{ Breite: 200px; Höhe: 100px; Rahmen: 1px durchgehend rot; Position: relativ;} #Sekunde{ Breite: 200px;Höhe: 100px;Rand: 1px durchgehend blau;Position: absolut;oben: 0;links: 0;} </Stil> <Text> <div id="erster">relativ</div> <div id="second">absolut</div> </body> </html> Effektbild: Haha, nachdem sie den obigen Code gelesen haben, werden aufmerksame Freunde sicherlich fragen, warum wir der absoluten Positionierung die Attribute top:0; left:0; hinzufügen müssen. Ist das nicht überflüssig? Tatsächlich ist es absolut notwendig, diese beiden Attribute hinzuzufügen, denn wenn wir absolute oder feste Positionierung verwenden, müssen wir mindestens eines der Attribute left, right, top und bottom angeben. Andernfalls verwenden die Attribute left/right/top/bottom ihren Standardwert „auto“, wodurch das Objekt den normalen HTML-Layoutregeln folgt und unmittelbar nach dem vorherigen Objekt gerendert wird . Kurz gesagt, sie werden alle relativ und beanspruchen Dokumentplatz. Das ist sehr wichtig. Viele Leute stellen fest, dass sie nach Verwendung der absoluten Positionierung nicht aus dem Dokumentfluss herauskommen. Das ist der Grund. Achten Sie hier besonders darauf~~~ Wenn die Attribute links/rechts/oben/unten fehlen, funktioniert es nicht. Was also, wenn wir mehr davon festlegen? Wenn wir beispielsweise die oberen und unteren Attributwerte gleichzeitig festlegen, wohin soll das Element versetzt werden? Beachten Sie die folgenden Regeln:
Da das Absolute entsprechend der Position des nicht statischen Elements in der Vorgängerklasse positioniert wird, wird der Rand/die Polsterung in der Vorgängerklasse die Position beeinflussen? Schauen wir uns zunächst ein Beispiel an: (5) Fügen Sie der absoluten Positionierung Rand-/Füllungsattribute hinzu: Code kopieren Der Code lautet wie folgt:#erste{Breite: 200px;Höhe: 100px;Rahmen: 1px durchgehend rot;Position: relativ;Rand:40px;Padding:40px;} #zweite{Breite: 200px;Höhe: 100px;Rand: 1px durchgehend blau;Position: absolut;oben: 20px;links: 20px;} <div id="first">zuerst <div id="zweite">Sekunde</div> </div> Effektbild: Ich verstehe, dass der Rand der Vorgängerklasse dazu führt, dass sich der Absolutwert der Unterklasse verschiebt, dass die Polsterung jedoch nicht dazu führt, dass sich der Absolutwert der Unterklasse verschiebt. Zusammenfassend lässt sich sagen, dass Absolute entsprechend der Grenze der Vorgängerklasse positioniert ist. Hinweis: Wenn Sie ein Objekt absolut außerhalb des sichtbaren Bereichs positionieren, werden Bildlaufleisten angezeigt. Wenn Sie ein relativ positioniertes Objekt außerhalb des sichtbaren Bereichs platzieren, wird die Bildlaufleiste nicht angezeigt. Feste Positionierung: Feste Positionierung, auch als feste Positionierung bezeichnet, ist dasselbe wie absolute Positionierung, da sie vom Dokumentfluss getrennt ist und entsprechend den Attributen oben, rechts, links und unten positioniert werden kann. Der Unterschied besteht darin, dass die feste Positionierung basierend auf dem Fenster als Ursprung versetzt ist, was bedeutet, dass sie nicht entsprechend dem Scrollen der Bildlaufleiste versetzt wird. z-index-Eigenschaft: Z-Index, auch als Stapelreihenfolge von Objekten bekannt, verwendet eine Ganzzahl, um die Stapelebene zu definieren. Je größer der Ganzzahlwert, desto höher wird gestapelt. Dies bezieht sich natürlich auf die Stapelung zwischen Elementen derselben Ebene. Wenn dieses Attribut zweier Objekte denselben Wert hat, werden sie entsprechend der Reihenfolge gestapelt, in der sie im HTML-Dokument fließen, und das später geschriebene Objekt überdeckt das davor liegende. Es ist zu beachten, dass die Eltern-Kind-Beziehung nicht mithilfe des Z-Index festgelegt werden kann. Das Kind muss oben und das Elternteil unten sein. Hinweis: Die Z-Index-Eigenschaft von Elementen mit statischer Positionierung oder keiner Positionspositionierung ist ungültig. |
<<: Implementierung der Nginx-Routing-Weiterleitung und der Reverse-Proxy-Standortkonfiguration
>>: Detaillierte Erläuterung von vier Lösungen für schwebende Probleme im CSS-Layout
Inhaltsverzeichnis 1. Zeigen Sie die Speicher-Eng...
Vorwort Die Verzögerung der MySQL Master-Slave-Re...
Dies ist ein wichtiges (und wunderbares) Thema fü...
1. Bereiten Sie die Java-Umgebung vor, jdk1.8 Übe...
1. Laden Sie die Linux-Version von der offizielle...
Als ich eine neue Version der Konfigurationsschni...
Vorwort Vor vielen Jahren war ich ein Neuling auf...
Inhaltsverzeichnis 1. Installieren Sie das psutil...
MySQL ist ein relationales Datenbankverwaltungssy...
In diesem Artikel erfahren Sie, wie Sie mit Vue e...
1. Code der Multiheader-Tabelle Code kopieren Der ...
Heute werde ich über einen CSS-Spezialeffekt spre...
Inhaltsverzeichnis 1. Node Exporter installieren ...
1. Transaktionen haben ACID-Eigenschaften Atomari...
Manchmal möchten wir eine solche Funktion impleme...