Welcome to The Coding College! Cards are one of the most versatile and essential components in Bootstrap 4. They allow you to organize content in a neat, visually appealing layout. Cards can contain headers, footers, images, buttons, and custom content, making them perfect for profiles, articles, products, and much more.
In this guide, we’ll dive deep into how to create, style, and customize cards using Bootstrap 4.
What Is a Card in Bootstrap 4?
A card in Bootstrap 4 is a flexible and extensible content container. Cards come with various pre-designed styles that support headers, footers, images, lists, and more.
Basic Card Example
To create a basic card, use the .card
class. The card’s content is wrapped inside .card-body
.
Example:
<div class="card" style="width: 18rem;">
<div class="card-body">
<h5 class="card-title">Card Title</h5>
<p class="card-text">This is a simple card with a title and some text.</p>
<a href="#" class="btn btn-primary">Go Somewhere</a>
</div>
</div>
Explanation:
.card
: The main card container..card-body
: A wrapper for the content inside the card..card-title
: Used for the card title..card-text
: For the text content.
Adding Images to Cards
Bootstrap 4 provides the .card-img-top
class to add an image at the top of the card.
Example:
<div class="card" style="width: 18rem;">
<img src="https://via.placeholder.com/150" class="card-img-top" alt="Card Image">
<div class="card-body">
<h5 class="card-title">Card Title</h5>
<p class="card-text">This card contains an image at the top.</p>
<a href="#" class="btn btn-primary">Learn More</a>
</div>
</div>
Cards with Headers and Footers
Add headers and footers to your cards using the .card-header
and .card-footer
classes.
Example:
<div class="card" style="width: 18rem;">
<div class="card-header">Card Header</div>
<div class="card-body">
<h5 class="card-title">Card Title</h5>
<p class="card-text">This card includes a header and footer.</p>
</div>
<div class="card-footer">Card Footer</div>
</div>
Card Layouts
Bootstrap 4 allows you to group multiple cards into a grid or stack them for responsive layouts.
Card Group
The .card-group
class groups multiple cards into a single row.
<div class="card-group">
<div class="card">
<img src="https://via.placeholder.com/150" class="card-img-top" alt="Image">
<div class="card-body">
<h5 class="card-title">Card 1</h5>
<p class="card-text">This is the first card.</p>
</div>
</div>
<div class="card">
<img src="https://via.placeholder.com/150" class="card-img-top" alt="Image">
<div class="card-body">
<h5 class="card-title">Card 2</h5>
<p class="card-text">This is the second card.</p>
</div>
</div>
</div>
Card Deck
Use the .card-deck
class to create cards with equal heights and responsive spacing.
<div class="card-deck">
<div class="card">
<img src="https://via.placeholder.com/150" class="card-img-top" alt="Image">
<div class="card-body">
<h5 class="card-title">Card 1</h5>
<p class="card-text">This is the first card in a deck.</p>
</div>
</div>
<div class="card">
<img src="https://via.placeholder.com/150" class="card-img-top" alt="Image">
<div class="card-body">
<h5 class="card-title">Card 2</h5>
<p class="card-text">This is the second card in a deck.</p>
</div>
</div>
</div>
Cards with List Groups
You can integrate list groups into cards using the .list-group
and .list-group-item
classes.
Example:
<div class="card" style="width: 18rem;">
<div class="card-header">Card with List Group</div>
<ul class="list-group list-group-flush">
<li class="list-group-item">Item 1</li>
<li class="list-group-item">Item 2</li>
<li class="list-group-item">Item 3</li>
</ul>
<div class="card-body">
<a href="#" class="btn btn-primary">Go Somewhere</a>
</div>
</div>
Card Colors
Bootstrap 4 provides contextual color classes to change the background color of cards. Use classes like .bg-primary
, .bg-danger
, .bg-success
, etc.
Example:
<div class="card text-white bg-primary mb-3" style="max-width: 18rem;">
<div class="card-header">Primary Card</div>
<div class="card-body">
<h5 class="card-title">Primary Card Title</h5>
<p class="card-text">This is a primary-colored card.</p>
</div>
</div>
Card Alignment
Use utility classes like .text-center
, .text-left
, or .text-right
to align text inside the card.
Example:
<div class="card" style="width: 18rem;">
<div class="card-body text-center">
<h5 class="card-title">Centered Card</h5>
<p class="card-text">The text in this card is center-aligned.</p>
</div>
</div>
Practical Example: Complete Card Layout
Here’s a full example of a card layout using various components:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Bootstrap 4 Cards</title>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css">
</head>
<body>
<div class="container my-5">
<h1 class="text-center text-primary">Bootstrap 4 Cards</h1>
<!-- Basic Card -->
<div class="card mb-3" style="width: 18rem;">
<img src="https://via.placeholder.com/150" class="card-img-top" alt="Image">
<div class="card-body">
<h5 class="card-title">Card Title</h5>
<p class="card-text">This is a simple card with an image, title, and text.</p>
<a href="#" class="btn btn-primary">Go Somewhere</a>
</div>
</div>
<!-- Card with List Group -->
<div class="card mb-3" style="width: 18rem;">
<div class="card-header">Card Header</div>
<ul class="list-group list-group-flush">
<li class="list-group-item">List Item 1</li>
<li class="list-group-item">List Item 2</li>
<li class="list-group-item">List Item 3</li>
</ul>
</div>
<!-- Card Deck -->
<div class="card-deck">
<div class="card">
<img src="https://via.placeholder.com/150" class="card-img-top" alt="Image">
<div class="card-body">
<h5 class="card-title">Card 1</h5>
<p class="card-text">This is the first card in a deck.</p>
</div>
</div>
<div class="card">
<img src="https://via.placeholder.com/150" class="card-img-top" alt="Image">
<div class="card-body">
<h5 class="card-title">Card 2</h5>
<p class="card-text">This is the second card in a deck.</p>
</div>
</div>
</div>
</div>
</body>
</html>
Conclusion
Bootstrap 4 Cards provide a powerful and flexible way to organize and display content. With options for images, headers, footers, contextual colors, and layout groups, you can easily create dynamic and visually appealing designs.
For more tutorials and resources, visit The Coding College and start building amazing projects today!