単純な問題:ブートストラップを使用して列内の列を垂直に整列するにはどうすればよいですか?ここの例(child1aとchild1bを垂直に揃えたい):
HTML
<div class="col-lg-12">
<div class="col-lg-6 col-md-6 col-12 child1">
<div class="col-12 child1a">Child content 1a</div>
<div class="col-12 child1b">Child content 1b</div>
</div>
<div class="col-lg-6 col-md-6 col-12 child2">
Child content 2<br>
Child content 2<br>
Child content 2<br>
Child content 2<br>
Child content 2<br>
</div>
</div>
UPDATE
いくつかのCSS:
.col-lg-12{
top:40px;
bottom:0px;
border:4px solid green;
}
.child1a, .child1b{
border:4px solid black;
display:inline-block !important;
}
.child1{
border:4px solid blue;
height:300px;
display:table-cell !important;
vertical-align:middle;
}
.child2{
border:4px solid red;
}
.parent {
display: table;
table-layout: fixed;
}
.child {
display:table-cell;
vertical-align:middle;
text-align:center;
}
table-layout: fixed
は、col- *クラスの機能の破壊を防ぎます。
古いトピックかもしれませんが、誰かがこれについてさらに助けが必要な場合は、たとえば次のようにします(テキストよりも高さが大きい場合、画像の中央の行にテキストを配置します)。
HTML:
<div class="row display-table">
<div class="col-xs-12 col-sm-4 display-cell">
img
</div>
<div class="col-xs-12 col-sm-8 display-cell">
text
</div>
</div>
CSS:
.display-table{
display: table;
table-layout: fixed;
}
.display-cell{
display: table-cell;
vertical-align: middle;
float: none;
}
私が見逃した重要なことは、「float:none;」でした。 bootstrap col属性からフロートが残ったためです。
乾杯!
親の場合:display: table;
子の場合:display: table-cell;
次に、vertical-align: middle;
を追加します
私はフィドルを作ることができますが、今はホームタイムです!
ここに素敵なフィドルがあります: http://jsfiddle.net/lharby/AJAhR/
.parent {
display:table;
}
.child {
display:table-cell;
vertical-align:middle;
text-align:center;
}
幅を追加する必要がありました:100%;この例を使用したときに、IEとFFの奇妙な動作を修正するためにテーブルを表示します。 IEおよびFFには、col-md- *タグを正しい幅で表示する際に問題が発生しました
.display-table {
display: table;
table-layout: fixed;
width: 100%;
}
.display-cell {
display: table-cell;
vertical-align: middle;
float: none;
}
http://jsfiddle.net/b9chris/zN39r/
HTML:
<div class="item row">
<div class="col-xs-12 col-sm-6"><h4>This is some text.</h4></div>
<div class="col-xs-12 col-sm-6"><h4>This is some more.</h4></div>
</div>
CSS:
div.item div h4 {
height: 60px;
vertical-align: middle;
display: table-cell;
}
重要な注意事項:
vertical-align: middle; display: table-cell;
は、Bootstrapクラスが適用されていないタグに適用する必要があります。 col-*
、row
などにすることはできません。row
またはcol-*
タグに特別なルールを適用する必要はありません。http://jsfiddle.net/b9chris/zN39r/1/
CSS:
div.item div {
background: #fdd;
table-layout: fixed;
display: table;
}
div.item div h4 {
height: 60px;
vertical-align: middle;
display: table-cell;
background: #eee;
}
col-*
タグに追加されたテーブルレイアウトおよび表示プロパティに注目してください。これはcol-*
が適用されているタグに適用する必要があります。他のタグでは役に立ちません。
Prinsenの答えが最良の選択です。ただし、列が崩れない問題を修正するには、コードをメディアチェックステートメントで囲む必要があります。このように、これらのスタイルは、大きな列がアクティブな場合にのみ適用されます。更新された完全な回答を次に示します。
HTML:
<div class="row display-table">
<div class="col-xs-12 col-sm-4 display-cell">
img
</div>
<div class="col-xs-12 col-sm-8 display-cell">
text
</div>
</div>
CSS:
@media (min-width: 768px){
.display-table{
display: table;
table-layout: fixed;
}
.display-cell{
display: table-cell;
vertical-align: middle;
float: none;
}
}