私は画像と情報のかなり複雑なグリッドを作成しようとしています(ほとんどPinterestのように)。具体的には、一組一組を次々とインライン配置しようとしてい<ul>s
ます。私はそれを機能させていますが、1つの側面が問題を引き起こしているので、問題全体の複雑さを避けるために、この小さな部分について質問しようとしています。
画像とその情報を水平方向に揃えるために、画像<li>s
内の他のインラインブロックレベルの要素とインラインで使用しています。<li>s
高さがほとんどないことを除いて、ほとんどすべてが正しく機能します。
HTMLとCSSは、以下に加えてそれをいじりたい場合は、ここでJSFiddleにあります。
HTML:
<div>
<ul class="Container">
<li>
<span class="Item">
<a href="#"><img src="http://jsfiddle.net/img/logo.png"/></a>
<span class="Info">
<a href="#">Title One</a>
<span class="Details">One Point One</span>
</span>
</span>
</li>
<li>
<span class="Item">
<a href="#"><img src="http://jsfiddle.net/img/logo.png"/></a>
<span class="Info">
<a href="#">Title Two</a>
<span class="Details">Two Point One</span>
</span>
</span>
</li>
</ul>
CSS:
.Container {
list-style-type:none;
}
.Container li {
background-color:grey;
display:inline;
text-align:center;
}
.Container li .Item {
border:solid 2px #ccc;
display:inline-block;
min-height:50px;
vertical-align:top;
width:170px;
}
.Container li .Item .Info {
display:inline-block;
}
.Container li .Item .Info a {
display:inline-block;
width:160px;
}
jsfiddleリンクで結果を確認すると、灰色の背景には全体の小さなストリップしか含まれていないことがわかります<li>
。<li>
を変更してこの問題を解決することは知っていdisplay:inline-block
ますが、他の理由でそれは実現可能ではありません。
ですから、まず、インライン<li>
要素に高さがない理由を誰かが理解しているかどうかを確認するだけです。これを説明する仕様には何も見つかりません。インライン要素に高さを追加できないことは知っていますが、なぜこれが発生しているのかについての説明があれば、修正できる可能性があります。
次に、IEの開発者モードを使用して要素を検査すると、背景色は正しい場所にあり<li>'s
ますが、要素にカーソルを合わせると、バウンディングボックスの実際の場所はコンテナの下部にあることがわかります。この問題がすべてのブラウザの一番上にあれば対処できますが、明らかに異なります。
注:この場合、古いブラウザはあまり気にしませんが、HTML5またはJavaScriptのポジショニングは使用しません。
ありがとう。