display: inline-block;とfont-size: 0;で横並びにする実装をしていたのですが、Android2.3でレイアウトが崩れてしまっていたので、原因を調べてみました。
サンプルコード
width: 50%;で2列に並べてみます。
HTML
<ul class="list"> <li class="list__item">リスト1</li> <li class="list__item">リスト2</li> <li class="list__item">リスト3</li> <li class="list__item">リスト4</li> <li class="list__item">リスト5</li> </ul>
CSS
.list {
width: 320px;
margin: 0 auto;
font-size: 0;
}
.list__item {
display: inline-block;
width: 50%;
font-size: 14px;
text-align: center;
}
display: inline-block;で指定すると要素間に隙間ができてしまうため、親要素にfont-size: 0;を指定して隙間を消すようにしています。
他のブラウザでは問題なかったのですが、Android2.3で確認すると、1列の縦並びになっていました。
Android2.3で不具合が出る場合のデモページ
widthを小さくして、背景色を付けてレイアウトが崩れないか試してみました。
CSS
.list {
width: 320px;
margin: 0 auto;
font-size: 0;
}
.list__item {
display: inline-block;
width: 45%;
font-size: 14px;
text-align: center;
background: #ccc;
}
2列で表示されるようになりましたが、要素間に隙間ができてしまっていました。
widthを小さくするデモページ
font-size: 0;が効いていないようなので、子要素に指定しているfont-size: 14px;を削除して挙動を試してみました。
CSS
.list {
width: 320px;
margin: 0 auto;
font-size: 0;
}
.list__item {
display: inline-block;
width: 45%;
text-align: center;
background: #ccc;
}
font-sizeが0になったため、他のブラウザでは要素が表示されなくなりましたが、Android2.3ではフォントが小さくなるのみでした。
font-size: 0;のデモページ
挙動確認のため、font-size: 1px;でも試してみます。
CSS
.list {
width: 320px;
margin: 0 auto;
font-size: 0;
}
.list__item {
display: inline-block;
width: 45%;
font-size: 1px;
text-align: center;
background: #ccc;
}
Android2.3ではフォントサイズの変化はなく、他のブラウザでは最小のフォントサイズで表示されるようでした。
font-size: 1px;のデモページ
結論としては、基本的にはfont-size: 0の時はテキストが表示されなくなるのですが、Android2.3の場合は最小のフォントサイズで表示されてしまうようです。
今回の場合、HTMLで要素間のインデントなどを削除する方法で対応しました。
HTML
<ul class="list"> <li class="list__item">リスト1</li><li class="list__item">リスト2</li><li class="list__item">リスト3</li><li class="list__item">リスト4</li><li class="list__item">リスト5</li> </ul>
【参考サイト】
コメントが承認されるまで時間がかかります。