私はtest caseを設定しました。与えられた(親要素)上のマウスホバーにCSS擬似要素(:: after)が表示されます。これまでのところすべてうまく動作しますが、擬似要素の負のトップマージンは、生成された要素の代わりに親に影響します。 (負の左マージンは期待通りに機能しますが)擬似要素のCSSは親要素に影響を与えます
誰もこの動作を説明することができますか?
私はtest caseを設定しました。与えられた(親要素)上のマウスホバーにCSS擬似要素(:: after)が表示されます。これまでのところすべてうまく動作しますが、擬似要素の負のトップマージンは、生成された要素の代わりに親に影響します。 (負の左マージンは期待通りに機能しますが)擬似要素のCSSは親要素に影響を与えます
誰もこの動作を説明することができますか?
注意すべき最初の事はあなたが::after
を使用する場合、DOMはこのようになっていることである::だから
<div class="land" lang="de">[content of element]<after></after></div>
、これは正確に*同じように動作します
http://jsfiddle.net/MLThM/7/
そして、いくつかの余分な性質を除去した(クロムまたはFirefoxを使用):
http://jsfiddle.net/MLThM/8/
親要素が移動する理由は、collapsing marginsです。
一つ追加することで、 "修正" する方法overflow: hidden
.land
に:
http://jsfiddle.net/MLThM/9/
そして、あなたのオリジナルのデモに適用される修正:
http://jsfiddle.net/MLThM/10/
は、* =のは、中のバグの可能性を忘れてみましょう現在のところ::after
と::before
は、現在の質問とは関係ありません。
いつでもコンテナdivをposition:relative
に設定し、新しいコンテンツをabsolute
に設定できます。この方法では、包含divの余白には影響しません。