1

この簡単な例を考えてみましょう。

HTML

<div>
    <a href="/">Some link here</a>
    <div>a div here</div>
    <a href="/">Another link</a>
    <br/>
    <a href="/">And one more!</a>
</div>

CSS

div > a, div > div {
    color: white;
    line-height: 1.6;
    height: 30px;
    text-align: center;
    width: 150px;
}
div > a {
    border: 1px solid black;
    display: inline-block;
    text-decoration: none;
}
div >  a:first-child {
    background-color: red;
    margin-bottom: -8px;
}
div > div + a {
    background-color: green;
    margin-bottom: -8px;
}
div > br + a {
    background-color: blue;
}
div > div {
    background-color:black;
    border: 1px solid gray:
    margin-bottom:-8px;
}

ここでフィドルhttp://jsfiddle.net/rHupy/2/

この問題は、最新の Chrome および Firefox に関連しています。

私はこれをいじって昨日の午後全体を失いました。基本的に、この例では、負の下部マージンが非常に奇妙に機能します。赤の A タグにマイナスのマージンを使用すると、DIV タグで描画されますが、最大 8px です。-8px (より負の値) を下回ると、DIV タグは配置されたままになり、赤い A タグにそれ以上描画されません。

DIV タグにマージンを適用すると、期待どおりに機能します。つまり、緑の A タグが -25px の DIV タグを完全に覆うようにすることができます。

ブロック表示スタイルをすべてのタグに適用し、BR タグを省略すれば、この問題は回避されますが、さらに発生するため、これはインライン ブロック表示スタイルに関連していると確信しています。ここの例http://jsfiddle.net/rHupy/3/

また、ブロック表示スタイルとフロート左スタイルを組み合わせてみましたが、さらに問題が発生しました。一部の要素は、互いに整列するのではなく、単に折りたたまれます。

私の質問は: インライン ブロック表示スタイルが「制限付き」に設定されたタグに負のマージンが適用されるのはなぜですか?

4

1 に答える 1