bootstrap列でフレックスボックスを使用して、すべての列が常に水平方向に中央に配置されるようにしようとしています。以下で説明するマークアップは、Firefox、chrome and = Androidしかし、iOSとsafariでは失敗します。まだテストしていませんIE。
HTML:
<!-- The fourth column falls down -->
<div class='row row-1 text-center'>
<div class="col-xs-3 red">Hi</div>
<div class="col-xs-3 blue">Hi</div>
<div class="col-xs-3 blue">Hi</div>
<div class="col-xs-3 blue">Hi</div>
</div>
<!-- Works Fine and centers the columns -->
<div class='row text-center'>
<div class="col-xs-3 red">Hi</div>
<div class="col-xs-3 blue">Hi</div>
<div class="col-xs-3 blue">Hi</div>
</div>
CSS:
.row {
display: flex;
display: -webkit-flex;
flex-wrap:wrap;
-webkit-flex-wrap: wrap;
-webkit-justify-content: center;
justify-content: center;
}
div[class^=col-] {
float: none;
display: inline-block;
vertical-align: top;
}
Chrome、Firefox、Androidの場合
SafariとiOSの場合
1行に表示されるように列に追加する必要があるものはありますか。
問題の原因はpseudo-element
の.row
です。
これは、Safariブラウザが
:before
および:after
疑似要素を実際の要素であるかのように扱うために発生します。
試してみてください
.row:before, .row:after{
display: none;
}
または、.flex-row
というクラスを作成してこれを実行することをお勧めします
<div class="row flex-row">
{{contents here..}}
</div>
.flex-row{
display: flex;
display: -webkit-flex;
flex-wrap:wrap;
-webkit-flex-wrap: wrap;
-webkit-justify-content: center;
justify-content: center;
}
.flex-row:before, .flex-row:after{
display: none;
}