card.md 17.4 KB
Newer Older
Mark Otto's avatar
cards  
Mark Otto committed
1
---
Mark Otto's avatar
Mark Otto committed
2
layout: docs
Mark Otto's avatar
cards  
Mark Otto committed
3
title: Cards
4
group: components
Mark Otto's avatar
cards  
Mark Otto committed
5
6
7
8
---

A **card** is a flexible and extensible content container. It includes options for headers and footers, a wide variety of content, contextual background colors, and powerful display options.

Mark Otto's avatar
Mark Otto committed
9
If you're familiar with Bootstrap 3, cards replace our old panels, wells, and thumbnails. Similar functionality to those components is available as modifier classes for cards.
Mark Otto's avatar
cards  
Mark Otto committed
10

Mark Otto's avatar
Mark Otto committed
11
12
13
14
15
## Contents

* Will be replaced with the ToC, excluding the "Contents" header
{:toc}

16
## Example
Mark Otto's avatar
cards  
Mark Otto committed
17

18
Cards require a small amount of markup and classes to provide you with as much control as possible. These classes and markup are flexible though and can typically be remixed and extended with ease. For example, if your card has no flush content like images, feel free to put the `.card-block` class on the `.card` element to consolidate your markup.
Mark Otto's avatar
cards  
Mark Otto committed
19
20
21

{% example html %}
<div class="card">
22
23
24
25
26
27
  <img class="card-img-top" data-src="holder.js/100%x180/" alt="Card image cap">
  <div class="card-block">
    <h4 class="card-title">Card title</h4>
    <p class="card-text">Some quick example text to build on the card title and make up the bulk of the card's content.</p>
    <a href="#" class="btn btn-primary">Button</a>
  </div>
Mark Otto's avatar
cards  
Mark Otto committed
28
29
30
</div>
{% endexample %}

31
## Content types
Mark Otto's avatar
Mark Otto committed
32

33
Cards support a wide variety of content, including images, text, list groups, links, and more. Mix and match multiple content types to create the card you need.
Mark Otto's avatar
Mark Otto committed
34

35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
{% example html %}
<div class="card">
  <img class="card-img-top" data-src="holder.js/100%x180/?text=Image cap" alt="Card image cap">
  <div class="card-block">
    <h4 class="card-title">Card title</h4>
    <p class="card-text">Some quick example text to build on the card title and make up the bulk of the card's content.</p>
  </div>
  <ul class="list-group list-group-flush">
    <li class="list-group-item">Cras justo odio</li>
    <li class="list-group-item">Dapibus ac facilisis in</li>
    <li class="list-group-item">Vestibulum at eros</li>
  </ul>
  <div class="card-block">
    <a href="#" class="card-link">Card link</a>
    <a href="#" class="card-link">Another link</a>
  </div>
</div>
{% endexample %}
Mark Otto's avatar
Mark Otto committed
53

Mark Otto's avatar
Mark Otto committed
54
{% example html %}
55
56
57
58
59
<div class="card">
  <img class="card-img-top" data-src="holder.js/100%x180/?text=Image cap" alt="Card image cap">
  <div class="card-block">
    <p class="card-text">Some quick example text to build on the card title and make up the bulk of the card's content.</p>
  </div>
Mark Otto's avatar
Mark Otto committed
60
</div>
61
62
63
{% endexample %}

{% example html %}
64
65
66
67
68
<div class="card card-block">
  <h4 class="card-title">Card title</h4>
  <p class="card-text">Some quick example text to build on the card title and make up the bulk of the card's content.</p>
  <a href="#" class="card-link">Card link</a>
  <a href="#" class="card-link">Another link</a>
Mark Otto's avatar
Mark Otto committed
69
</div>
70
71
72
73
74
75
76
77
78
79
80
81
82
83
{% endexample %}

{% example html %}
<div class="card">
  <div class="card-block">
    <h4 class="card-title">Card title</h4>
    <h6 class="card-subtitle text-muted">Support card subtitle</h6>
  </div>
  <img data-src="holder.js/100%x180/?text=Image" alt="Card image">
  <div class="card-block">
    <p class="card-text">Some quick example text to build on the card title and make up the bulk of the card's content.</p>
    <a href="#" class="card-link">Card link</a>
    <a href="#" class="card-link">Another link</a>
  </div>
Mark Otto's avatar
Mark Otto committed
84
85
86
</div>
{% endexample %}

87
88
89
## Sizing

Cards are block-level by default, so they'll fill the available horizontal space. Constrain their widths via inline styles, our predefined grid classes, or with custom styles using our grid mixins.
Mark Otto's avatar
Mark Otto committed
90
91
92

Using the grid:

Mark Otto's avatar
Mark Otto committed
93
94
95
{% example html %}
<div class="row">
  <div class="col-sm-6">
96
    <div class="card card-block">
Mark Otto's avatar
Mark Otto committed
97
98
99
100
101
102
      <h3 class="card-title">Special title treatment</h3>
      <p class="card-text">With supporting text below as a natural lead-in to additional content.</p>
      <a href="#" class="btn btn-primary">Go somewhere</a>
    </div>
  </div>
  <div class="col-sm-6">
103
    <div class="card card-block">
Mark Otto's avatar
Mark Otto committed
104
105
106
107
108
109
110
111
      <h3 class="card-title">Special title treatment</h3>
      <p class="card-text">With supporting text below as a natural lead-in to additional content.</p>
      <a href="#" class="btn btn-primary">Go somewhere</a>
    </div>
  </div>
</div>
{% endexample %}

Mark Otto's avatar
Mark Otto committed
112
113
114
Using custom widths:

{% example html %}
115
<div class="card card-block" style="width: 20rem;">
Mark Otto's avatar
Mark Otto committed
116
117
118
119
120
121
122
  <h3 class="card-title">Special title treatment</h3>
  <p class="card-text">With supporting text below as a natural lead-in to additional content.</p>
  <a href="#" class="btn btn-primary">Go somewhere</a>
</div>
{% endexample %}

## Text alignment
Mark Otto's avatar
cards  
Mark Otto committed
123

Chris Rebert's avatar
Chris Rebert committed
124
You can quickly change the text alignment of any card—in its entirety or specific parts—with our [text align classes]().
Mark Otto's avatar
cards  
Mark Otto committed
125
126

{% example html %}
127
<div class="card card-block">
Mark Otto's avatar
cards  
Mark Otto committed
128
129
130
131
132
  <h4 class="card-title">Special title treatment</h4>
  <p class="card-text">With supporting text below as a natural lead-in to additional content.</p>
  <a href="#" class="btn btn-primary">Go somewhere</a>
</div>

133
<div class="card card-block text-center">
Mark Otto's avatar
cards  
Mark Otto committed
134
135
136
137
138
  <h4 class="card-title">Special title treatment</h4>
  <p class="card-text">With supporting text below as a natural lead-in to additional content.</p>
  <a href="#" class="btn btn-primary">Go somewhere</a>
</div>

139
<div class="card card-block text-right">
Mark Otto's avatar
cards  
Mark Otto committed
140
141
142
143
144
145
  <h4 class="card-title">Special title treatment</h4>
  <p class="card-text">With supporting text below as a natural lead-in to additional content.</p>
  <a href="#" class="btn btn-primary">Go somewhere</a>
</div>
{% endexample %}

Mark Otto's avatar
Mark Otto committed
146
## Header and footer
Mark Otto's avatar
cards  
Mark Otto committed
147
148
149
150
151
152
153
154

Add an optional header and/or footer within a card.

{% example html %}
<div class="card">
  <div class="card-header">
    Featured
  </div>
155
156
157
158
159
  <div class="card-block">
    <h4 class="card-title">Special title treatment</h4>
    <p class="card-text">With supporting text below as a natural lead-in to additional content.</p>
    <a href="#" class="btn btn-primary">Go somewhere</a>
  </div>
Mark Otto's avatar
cards  
Mark Otto committed
160
</div>
Mark Otto's avatar
Mark Otto committed
161
{% endexample %}
Mark Otto's avatar
cards  
Mark Otto committed
162

Mark Otto's avatar
Mark Otto committed
163
{% example html %}
Mark Otto's avatar
cards  
Mark Otto committed
164
165
166
167
<div class="card">
  <div class="card-header">
    Quote
  </div>
168
169
170
171
172
173
  <div class="card-block">
    <blockquote class="card-blockquote">
      <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer posuere erat a ante.</p>
      <footer>Someone famous in <cite title="Source Title">Source Title</cite></footer>
    </blockquote>
  </div>
Mark Otto's avatar
cards  
Mark Otto committed
174
175
176
177
178
179
180
181
</div>
{% endexample %}

{% example html %}
<div class="card text-center">
  <div class="card-header">
    Featured
  </div>
182
183
184
185
186
  <div class="card-block">
    <h4 class="card-title">Special title treatment</h4>
    <p class="card-text">With supporting text below as a natural lead-in to additional content.</p>
    <a href="#" class="btn btn-primary">Go somewhere</a>
  </div>
Mark Otto's avatar
cards  
Mark Otto committed
187
188
189
190
191
192
  <div class="card-footer text-muted">
    2 days ago
  </div>
</div>
{% endexample %}

Mark Otto's avatar
Mark Otto committed
193
## Image caps
Mark Otto's avatar
cards  
Mark Otto committed
194
195
196
197
198

Similar to headers and footers, cards include top and bottom image caps.

{% example html %}
<div class="card">
199
200
201
202
203
204
  <img class="card-img-top" data-src="holder.js/100%x180/" alt="Card image cap">
  <div class="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 content is a little bit longer.</p>
    <p class="card-text"><small class="text-muted">Last updated 3 mins ago</small></p>
  </div>
Mark Otto's avatar
cards  
Mark Otto committed
205
206
</div>
<div class="card">
207
208
209
210
211
212
  <div class="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 content is a little bit longer.</p>
    <p class="card-text"><small class="text-muted">Last updated 3 mins ago</small></p>
  </div>
  <img class="card-img-bottom" data-src="holder.js/100%x180/" alt="Card image cap">
Mark Otto's avatar
cards  
Mark Otto committed
213
214
215
</div>
{% endexample %}

Mark Otto's avatar
Mark Otto committed
216
## Image overlays
Mark Otto's avatar
cards  
Mark Otto committed
217

218
Turn an image into a card background and overlay your card's text. Depending on the image, you may or may not need `.card-inverse` (see below).
Mark Otto's avatar
cards  
Mark Otto committed
219
220
221

{% example html %}
<div class="card card-inverse">
Mark Otto's avatar
Mark Otto committed
222
  <img class="card-img" data-src="holder.js/100%x270/#55595c:#373a3c/text:Card image" alt="Card image">
Mark Otto's avatar
cards  
Mark Otto committed
223
224
225
226
227
228
229
230
  <div class="card-img-overlay">
    <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 content is a little bit longer.</p>
    <p class="card-text"><small class="text-muted">Last updated 3 mins ago</small></p>
  </div>
</div>
{% endexample %}

Mark Otto's avatar
Mark Otto committed
231
## Inverted text
Mark Otto's avatar
cards  
Mark Otto committed
232

233
234
Cards include a class for quickly toggling **the text color**. By default, cards use dark text and assume a light background. **Add `.card-inverse` for white text** and specify the `background-color` and `border-color` to go with it.

235
You can also use `.card-inverse` with the [contextual backgrounds variants](#background-variants).
Mark Otto's avatar
cards  
Mark Otto committed
236
237
238

{% example html %}
<div class="card card-inverse" style="background-color: #333; border-color: #333;">
239
240
241
242
243
  <div class="card-block">
    <h3 class="card-title">Special title treatment</h3>
    <p class="card-text">With supporting text below as a natural lead-in to additional content.</p>
    <a href="#" class="btn btn-primary">Button</a>
  </div>
Mark Otto's avatar
cards  
Mark Otto committed
244
245
246
</div>
{% endexample %}

Mark Otto's avatar
Mark Otto committed
247
## Background variants
Mark Otto's avatar
cards  
Mark Otto committed
248

249
Cards include their own variant classes for quickly changing the `background-color` and `border-color` of a card. **Darker colors require the use of `.card-inverse`.**
Mark Otto's avatar
cards  
Mark Otto committed
250
251
252

{% example html %}
<div class="card card-inverse card-primary text-center">
253
254
255
256
257
258
  <div class="card-block">
    <blockquote class="card-blockquote">
      <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer posuere erat a ante.</p>
      <footer>Someone famous in <cite title="Source Title">Source Title</cite></footer>
    </blockquote>
  </div>
Mark Otto's avatar
cards  
Mark Otto committed
259
260
</div>
<div class="card card-inverse card-success text-center">
261
262
263
264
265
266
  <div class="card-block">
    <blockquote class="card-blockquote">
      <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer posuere erat a ante.</p>
      <footer>Someone famous in <cite title="Source Title">Source Title</cite></footer>
    </blockquote>
  </div>
Mark Otto's avatar
cards  
Mark Otto committed
267
268
</div>
<div class="card card-inverse card-info text-center">
269
270
271
272
273
274
  <div class="card-block">
    <blockquote class="card-blockquote">
      <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer posuere erat a ante.</p>
      <footer>Someone famous in <cite title="Source Title">Source Title</cite></footer>
    </blockquote>
  </div>
Mark Otto's avatar
cards  
Mark Otto committed
275
276
</div>
<div class="card card-inverse card-warning text-center">
277
278
279
280
281
282
  <div class="card-block">
    <blockquote class="card-blockquote">
      <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer posuere erat a ante.</p>
      <footer>Someone famous in <cite title="Source Title">Source Title</cite></footer>
    </blockquote>
  </div>
Mark Otto's avatar
cards  
Mark Otto committed
283
284
</div>
<div class="card card-inverse card-danger text-center">
285
286
287
288
289
290
  <div class="card-block">
    <blockquote class="card-blockquote">
      <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer posuere erat a ante.</p>
      <footer>Someone famous in <cite title="Source Title">Source Title</cite></footer>
    </blockquote>
  </div>
Mark Otto's avatar
cards  
Mark Otto committed
291
292
293
</div>
{% endexample %}

Mark Otto's avatar
Mark Otto committed
294
## Groups
Mark Otto's avatar
cards  
Mark Otto committed
295

Heinrich Fenkart's avatar
Heinrich Fenkart committed
296
Use card groups to render cards as a single, attached element with equal width and height columns. By default, card groups use `display: table;` and `table-layout: fixed;` to achieve their uniform sizing. However, enabling [flexbox mode]({{ site.baseurl }}/getting-started/flexbox) can switch that to use `display: flex;` and provide the same effect.
Mark Otto's avatar
cards  
Mark Otto committed
297
298
299
300

{% example html %}
<div class="card-group">
  <div class="card">
301
302
303
304
305
306
    <img class="card-img-top" data-src="holder.js/100%x180/" alt="Card image cap">
    <div class="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 content is a little bit longer.</p>
      <p class="card-text"><small class="text-muted">Last updated 3 mins ago</small></p>
    </div>
Mark Otto's avatar
cards  
Mark Otto committed
307
308
  </div>
  <div class="card">
309
310
311
312
313
314
    <img class="card-img-top" data-src="holder.js/100%x180/" 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>
Mark Otto's avatar
cards  
Mark Otto committed
315
316
  </div>
  <div class="card">
317
318
319
320
321
322
    <img class="card-img-top" data-src="holder.js/100%x180/" alt="Card image cap">
    <div class="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>
Mark Otto's avatar
cards  
Mark Otto committed
323
324
325
326
  </div>
</div>
{% endexample %}

327
## Decks
Mark Otto's avatar
cards  
Mark Otto committed
328

329
330
Need a set of equal width and height cards that aren't attached to one another? Use card decks. By default, card decks require two wrapping elements: `.card-deck-wrapper` and a `.card-deck`. We use table styles for the sizing and the gutters on `.card-deck`. The `.card-deck-wrapper` is used to negative margin out the `border-spacing` on the `.card-deck`.

Heinrich Fenkart's avatar
Heinrich Fenkart committed
331
**ProTip!** If you enable [flexbox mode]({{ site.baseurl }}/getting-started/flexbox/), you can remove the `.card-deck-wrapper`.
Mark Otto's avatar
cards  
Mark Otto committed
332
333

{% example html %}
334
335
<div class="card-deck-wrapper">
  <div class="card-deck">
Mark Otto's avatar
cards  
Mark Otto committed
336
    <div class="card">
337
338
339
340
341
342
      <img class="card-img-top" data-src="holder.js/100%x200/" alt="Card image cap">
      <div class="card-block">
        <h4 class="card-title">Card title</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>
        <p class="card-text"><small class="text-muted">Last updated 3 mins ago</small></p>
      </div>
Mark Otto's avatar
cards  
Mark Otto committed
343
344
    </div>
    <div class="card">
345
346
347
348
349
350
      <img class="card-img-top" data-src="holder.js/100%x200/" 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>
Mark Otto's avatar
cards  
Mark Otto committed
351
352
    </div>
    <div class="card">
353
354
355
356
357
358
      <img class="card-img-top" data-src="holder.js/100%x200/" alt="Card image cap">
      <div class="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>
Mark Otto's avatar
cards  
Mark Otto committed
359
360
361
362
363
    </div>
  </div>
</div>
{% endexample %}

Mark Otto's avatar
Mark Otto committed
364
## Columns
Mark Otto's avatar
cards  
Mark Otto committed
365

366
367
368
Cards can be organized into [Masonry](http://masonry.desandro.com)-like columns with just CSS by wrapping them in `.card-columns`.

**Heads up!** This is **not available in IE9 and below** as they have no support for the `column` CSS properties.
Mark Otto's avatar
cards  
Mark Otto committed
369
370
371
372

{% example html %}
<div class="card-columns">
  <div class="card">
373
374
375
376
377
    <img class="card-img-top" data-src="holder.js/100%x160/" 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>
Mark Otto's avatar
cards  
Mark Otto committed
378
  </div>
379
  <div class="card card-block">
Mark Otto's avatar
cards  
Mark Otto committed
380
381
    <blockquote class="card-blockquote">
      <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer posuere erat a ante.</p>
382
383
384
385
386
      <footer>
        <small class="text-muted">
          Someone famous in <cite title="Source Title">Source Title</cite>
        </small>
      </footer>
Mark Otto's avatar
cards  
Mark Otto committed
387
388
389
    </blockquote>
  </div>
  <div class="card">
390
391
392
393
394
395
    <img class="card-img-top" data-src="holder.js/100%x160/" 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>
Mark Otto's avatar
cards  
Mark Otto committed
396
  </div>
397
  <div class="card card-block card-inverse card-primary text-center">
Mark Otto's avatar
cards  
Mark Otto committed
398
    <blockquote class="card-blockquote">
399
400
401
402
403
404
      <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>
Mark Otto's avatar
cards  
Mark Otto committed
405
406
    </blockquote>
  </div>
407
  <div class="card card-block text-center">
Mark Otto's avatar
cards  
Mark Otto committed
408
409
410
411
    <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>
412
413
414
415
  <div class="card">
    <img class="card-img" data-src="holder.js/100%x260/" alt="Card image">
  </div>
  <div class="card card-block text-right">
Mark Otto's avatar
cards  
Mark Otto committed
416
417
    <blockquote class="card-blockquote">
      <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer posuere erat a ante.</p>
418
419
420
421
422
      <footer>
        <small class="text-muted">
          Someone famous in <cite title="Source Title">Source Title</cite>
        </small>
      </footer>
Mark Otto's avatar
cards  
Mark Otto committed
423
424
    </blockquote>
  </div>
425
  <div class="card card-block">
Mark Otto's avatar
cards  
Mark Otto committed
426
427
428
429
430
431
    <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>
{% endexample %}