私は次のHTMLを持っています:
<div class="selfClear" style="float: left; border: 1px solid black;">
...floated stuff in here...
</div>
<span style="margin-top: 10px; border: 1px solid purple;">hello world</span>
margin-top ごとに、div と span の間に 10px のギャップが必要です。ただし、上記の div はフローティングであるため、そのようにはレンダリングされません。何かを明確にするための修正は、DIV です。純粋な CSS を介してこれを行うには、'::after' メソッドを使用してコンテンツを挿入し、その後クリアに設定する必要があるようです。
.selfClear::after {
content: ".";
display: block;
height: 0px;
clear: both;
visibility: hidden;
}
.selfClear {
display: inline-block;
}
しかし、これは私がやるべきだと思っていることを完全には行っていません。ピリオドが挿入されたときに実際に表示できるように、高さ/可視性のスタイルを含めない場合、div の後ではなく、実際には div の内側にレンダリングされていることがわかります (黒い境界線がそれを囲みます)。 div と span)。これがどのように機能するかを誤解していますか?
編集:
より簡単な例を次に示します。
CSS:
#theDiv {
border: 1px solid green;
}
#theDiv::after {
content: ".";
}
#theOtherDiv {
border: 1px solid orange;
}
HTML:
<div id="theDiv">
Hello
</div>
<div id="theOtherDiv">
World
</div>
これにより、div の後ではなく、'Hello' の後にピリオドが配置されます。
要素自体ではなく、要素の CONTENTS に実際に追加されているよう::after
です。::before
あれは正しいですか?