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
235
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.

You can also use `.card-inverse` with the [contextual backgrounds variants](#background-variations).
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

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](/layout/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
331
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`.

**ProTip!** If you enable [flexbox mode](/layout/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
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
367
368
369
370

{% example html %}
<div class="card-columns">
  <div class="card">
371
372
373
374
375
    <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
376
  </div>
377
  <div class="card card-block">
Mark Otto's avatar
cards  
Mark Otto committed
378
379
    <blockquote class="card-blockquote">
      <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer posuere erat a ante.</p>
380
381
382
383
384
      <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
385
386
387
    </blockquote>
  </div>
  <div class="card">
388
389
390
391
392
393
    <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
394
  </div>
395
  <div class="card card-block card-inverse card-primary text-center">
Mark Otto's avatar
cards  
Mark Otto committed
396
    <blockquote class="card-blockquote">
397
398
399
400
401
402
      <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
403
404
    </blockquote>
  </div>
405
  <div class="card card-block text-center">
Mark Otto's avatar
cards  
Mark Otto committed
406
407
408
409
    <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>
410
411
412
413
  <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
414
415
    <blockquote class="card-blockquote">
      <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer posuere erat a ante.</p>
416
417
418
419
420
      <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
421
422
    </blockquote>
  </div>
423
  <div class="card card-block">
Mark Otto's avatar
cards  
Mark Otto committed
424
425
426
427
428
429
    <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 %}