Die gute Nachricht ist, dass negativen Margen tun arbeiten!
.wrapper {
outline: 1px solid blue;
padding: 40px;
}
.content {
outline: 1px solid red;
background-color: #D8D8D8;
}
.content p {
outline: 1px dotted blue;
background-color: rgba(255, 255, 0, 0.3);
margin: 0 0 0 0;
text-align: justify;
}
.content p.lefty {
margin-left: -20px;
}
.content p.righty {
margin-right: -20px;
}
<div class="wrapper">
<div class="content">
<p>Lorem ipsum dolor sit amet, ...</p>
<p class="lefty">Sed ipsum ante, dictum vel rhoncus id, ...</p>
<p class="righty">Curabitur aliquam tristique mattis...</p>
</div>
</div>
Ich habe outline
's zu all div
' s und p
sind das Ausmaß der zeigen:
Um negative Margen bei der Arbeit, betrachten Sie den folgenden Code-Schnipsel zu sehen die Inhaltsfelder.
Der erste Absatz hat keine Ränder und ich habe einen Absatz nach links und den anderen nach rechts versetzt.
Wenn Sie genügend Inhalt haben, um die Breite des Absatzes zu füllen (oder wenn Sie die Umrisse anzeigen), wird das Textfeld außerhalb des Felds content
angezeigt. Sie können auch aus dem Absatz outline
sehen, dass der Text sich nach links und nach rechts erstreckt.
Um den Effekt auf der rechten Seite zu sehen, benötigen Sie jedoch genügend Inhalt, um die gesamte Breite des Absatzes auszufüllen, oder Sie müssen eine Hintergrundfarbe oder Kontur auf dem Kindelement festlegen.
Wenn Sie beginnen, die Breite und Höhe zu fixieren, sehen Sie unter content
andere Effekte wie die Absätze, die außerhalb von content
fließen.
Das Studium dieser einfachen Code-Struktur veranschaulicht viele Facetten des CSS-Box-Modells und es ist aufschlussreich, etwas Zeit damit zu verbringen.
Fiddle Referenz: http://jsfiddle.net/audetwebdesign/2SKjM/
Wenn Sie das Polster aus dem wrapper
entfernen, können Sie nicht den rechten Rand Verschiebung feststellen, da die Elemente über die gesamte Breite des übergeordneten Container oder die Seitenbreite auf die Abhängigkeit zu füllen verlängern spezifische Details des HTML/CSS.
Warum zeigte mein Beispiel nicht den Effekt !!! ???
In Ihrem Beispiel Sie nicht sehen, die Wirkung, weil Sie die Breite der p
Elemente festgelegt durch die Angabe width: 100%
, die den Absatz lenkt die Breite der geordneten Container (200px in Ihrem Beispiel) zu übernehmen.
Wenn Sie machen eine einfache Änderung der Breite 100%
-auto
:
p {
background: blue;
width: auto;
}
Sie Ihre zweite Absatz gerade aus auf der rechten Seite sehen, wie Sie erwartet.
Hinweis: Outline vs Border Beachten Sie auch, dass die rote Box auf die outline
zurückzuführen ist, die die Textfelder innerhalb der content
umschließt, auch wenn die Textfelder außerhalb des Mutter erstrecken (content
) Elements. Als Ergebnis kann die outline
Box viel größer sein als die border
Box des entsprechenden Elements.
das vermasselt seinen Rand links in der linken Klasse. –
Nun, das ist einfach zu beheben: '.right {float: right}' Das würde funktionieren. –
Ich verstehe es nicht. Wir haben Container mit der Breite, die Containment-Element ausfüllen, und wir haben negativen rechten Rand, der Element herausziehen sollte, wie ich denke –