Im Standarddokumentfluss beträgt die eigene Breite für ein Blockelement, für das keine Breite festgelegt ist oder dessen Höhe nicht festgelegt ist, 100 % der Breite des übergeordneten Elements. Legen Sie zu diesem Zeitpunkt fest Horizontaler Randwert für das Blockelement. Ändert die visuelle Breite des Elements. Die Höhe kann jedoch nicht geändert werden, da die Höhe des Blockelements fest oder gleich der Höhe seines Inhalts ist und nicht gedehnt wird.
Diese Funktion ist im Bootstrap-Layout nützlich.
<p class="wrap"> 父元素padding: 0 10px; <p class="yellow">此block元素没有设置margin值</p> <p class="red">此block元素设置margin-left:-10px;margin-right:-10px; 拉伸了元素宽度</p></p>
* {margin:0; padding:0;}.wrap { width: 400px; height: 400px; margin: 50px auto; padding: 0 10px; border: 1px solid #ccc; }.red { height: 100px; background-color: red; margin: 0 -10px; }.yellow { height: 100px; background-color: yellow; }
Wenn für das absolut positionierte Element keine Breite festgelegt ist, sondern oben Ist der Wert /unten, links/rechts eingestellt, wird das Element gestreckt. Wenn Sie beispielsweise left:0; right:0; festlegen, beträgt die Breite des Elements 100 % der Breite des ersten relativ positionierten übergeordneten Elements. Zu diesem Zeitpunkt können Sie auch die visuelle Breite des Elements ändern Marge. Ebenso können wir für absolut positionierte Elemente auch deren visuelle Höhe ändern.
<p class="wrap"> 父元素position: relative; <p class="yellow">绝对定位,并且设置top:0; bottom:0; 垂直拉伸元素,通过设置margin来改变可视高度</p></p>
* {margin:0; padding:0;}.wrap { position: relative; width: 400px; height: 400px; margin: 50px auto; border: 1px solid #ccc; }.yellow { position: absolute; top: 0; bottom: 0; width: 100px; margin: 50px 0; background-color: yellow; }
ist dasselbe wie Auffüllen. Bei Elementen, die sich normalerweise im Standarddokumentfluss befinden, ist der tatsächliche Wert des Elements gleich der Breite des übergeordneten Elements * Prozentsatz;
Wenn ein Element auf absolute Positionierung eingestellt ist, entspricht sein tatsächlicher Wert der Breite * Prozentsatz des ersten übergeordneten Elements, das relativ dazu positioniert ist
<p class="wrap"> 父元素宽度400px; <p class="yellow">margin-top:10%; 实际的margin-top=400px*10%=40px</p></p>
* {margin:0; padding:0;}.wrap { width: 400px; height: 400px; margin: 50px auto; border: 1px solid #ccc; }.yellow { width: 200px; height: 200px; margin-top: 10%; background-color: yellow; }
Randüberlappung tritt normalerweise auf zwischen Geschwisterelementen und zwischen übergeordneten und untergeordneten Elementen. Wenn Sie nicht darauf achten, kann es zu geringfügigen Problemen kommen. Hier finden Sie eine Zusammenfassung der Situationen, in denen Randüberlappungen auftreten.
Wenn zwei Elemente eine Randüberlappung haben, sind ihre tatsächlichen Werte:
Wenn zwei Randwerte Wenn beide positiv sind, sind die tatsächlicher Wert = der größere der beiden
Wenn die beiden Randwerte einer positiv und einer negativ sind, ist der tatsächliche Wert = die Summe der beiden Werte
Wenn beide Randwerte negativ sind, ist der tatsächliche Wert = der größere Absolutwert der beiden
Wann kommt es zu einer Randüberlappung?
Solange es sich bei zwei benachbarten Geschwisterelementen um Blockelemente im Standarddokumentfluss handelt, kommt es in vertikaler Richtung zu einer Randüberlappung.
Rand oben/unten festlegen
Set padding-top/bottom
Attribute wie overflow:hidden/auto festlegen, um den automatischen Wert von BFC zu implementieren
Rand festlegen: 0 auto; für ein Blockelement mit fester Breite, um das Element horizontal zu zentrieren. Dies sollte häufig von vielen Menschen verwendet werden, aber nur wenige Menschen kennen möglicherweise die spezifische Rolle des automatischen Werts.
Einfach ausgedrückt: Wenn Elemente, die keinen festen Breiten- oder Höhenwert haben, automatisch gestreckt werden, kann Auto verwendet werden, um den verbleibenden Platz zuzuweisen, nachdem ein fester Wert festgelegt wurde.
Es fühlt sich etwas schwierig an, es auszusprechen. Es gibt beispielsweise ein Blockelement mit einer festen Breite. Wir möchten, dass es auf der rechten Seite angezeigt wird. aber es kann auch mit margin-left: auto; erreicht werden:
<p class="wrap"> <p class="red">margin-left: auto;</p></p>
* {margin:0; padding:0;}.wrap { position: relative; width: 400px; height: 400px; margin: 50px auto; border: 1px solid #ccc; }.red { width: 100px; height: 100px; background-color: red; margin-left: auto; }
Randwert auf automatisch setzen. Zu den gültigen Szenarien gehören:
Gewöhnliche Blockelemente mit fester Breite, gültig, wenn sie in horizontaler Richtung eingestellt werden; >