概要
カードは、可能な限り少ないマークアップとスタイルで構築されていますが、それでも多くの制御とカスタマイズを提供します。フレックスボックスを使用して構築されており、簡単な配置が可能で、他のコンポーネントとよく組み合わされます。
<b-card>
は、最初は固定幅を持たないため、親要素の全幅を自然に満たします。これは、スタイルまたは標準的なBootstrap v4のサイズクラスを使用して簡単にカスタマイズできます。
tag
プロパティを指定することで、デフォルトのdiv
ルートタグを他のHTML要素に変更できます。
<div>
<b-card
title="Card Title"
img-src="https://picsum.photos/600/300/?image=25"
img-alt="Image"
img-top
tag="article"
style="max-width: 20rem;"
class="mb-2"
>
<b-card-text>
Some quick example text to build on the card title and make up the bulk of the card's content.
</b-card-text>
<b-button href="#" variant="primary">Go somewhere</b-button>
</b-card>
</div>
コンテンツタイプ
カードは、画像、テキスト、リストグループ、リンクなど、さまざまなコンテンツをサポートします。以下は、<b-card>
内でサポートされるものの例です。
カードボディ
<b-card>
の基本要素は<b-card-body>
セクションで、カード内にパディングされたセクションを提供します。
デフォルトでは、<b-card>
のコンテンツは自動的に<b-card-body>
セクションに配置されます。
<div>
<b-card class="text-center">
<div class="bg-secondary text-light">
This is some content within the default <samp><b-card-body></samp> block of the
<samp><b-card></samp> component. Notice the padding between the card's border and this
gray <samp><div></samp>.
</div>
</b-card>
</div>
<b-card>
でno-body
プロパティを設定することで、自動的な<b-card-body>
セクション(と関連するパディング)を無効にできます。
<div>
<b-card no-body class="text-center">
<div class="bg-secondary text-light">
This is some content without the default <samp><b-card-body></samp> section. Notice the
lack of padding between the card's border and this gray <samp><div></samp>.
</div>
</b-card>
</div>
no-body
を有効にすると、title
プロパティとsub-title
プロパティのコンテンツはレンダリングされません。
no-body
が設定されている<b-card>
コンポーネント内の任意の場所に、<b-card-body>
サブコンポーネントを使用して独自のカードボディを配置します。
タイトル、テキスト、リンク
カードタイトルはtitle
プロパティで追加され、サブタイトルはsub-title
プロパティで追加されます。タイトルは<b-card-title>
サブコンポーネントを使用してレンダリングされ、サブタイトルは<b-card-sub-title>
サブコンポーネントを使用してレンダリングされます。
<b-card-text>
サブコンポーネントを使用すると、段落テキストをカードに追加できます。カードボディの最後の<b-card-text>
の下マージンは自動的に削除されます(CSSを使用)。<b-card-text>
内のテキストは、標準的なHTMLタグを使用してスタイルを設定することもできます。
リンクを追加し、.card-link
クラスを<a>
タグ(または<b-link>
コンポーネント)に追加することで、隣り合わせに配置できます。
<div>
<b-card title="Card title" sub-title="Card subtitle">
<b-card-text>
Some quick example text to build on the <em>card title</em> and make up the bulk of the card's
content.
</b-card-text>
<b-card-text>A second paragraph of text in the card.</b-card-text>
<a href="#" class="card-link">Card link</a>
<b-link href="#" class="card-link">Another link</b-link>
</b-card>
</div>
画像
<b-card>
のプロパティimg-src
は、カードの上に画像を配置し、img-alt
プロパティを使用して、画像のalt
属性に配置する文字列を指定します。img-src
プロパティで指定された画像はレスポンシブで、カードの幅が変更されると幅が調整されます。
あるいは、<b-card-img>
サブコンポーネントを使用して、<b-card>
内に画像を手動で配置することもできます。使用方法については、下記のキッチンスインク例を参照してください。
<div>
<div>
<h4>Top and Bottom</h4>
<b-card-group deck>
<b-card img-src="https://placekitten.com/1000/300" img-alt="Card image" img-top>
<b-card-text>
Some quick example text to build on the card and make up the bulk of the card's content.
</b-card-text>
</b-card>
<b-card img-src="https://placekitten.com/1000/300" img-alt="Card image" img-bottom>
<b-card-text>
Some quick example text to build on the card and make up the bulk of the card's content.
</b-card-text>
</b-card>
</b-card-group>
</div>
<div class="mt-4">
<h4>Left and Right (or Start and End)</h4>
<b-card img-src="https://placekitten.com/300/300" img-alt="Card image" img-left class="mb-3">
<b-card-text>
Some quick example text to build on the card and make up the bulk of the card's content.
</b-card-text>
</b-card>
<b-card img-src="https://placekitten.com/300/300" img-alt="Card image" img-right>
<b-card-text>
Some quick example text to build on the card and make up the bulk of the card's content.
</b-card-text>
</b-card>
</div>
</div>
**注記:** 左と右の画像の場合、画像が画像よりも背の高いコンテンツを含む場合、高さが「伸びる」ため、.card-img-left
と.card-img-right
クラスに追加のスタイルを適用する必要がある場合があります。画像が左または右に配置されている場合、ヘッダーとフッターはサポートされません。水平カードレイアウトの例の方が、レスポンシブな水平カードを作成する際に柔軟性が高い場合があります。
オーバーレイ画像
ブール型プロパティoverlay
を設定することで、画像をカードの背景に配置します。
<div>
<b-card
overlay
img-src="https://picsum.photos/900/250/?image=3"
img-alt="Card Image"
text-variant="white"
title="Image Overlay"
sub-title="Subtitle"
>
<b-card-text>
Some quick example text to build on the card and make up the bulk of the card's content.
</b-card-text>
</b-card>
</div>
遅延読み込み画像
<b-card-img-lazy>
サブコンポーネントを使用して、画像が視界に入ると遅延読み込みします。<b-card-img-lazy>
は、<b-card-img>
と同じプロパティと、<b-img-lazy>
コンポーネントの多くのプロパティをサポートしています。
header
/ footer
プロパティまたは名前付きスロットを使用して、カード内にオプションのヘッダーと/またはフッターを追加します。header-tag
プロパティとfooter-tag
プロパティ(どちらもデフォルトはdiv
)を設定することで、使用されるラッパー要素タグを制御できます。
<div>
<b-card-group deck>
<b-card
header="featured"
header-tag="header"
footer="Card Footer"
footer-tag="footer"
title="Title"
>
<b-card-text>Header and footers using props.</b-card-text>
<b-button href="#" variant="primary">Go somewhere</b-button>
</b-card>
<b-card title="Title" header-tag="header" footer-tag="footer">
<template #header>
<h6 class="mb-0">Header Slot</h6>
</template>
<b-card-text>Header and footers using slots.</b-card-text>
<b-button href="#" variant="primary">Go somewhere</b-button>
<template #footer>
<em>Footer Slot</em>
</template>
</b-card>
</b-card-group>
</div>
キッチンスインク例
複数のコンテンツタイプを組み合わせて必要なカードを作成するか、すべてをそこに配置します。以下に示すのは、画像スタイル、ブロック、テキストスタイル、リストグループです。これらはすべて固定幅のカードにラップされています。
<div>
<b-card
no-body
style="max-width: 20rem;"
img-src="https://placekitten.com/380/200"
img-alt="Image"
img-top
>
<template #header>
<h4 class="mb-0">Hello World</h4>
</template>
<b-card-body>
<b-card-title>Card Title</b-card-title>
<b-card-sub-title class="mb-2">Card Sub Title</b-card-sub-title>
<b-card-text>
Some quick example text to build on the card title and make up the bulk of the card's
content.
</b-card-text>
</b-card-body>
<b-list-group flush>
<b-list-group-item>Cras justo odio</b-list-group-item>
<b-list-group-item>Dapibus ac facilisis in</b-list-group-item>
<b-list-group-item>Vestibulum at eros</b-list-group-item>
</b-list-group>
<b-card-body>
<a href="#" class="card-link">Card link</a>
<a href="#" class="card-link">Another link</a>
</b-card-body>
<b-card-footer>This is a footer</b-card-footer>
<b-card-img src="https://placekitten.com/480/210" alt="Image" bottom></b-card-img>
</b-card>
</div>
水平カードレイアウト
グリッドコンポーネント、ユーティリティクラス、個々のカードサブコンポーネントを組み合わせることで、モバイルフレンドリーでレスポンシブな方法でカードを水平にすることができます。
以下の例では、<b-row>
のno-gutters
プロパティを使用して行グリッドのガターを削除し、<b-col>
のmd
プロパティを使用して、md
ブレークポイントでカードを水平にします。rounded-0
クラスは<b-card-img>
の角の丸みを削除し、<b-card>
のoverflow-hidden
クラスは、カードのborder-radiusに基づいて画像の角を適切にクリップします。カードのコンテンツによっては、さらに調整が必要になる場合があります。
<div>
<b-card no-body class="overflow-hidden" style="max-width: 540px;">
<b-row no-gutters>
<b-col md="6">
<b-card-img src="https://picsum.photos/400/400/?image=20" alt="Image" class="rounded-0"></b-card-img>
</b-col>
<b-col md="6">
<b-card-body title="Horizontal Card">
<b-card-text>
This is a wider card with supporting text as a natural lead-in to additional content.
This content is a little bit longer.
</b-card-text>
</b-card-body>
</b-col>
</b-row>
</b-card>
</div>
テキストバリアント
デフォルトでは、カードは暗いテキストを使用し、明るい背景を想定しています。text-variant
プロパティを使用して、内部のテキストの色とカードのサブコンポーネントの色を切り替えることで、それを反転させることができます。次に、暗い背景のバリアントを指定します。
<b-card bg-variant="dark" text-variant="white" title="Card Title">
<b-card-text>
With supporting text below as a natural lead-in to additional content.
</b-card-text>
<b-button href="#" variant="primary">Go somewhere</b-button>
</b-card>
背景とボーダーのバリアント
カードには、bg-variant
プロパティとborder-variant
プロパティを使用して、カードの背景色とボーダーの色をすばやく変更するための独自のスタイルが含まれています。より暗いソリッドバリアントでは、text-variant
プロパティを設定してテキストの色を調整する必要がある場合があります。
ソリッド
<div>
<div>
<b-card-group deck>
<b-card bg-variant="primary" text-variant="white" header="Primary" class="text-center">
<b-card-text>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</b-card-text>
</b-card>
<b-card bg-variant="secondary" text-variant="white" header="Secondary" class="text-center">
<b-card-text>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</b-card-text>
</b-card>
<b-card bg-variant="success" text-variant="white" header="Success" class="text-center">
<b-card-text>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</b-card-text>
</b-card>
</b-card-group>
</div>
<div class="mt-3">
<b-card-group deck>
<b-card bg-variant="info" text-variant="white" header="Info" class="text-center">
<b-card-text>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</b-card-text>
</b-card>
<b-card bg-variant="warning" text-variant="white" header="Warning" class="text-center">
<b-card-text>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</b-card-text>
</b-card>
<b-card bg-variant="danger" text-variant="white" header="Danger" class="text-center">
<b-card-text>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</b-card-text>
</b-card>
</b-card-group>
</div>
<div class="mt-3">
<b-card-group deck>
<b-card bg-variant="light" header="Light" class="text-center">
<b-card-text>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</b-card-text>
</b-card>
<b-card bg-variant="dark" header="Dark" text-variant="white" class="text-center">
<b-card-text>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</b-card-text>
</b-card>
<b-card header="Default" class="text-center">
<b-card-text>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</b-card-text>
</b-card>
</b-card-group>
</div>
</div>
ボーダー付き
<div>
<div>
<b-card-group deck>
<b-card
border-variant="primary"
header="Primary"
header-bg-variant="primary"
header-text-variant="white"
align="center"
>
<b-card-text>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</b-card-text>
</b-card>
<b-card
border-variant="secondary"
header="Secondary"
header-border-variant="secondary"
align="center"
>
<b-card-text>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</b-card-text>
</b-card>
<b-card border-variant="success" header="Success" align="center">
<b-card-text>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</b-card-text>
</b-card>
</b-card-group>
</div>
<div class="mt-3">
<b-card-group deck>
<b-card border-variant="info" header="Info" align="center">
<b-card-text>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</b-card-text>
</b-card>
<b-card
border-variant="warning"
header="Warning"
header-bg-variant="transparent"
align="center"
>
<b-card-text>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</b-card-text>
</b-card>
<b-card
border-variant="danger"
header="Danger"
header-border-variant="danger"
header-text-variant="danger"
align="center"
>
<b-card-text>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</b-card-text>
</b-card>
</b-card-group>
</div>
<div class="mt-3">
<b-card-group deck class="mb-3">
<b-card border-variant="light" header="Light" class="text-center">
<b-card-text>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</b-card-text>
</b-card>
<b-card border-variant="dark" header="Dark" align="center">
<b-card-text>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</b-card-text>
</b-card>
</b-card-group>
</div>
</div>
バリアントからクラスへのマッピング
BootstrapVue <b-card>
のバリアントは、上記のバリアント名にbg-
(ソリッドの場合)またはborder-
(ボーダー付きの場合)をプリペンドすることで、Bootstrap v4のカードクラスに直接マッピングされます。
header-bg-variant
、header-border-variant
、header-text-variant
、footer-bg-variant
、footer-border-variant
、footer-text-variant
プロパティを使用して、ソリッドとボーダーのバリアントをカードのヘッダーとフッターに個別に適用することもできます。
<div>
<b-card
header="Card Header"
header-text-variant="white"
header-tag="header"
header-bg-variant="dark"
footer="Card Footer"
footer-tag="footer"
footer-bg-variant="success"
footer-border-variant="dark"
title="Title"
style="max-width: 20rem;"
>
<b-card-text>Header and footers variants.</b-card-text>
</b-card>
</div>
支援技術への意味の伝達
色を使用して意味を追加することは、視覚的な指示のみを提供し、スクリーンリーダーなどの支援技術のユーザーには伝えられません。色の意味によって示される情報は、コンテンツ自体から明らかである(例:表示されているテキスト)、または.sr-only
クラスで非表示にした追加のテキストなど、別の方法で含まれていることを確認してください。
ナビゲーションとの統合
<b-nav>
をカードヘッダーに簡単に統合できます。
header
スロットを使用する:
<div>
<b-card title="Card Title" body-class="text-center" header-tag="nav">
<template #header>
<b-nav card-header tabs>
<b-nav-item active>Active</b-nav-item>
<b-nav-item>Inactive</b-nav-item>
<b-nav-item disabled>Disabled</b-nav-item>
</b-nav>
</template>
<b-card-text>
With supporting text below as a natural lead-in to additional content.
</b-card-text>
<b-button variant="primary">Go somewhere</b-button>
</b-card>
</div>
<b-card-header>
サブコンポーネントを使用する
<div>
<b-card no-body>
<b-card-header header-tag="nav">
<b-nav card-header tabs>
<b-nav-item active>Active</b-nav-item>
<b-nav-item>Inactive</b-nav-item>
<b-nav-item disabled>Disabled</b-nav-item>
</b-nav>
</b-card-header>
<b-card-body class="text-center">
<b-card-title>Card Title</b-card-title>
<b-card-text>
With supporting text below as a natural lead-in to additional content.
</b-card-text>
<b-button variant="primary">Go somewhere</b-button>
</b-card-body>
</b-card>
</div>
カードヘッダーで<b-nav>
を使用する方法の詳細については、Navs ドキュメントを参照してください。
カードグループ
カード内のコンテンツのスタイル設定に加えて、BootstrapVueには、一連のカードをレイアウトするための<b-card-group>
コンポーネントが含まれています。現時点では、これらのレイアウトオプションはまだレスポンシブではありません。
デフォルトのカードグループ
カードグループを使用して、カードを幅と高さが等しい列を持つ単一の接続された要素としてレンダリングします。カードグループは、display: flex;を使用して均一なサイズを実現します。
フッター付きのカードグループを使用する場合、そのコンテンツは自動的に整列されます。
<div>
<b-card-group>
<b-card title="Title" img-src="https://placekitten.com/g/300/450" img-alt="Image" img-top>
<b-card-text>
This is a wider card with supporting text below as a natural lead-in to additional content.
This content is a little bit longer.
</b-card-text>
<template #footer>
<small class="text-muted">Last updated 3 mins ago</small>
</template>
</b-card>
<b-card title="Title" img-src="https://placekitten.com/g/300/450" img-alt="Image" img-top>
<b-card-text>
This card has supporting text below as a natural lead-in to additional content.
</b-card-text>
<template #footer>
<small class="text-muted">Last updated 3 mins ago</small>
</template>
</b-card>
<b-card title="Title" img-src="https://placekitten.com/g/300/450" img-alt="Image" img-top>
<b-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.
</b-card-text>
<template #footer>
<small class="text-muted">Last updated 3 mins ago</small>
</template>
</b-card>
</b-card-group>
</div>
カードデッキグループ
互いに接続されていない幅と高さが等しいカードのセットが必要ですか?deck
プロパティを設定して、カードデッキを使用してください。通常のカードグループと同様に、デッキのカードフッターは自動的に整列されます。
<div>
<b-card-group deck>
<b-card title="Title" img-src="https://picsum.photos/300/300/?image=41" img-alt="Image" img-top>
<b-card-text>
This is a wider card with supporting text below as a natural lead-in to additional content.
This content is a little bit longer.
</b-card-text>
<template #footer>
<small class="text-muted">Last updated 3 mins ago</small>
</template>
</b-card>
<b-card title="Title" img-src="https://picsum.photos/300/300/?image=41" img-alt="Image" img-top>
<b-card-text>
This card has supporting text below as a natural lead-in to additional content.
</b-card-text>
<template #footer>
<small class="text-muted">Last updated 3 mins ago</small>
</template>
</b-card>
<b-card title="Title" img-src="https://picsum.photos/300/300/?image=41" img-alt="Image" img-top>
<b-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.
</b-card-text>
<template #footer>
<small class="text-muted">Last updated 3 mins ago</small>
</template>
</b-card>
</b-card-group>
</div>
カード列グループ
カードは、columns
プロパティを設定した<b-card-group>
でラップすることで、Masonryのような列に編成できます。カードは、より簡単な整列のために、flexboxではなくCSS列プロパティを使用して構築されています。カードは上から下、左から右の順序で配置されます。
ご注意!カード列の動作は環境によって異なる場合があります。カードが列をまたがって分割されるのを防ぐには、`display: inline-block` を設定する必要があります。`column-break-inside: avoid` はまだ完全な解決策ではありません。
<div>
<b-card-group columns>
<b-card
title="Card title that wraps to a new line"
img-src="https://placekitten.com/g/400/450"
img-alt="Image"
img-top
>
<b-card-text>
This is a wider card with supporting text below as a natural lead-in to additional content.
This content is a little bit longer.
</b-card-text>
</b-card>
<b-card header="Quote">
<blockquote class="blockquote mb-0">
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer posuere erat a ante.</p>
<footer class="blockquote-footer">
Someone famous in <cite title="Source Title">Source Title</cite>
</footer>
</blockquote>
</b-card>
<b-card title="Title" img-src="https://placekitten.com/500/350" img-alt="Image" img-top>
<b-card-text>
This card has supporting text below as a natural lead-in to additional content.
</b-card-text>
<b-card-text class="small text-muted">Last updated 3 mins ago</b-card-text>
</b-card>
<b-card bg-variant="primary" text-variant="white">
<blockquote class="card-blockquote">
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer posuere erat a ante.</p>
<footer>
<small>Someone famous in <cite title="Source Title">Source Title</cite></small>
</footer>
</blockquote>
</b-card>
<b-card>
<b-card-title>Title</b-card-title>
<b-card-text>
This card has supporting text below as a natural lead-in to additional content.
</b-card-text>
<b-card-text class="small text-muted">Last updated 3 mins ago</b-card-text>
</b-card>
<b-card img-src="https://picsum.photos/400/400/?image=41" img-alt="Image" overlay></b-card>
<b-card img-src="https://picsum.photos/400/200/?image=41" img-alt="Image" img-top>
<b-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.
</b-card-text>
<template #footer>
<small class="text-muted">Footer Text</small>
</template>
</b-card>
</b-card-group>
</div>