基本的に、コードに混乱を追加して混乱を引き起こしているため、最初に混乱を取り除き、実際の問題の理解を妨げます。
まず最初に、本当の問題は何かを確認する必要がありますか?
その「inline-block
」要素が下に押し下げられる理由
今、私たちはそれを理解し始め、最初に混乱を取り除きます。
1 -
なぜ、すべての3つのdiv同じ境界線の幅を与えていませんか?
あげましょう。
2-フローティングエレメントは、インラインブロックエレメントが押し下げられることと関係がありますか?いいえ、それはそれとは何の関係もありません。
そのため、そのdivを完全に削除しました。また、インラインブロック要素が同じように押し下げられるのと同じ動作が見られます。
ここで、いくつかの文献でラインボックスの概念と、それらが同じ行にどのように並べられるかを理解します。質問の答えがあるため、最後の段落を注意深く読んでください。
「インラインブロック」のベースラインは、インフローラインボックスがないか、「オーバーフロー」プロパティに「可視」以外の計算値がある場合を除き、通常のフローの最後のラインボックスのベースラインです。この場合、ベースラインはマージンの下端です。
ベースラインがわからない場合は、簡単な言葉で簡単に説明します。
'gjpqy'以外のすべての文字はベースラインに書き込まれます。ベースラインと考えることができるのは、これらの「ランダムな文字」のすぐ下に下線を引くのと同じように単純な水平線を描く場合です。ベースラインになりますが、 'gjpqy'を書き込むと同じ行にある文字は、これらの文字の下部が行の下に落ちます。
したがって、「gjpqy」以外のすべての文字はベースラインの上に完全に書き込まれ、これらの文字の一部はベースラインの下に書き込まれていると言えます。
3-ラインのベースラインがどこにあるかを確認してみませんか?ラインのベースラインを示す文字をいくつか追加しました。
4- divにもいくつかの文字を追加して、div内のベースラインを見つけますか?ここでは、ベースラインを明確にするためにいくつかの文字がdivに追加されています。
ベースラインについて理解したら、インラインブロックのベースラインに関する以下の簡略版をお読みください。
i)問題のインラインブロックのオーバーフロープロパティが可視に設定されている場合(デフォルトで設定されているため、設定する必要はありません)。次に、そのベースラインは、ラインを含むブロックのベースラインになります。
ii)問題のインラインブロックのオーバーフロープロパティがOTHER THANN THANに設定されている場合。次に、その下部マージンは、ボックスを含む行のベースラインになります。
今、何が緑のdivで起こっていることを、あなたの概念を明確にするために、再度これを見て。まだ混乱がある場合は、ここに緑のdivの近くにさらに文字を追加して、包含ブロックのベースラインを確立し、緑のdivベースラインを揃えます。
さて、私は今彼らが同じベースラインを持っていると主張していますか?正しい?
5-次に、それらを重ねて、それらが互いに正しく合っているかどうかを確認しませんか?そこで、3つ目のdiv -left:35pxを使用します。彼らが今同じベースラインを持っているかどうかを確認するには?
これで、最初のポイントが証明されました。
さて、最初のポイントの説明の後、2番目のポイントは簡単に消化でき、オーバーフロープロパティが可視(非表示)以外に設定されている最初のdivには、ラインのベースラインの下マージンがあります。
これで、さらに説明するためにいくつかの実験を行うことができます。
- 最初のdiv overflow:visibleを設定します(または完全に削除します)。
- 2番目のdivオーバーフローを設定:visible以外。
- 両方のdivオーバーフローを設定します:visible以外。
今あなたの混乱を取り戻し、すべてがあなたのためにうまく見ているかどうかを確認します。
- 持参あなたのFLOATEDのdivをバック(もちろんする必要がある
身体の一部の幅を広げるには)あなたが、それは効果がありません参照してください。
- 同じ奇数のマージンを元に戻します。
- セットオーバーフローの緑のdiv:目に見えるあなたは、あなたの質問に設定された(アライメントずれがあればそう5pxのために1ピクセルから境界線の幅の増加によるものであることを否定は左に調整し、あなたが何も問題はありません表示されます)
- 次に、理解を助けるために追加した文字を削除します。(もちろん、負の左を削除します)
- 幅の広いものは必要なくなったので、最後に本体の幅を減らします。
そして今、私たちは元の場所に戻っています。
うまくいけば、私はあなたの質問に答えました。