私はBootstrap 4 alpha 2を使用していてカードを利用しています。具体的には、公式ドキュメントから抜粋した この例 で作業しています。タイトルが言うように、どのように私はすべてのカードを同じ高さにすることができますか?
編集:今私が考えることができるすべては次のCSSルールを設定することです:
.card {
min-height: 200px;
}
しかし、これはハードコーディングされたソリューションであり、一般的にはうまくいきません。私の見解では、コードはドキュメントのものと同じです。
<div class="card-columns">
<div class="card">
<img class="card-img-top" data-src="..." alt="Card image cap">
<div class="card-block">
<h4 class="card-title">Card title that wraps to a new line</h4>
<p class="card-text">This is a longer card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.</p>
</div>
</div>
<div class="card card-block">
<blockquote class="card-blockquote">
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer posuere erat a ante.</p>
<footer>
<small class="text-muted">
Someone famous in <cite title="Source Title">Source Title</cite>
</small>
</footer>
</blockquote>
</div>
<div class="card">
<img class="card-img-top" data-src="..." alt="Card image cap">
<div class="card-block">
<h4 class="card-title">Card title</h4>
<p class="card-text">This card has supporting text below as a natural lead-in to additional content.</p>
<p class="card-text"><small class="text-muted">Last updated 3 mins ago</small></p>
</div>
</div>
<div class="card card-block card-inverse card-primary text-xs-center">
<blockquote class="card-blockquote">
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer posuere erat.</p>
<footer>
<small>
Someone famous in <cite title="Source Title">Source Title</cite>
</small>
</footer>
</blockquote>
</div>
<div class="card card-block text-xs-center">
<h4 class="card-title">Card title</h4>
<p class="card-text">This card has supporting text below as a natural lead-in to additional content.</p>
<p class="card-text"><small class="text-muted">Last updated 3 mins ago</small></p>
</div>
<div class="card">
<img class="card-img" data-src="..." alt="Card image">
</div>
<div class="card card-block text-xs-right">
<blockquote class="card-blockquote">
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer posuere erat a ante.</p>
<footer>
<small class="text-muted">
Someone famous in <cite title="Source Title">Source Title</cite>
</small>
</footer>
</blockquote>
</div>
<div class="card card-block">
<h4 class="card-title">Card title</h4>
<p class="card-text">This is a wider card with supporting text below as a natural lead-in to additional content. This card has even longer content than the first to show that equal height action.</p>
<p class="card-text"><small class="text-muted">Last updated 3 mins ago</small></p>
</div>
</div>
あなたは "行"または "列"にクラスを置くことができますか?あなたが行にそれを使用する場合、カード(ボーダー)上に表示されません。 https://v4-alpha.getbootstrap.com/utilities/flexbox/#align-items
<div class="container">
<div class="row">
<div class="col-lg-4 d-flex align-items-stretch">
ここでの他の答えのいくつかは「風変わりな」ようです。最小の高さを使用する、または固定の高さをさらに悪化させるのはなぜでしょうか。
私は、この問題(高さが等しい)が浮動ブロックdivから離れる方向へ進む理由の一部であると思いましたか?
Bootstrap 4(Beta 2)を使用しています。その間、状況は変わったようです。私は同じ問題を抱えていて、簡単な解決策を見つけました。これは私のコードです:
<div class="container-fluid content-row">
<div class="row">
<div class="col-sm-12 col-lg-6">
<div class="card h-100">
… content card …
</div>
</div>
… all the other cards …
</div>
</div>
"col-sm-12 col-lg-6"を使ってカードをレスポンシブにしました。 "card h-100"では、すべてのカードを親の列の高さに設定しました。私のシステムではこれは機能しますが、私はプロではありません。だから、うまくいけば私は誰かを助けました。
最善の解決策として、Bootstrap 4に必要なものがすべて揃っています。.d-flex
および.flex-fill
クラスを使用します。 card-decks
は反応しないので使わないでください。私はcol-sm
を使いました、あなたはあなたが望む.col
クラスを使うことができます。
これが猛獣です。ブラウザウィンドウをXSに縮小して動作を確認してください。
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" rel="stylesheet" />
<link href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,500,500i,700,700i" rel="stylesheet">
<div class="container">
<div class="row my-4">
<div class="col">
<div class="jumbotron">
<h1>Bootstrap 4 Cards all same height demo</h1>
<p class="lead">by djibe.</p>
<span class="text-muted">(thx to BS4)</span>
<p>Dependencies : standard BS4</p>
<p>
Enjoy the magic of flexboxes and leave the useless card-decks.
</p>
<div class="container-fluid">
<div class="row">
<div class="col-sm d-flex">
<div class="card card-body flex-fill">
A small card content.
</div>
</div>
<div class="col-sm d-flex">
<div class="card card-body flex-fill">
"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor
in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."
</div>
</div>
<div class="col-sm d-flex">
<div class="card card-body flex-fill">
Another small card content.
</div>
</div>
</div>
</div>
</div>
</div>
</div>
更新:ブートストラップ4では、flexboxがデフォルトになり、各card-deck
行は3枚のカードが含まれます。カードは一杯になります。
http://www.codeply.com/go/x91w5Cl6ip
Bootstrap 4のアルファ版card-columns
は、同じ高さを実際にはサポートしていないCSS3カラムを使用します(Firefoxでしかサポートされていないcolumn-fillを除く)。
代わりにBootstrap 4 flexboxモードを有効にした場合は、代わりにcard-deck
と小さなCSSを使用して高さを等しくし、3列ごとに折り返すことができます。
@media (min-width:34em) {
.card-deck > .card
{
width: 29%;
flex-wrap: wrap;
flex: initial;
}
}
これが私のやり方です。
CSS:
.my-flex-card > div > div.card {
height: calc(100% - 15px);
margin-bottom: 15px;
}
HTML:
<div class="row my-flex-card">
<div class="col-lg-3 col-sm-6">
<div class="card">
<div class="card-block">
aaaa
</div>
</div>
</div>
<div class="col-lg-3 col-sm-6">
<div class="card">
<div class="card-block">
bbbb
</div>
</div>
</div>
<div class="col-lg-3 col-sm-6">
<div class="card">
<div class="card-block">
cccc
</div>
</div>
</div>
<div class="col-lg-3 col-sm-6">
<div class="card">
<div class="card-block">
dddd
</div>
</div>
</div>
</div>
高さ100%を表すクラスh-100
を適用できます。
カードを中に入れる
<div class="card-group"></div>
または
<div class="card-deck"></div>
私は少し異なるアプローチを取りました。 カードデッキラッパーを使う
カードブロックの高さを制限するスタイルルールを追加しました。
.card .card-block {max-height:300px;overflow:auto;}
これを達成するための最も最小限の方法(私が知っていること):
.text-monospace
を適用してください。カードのタイトルやその他のテキストに.text-truncate
を追加してください。これはテキストを単一行に強制します。カードを同じ高さにする。