Master Bootstrap 5

Complete guide from beginner to advanced. Learn to build responsive, beautiful websites with Bootstrap 5.

50+

Components

100%

Responsive

5.3

Latest Version
index.html
<!-- Bootstrap 5 CDN -->
<link href="https://cdn.jsdelivr.net/npm/
bootstrap@5.3.0/dist/css/bootstrap.min.css" 
rel="stylesheet">

<div class="container">
  <div class="row">
    <div class="col-md-6">
      <h1>Hello Bootstrap!</h1>
      <button class="btn btn-primary">
        Click Me
      </button>
    </div>
  </div>
</div>

About Bootstrap

The world's most popular front-end framework

What is Bootstrap?

Bootstrap is a free, open-source front-end framework for creating websites and web applications. It contains HTML- and CSS-based design templates for typography, forms, buttons, navigation, and other interface components.

  • Developed by Twitter
  • First released in 2011
  • Currently at version 5.3
  • Used by millions of developers

Why Use Bootstrap?

Bootstrap makes front-end web development faster and easier. It's made for folks of all skill levels, devices of all shapes, and projects of all sizes.

Speed up development
Responsive design
Consistent design
Cross-browser compatibility

Key Features of Bootstrap

Bootstrap Key Features:

1. Responsive Grid System
   - 12-column grid
   - Flexbox support
   - Responsive breakpoints

2. Pre-built Components
   - Navigation bars
   - Cards, modals, carousels
   - Forms, buttons, alerts

3. Utilities
   - Spacing, colors, typography
   - Flexbox, positioning
   - Borders, shadows

4. JavaScript Plugins
   - Interactive components
   - No jQuery dependency
   - Vanilla JS implementation

5. Customization
   - Sass variables
   - Modular imports
   - Build tools support
Bootstrap Features Demo
Responsive Grid
Col 1
Col 2
Components
Badge

Bootstrap Advantages

Bootstrap Advantages:

✓ Time-Saving
   - Pre-built components
   - Rapid prototyping
   - Less CSS writing

✓ Consistency
   - Unified design language
   - Professional appearance
   - Brand consistency

✓ Responsive
   - Mobile-first approach
   - Flexible grid system
   - Breakpoint control

✓ Cross-browser
   - Works on all browsers
   - No vendor prefixes needed
   - Tested compatibility

✓ Community
   - Large user base
   - Extensive documentation
   - Third-party resources

✓ Customizable
   - Sass variables
   - Modular structure
   - Theme support
Advantages in Action
Fast Development: Build websites 50% faster
85% Time Saved

Mobile Ready

Beautiful UI

Customizable

Common Use Cases

Bootstrap Use Cases:

🌐 Websites
   - Corporate sites
   - Portfolio websites
   - Landing pages
   - Blogs

🛒 E-commerce
   - Product pages
   - Shopping carts
   - Checkout flows
   - Admin dashboards

📱 Web Applications
   - SaaS platforms
   - Admin panels
   - Dashboards
   - Analytics tools

🎨 Prototypes
   - Quick mockups
   - MVP development
   - Design systems
   - Component libraries

📧 Email Templates
   - Responsive emails
   - Marketing campaigns
   - Newsletters

🔧 Admin Templates
   - Backend interfaces
   - Control panels
   - Management systems

Installation Process

Multiple ways to include Bootstrap in your project

Bootstrap CDN Installation

Quickest way to get started - just add links to your HTML

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Bootstrap CDN</title>
    
    <!-- Bootstrap CSS CDN -->
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" 
          rel="stylesheet">
    
    <!-- Bootstrap Icons CDN -->
    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.11.0/font/bootstrap-icons.css">
</head>
<body>
    <div class="container">
        <h1>Hello, Bootstrap!</h1>
        <button class="btn btn-primary">Click Me</button>
    </div>
    
    <!-- Bootstrap JS Bundle CDN -->
    <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js"></script>
</body>
</html>
CDN Result

Hello, Bootstrap!

Download Bootstrap

Download compiled CSS and JS files for offline use

Project Structure:
my-project/
├── css/
│   ├── bootstrap.min.css
│   └── bootstrap.min.css.map
├── js/
│   ├── bootstrap.bundle.min.js
│   └── bootstrap.bundle.min.js.map
└── index.html

HTML Usage:
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Bootstrap Local</title>
    
    <!-- Local Bootstrap CSS -->
    <link href="css/bootstrap.min.css" rel="stylesheet">
</head>
<body>
    <div class="container">
        <h1>Local Bootstrap</h1>
    </div>
    
    <!-- Local Bootstrap JS -->
    <script src="js/bootstrap.bundle.min.js"></script>
</body>
</html>
Download Steps
  1. Visit getbootstrap.com
  2. Click "Download" button
  3. Extract ZIP file
  4. Link to local files
Best for: Offline development, full control

Package Manager Installation

Install Bootstrap using npm, yarn, or other package managers

# Install Bootstrap via npm
npm install bootstrap@5.3.0

# Install Bootstrap via yarn
yarn add bootstrap@5.3.0

# Install Bootstrap via Composer
composer require twbs/bootstrap:5.3.0

# Project Structure after npm install:
node_modules/
└── bootstrap/
    ├── dist/
    │   ├── css/
    │   └── js/
    ├── scss/
    └── js/

# Import in your SCSS file:
@import "../node_modules/bootstrap/scss/bootstrap";

# Import in your JavaScript file:
import 'bootstrap';

# Or import specific components:
import { Tooltip, Toast, Popover } from 'bootstrap';
Package Manager Benefits
✓ Version Control

Easy version management

✓ Updates

Simple update process

Source Files Installation

Download source files for customization with Sass

// Custom Bootstrap Build
// Import required Bootstrap files

// 1. Functions
@import "bootstrap/functions";

// 2. Variables (override default variables)
 $primary: #667eea;
 $secondary: #764ba2;
 $success: #84fab0;
 $info: #30cfd0;
 $warning: #fee140;
 $danger: #f5576c;

// 3. Maps
@import "bootstrap/variables";
@import "bootstrap/variables-dark";

// 4. Mixins
@import "bootstrap/mixins";

// 5. Utilities
@import "bootstrap/utilities";

// 6. Components (import only what you need)
@import "bootstrap/root";
@import "bootstrap/reboot";
@import "bootstrap/type";
@import "bootstrap/images";
@import "bootstrap/containers";
@import "bootstrap/grid";
@import "bootstrap/buttons";
@import "bootstrap/card";

// Compile with Sass:
// sass --watch input.scss output.css
Source Files Advantages
  • Full customization control
  • Smaller file sizes (tree shaking)
  • Custom variables and mixins
  • Advanced theming capabilities
Requires Sass compiler setup

Custom Theming

Personalize Bootstrap with custom colors, fonts, and styles

Color Customization

Override Bootstrap's default color scheme

// _custom-variables.scss

// Override default theme colors
 $primary: #667eea;
 $secondary: #764ba2;
 $success: #84fab0;
 $info: #30cfd0;
 $warning: #fee140;
 $danger: #f5576c;
 $light: #f8f9fa;
 $dark: #0f0f23;

// Create custom colors
 $custom-colors: (
  "purple": #6f42c1,
  "indigo": #6610f2,
  "pink": #d63384,
  "teal": #20c997,
  "orange": #fd7e14
);

// Merge with default theme colors
 $theme-colors: map-merge($theme-colors, $custom-colors);

// Override gradient colors
 $gradient: linear-gradient(180deg, rgba($primary, .15), rgba($primary, 0));

// Import Bootstrap
@import "bootstrap/scss/bootstrap";
Custom Colors Preview
Primary
Secondary
Success
Info

Font Customization

Customize typography and fonts

// Font Customization

// Import Google Fonts
@import url('https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&display=swap');

// Font family
 $font-family-sans-serif: 'Inter', -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
 $font-family-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;

// Font sizes
 $font-size-base: 1rem;
 $font-sizes: (
  1: $font-size-base * 2.5,
  2: $font-size-base * 2,
  3: $font-size-base * 1.75,
  4: $font-size-base * 1.5,
  5: $font-size-base * 1.25,
  6: $font-size-base
);

// Font weights
 $font-weight-lighter: lighter;
 $font-weight-light: 300;
 $font-weight-normal: 400;
 $font-weight-medium: 500;
 $font-weight-semibold: 600;
 $font-weight-bold: 700;
 $font-weight-bolder: bolder;

// Line heights
 $line-height-base: 1.5;
 $line-height-sm: 1.25;
 $line-height-lg: 2;

// Import Bootstrap after customization
@import "bootstrap/scss/bootstrap";
Custom Typography

Heading 1 - Custom Font

Paragraph with custom font family and improved readability.

Muted text with custom styling

Component Themes

Customize individual Bootstrap components

// Component Customization

// Buttons
 $btn-padding-y: .75rem;
 $btn-padding-x: 1.5rem;
 $btn-font-weight: 500;
 $btn-border-radius: 50px;
 $btn-border-width: 2px;

// Custom button styles
.btn-gradient {
    background: linear-gradient(135deg, $primary 0%, $secondary 100%);
    border: none;
    color: white;
    font-weight: 600;
    padding: $btn-padding-y $btn-padding-x;
    border-radius: $btn-border-radius;
    transition: all 0.3s ease;
    
    &:hover {
        transform: translateY(-2px);
        box-shadow: 0 10px 30px rgba($primary, 0.3);
    }
}

// Cards
 $card-spacer-y: 1.5rem;
 $card-spacer-x: 1.5rem;
 $card-border-radius: 1rem;
 $card-box-shadow: 0 10px 40px rgba(0, 0, 0, 0.1);

.card-hover {
    transition: all 0.3s ease;
    
    &:hover {
        transform: translateY(-10px);
        box-shadow: 0 20px 60px rgba(0, 0, 0, 0.15);
    }
}

// Modals
 $modal-content-border-radius: 1rem;
 $modal-header-border-width: 0;
 $modal-footer-border-width: 0;
Custom Components
Hover Card

Hover over me to see the effect

Dark Mode Implementation

Implement dark mode with Bootstrap

// Dark Mode Variables

 $body-bg: $dark;
 $body-color: $gray-100;

// Dark mode colors
 $dark-colors: (
  "primary": #667eea,
  "secondary": #764ba2,
  "success": #84fab0,
  "info": #30cfd0,
  "warning": #fee140,
  "danger": #f5576c,
  "light": #212529,
  "dark": #ffffff
);

// Dark mode component overrides
[data-bs-theme="dark"] {
    .card {
        background-color: $gray-800;
        border-color: $gray-700;
    }
    
    .btn-light {
        background-color: $gray-700;
        border-color: $gray-600;
        color: $white;
    }
    
    .form-control {
        background-color: $gray-700;
        border-color: $gray-600;
        color: $white;
        
        &:focus {
            background-color: $gray-600;
            border-color: $primary;
            color: $white;
        }
    }
}

// Theme toggle functionality
.theme-toggle {
    position: fixed;
    top: 20px;
    right: 20px;
    z-index: 1000;
}
Dark Mode Toggle
Preview Card

This card will change in dark mode

Bootstrap Components

Learn to use Bootstrap's extensive component library

Basic Buttons

Bootstrap's button styles for actions in forms, dialogs, and more

<!-- Button Colors -->
<button type="button" class="btn btn-primary">Primary</button>
<button type="button" class="btn btn-secondary">Secondary</button>
<button type="button" class="btn btn-success">Success</button>
<button type="button" class="btn btn-danger">Danger</button>
<button type="button" class="btn btn-warning">Warning</button>
<button type="button" class="btn btn-info">Info</button>
<button type="button" class="btn btn-light">Light</button>
<button type="button" class="btn btn-dark">Dark</button>
<button type="button" class="btn btn-link">Link</button>

<!-- Outline Buttons -->
<button type="button" class="btn btn-outline-primary">Primary</button>
<button type="button" class="btn btn-outline-secondary">Secondary</button>
<button type="button" class="btn btn-outline-success">Success</button>

<!-- Button Sizes -->
<button type="button" class="btn btn-primary btn-lg">Large button</button>
<button type="button" class="btn btn-primary">Default button</button>
<button type="button" class="btn btn-primary btn-sm">Small button</button>

<!-- Block Buttons -->
<div class="d-grid gap-2">
  <button class="btn btn-primary" type="button">Block level button</button>
  <button class="btn btn-outline-secondary" type="button">Block level button</button>
</div>
Button Colors
Button Sizes

Button Groups

Group a series of buttons together on a single line

<!-- Basic Button Group -->
<div class="btn-group" role="group">
  <button type="button" class="btn btn-outline-primary">Left</button>
  <button type="button" class="btn btn-outline-primary">Middle</button>
  <button type="button" class="btn btn-outline-primary">Right</button>
</div>

<!-- Checkbox and Radio Button Groups -->
<div class="btn-group" role="group">
  <input type="checkbox" class="btn-check" id="btncheck1" autocomplete="off">
  <label class="btn btn-outline-primary" for="btncheck1">Checkbox 1</label>
  
  <input type="checkbox" class="btn-check" id="btncheck2" autocomplete="off">
  <label class="btn btn-outline-primary" for="btncheck2">Checkbox 2</label>
</div>

<div class="btn-group" role="group">
  <input type="radio" class="btn-check" name="btnradio" id="btnradio1" autocomplete="off" checked>
  <label class="btn btn-outline-primary" for="btnradio1">Radio 1</label>
  
  <input type="radio" class="btn-check" name="btnradio" id="btnradio2" autocomplete="off">
  <label class="btn btn-outline-primary" for="btnradio2">Radio 2</label>
</div>

<!-- Vertical Button Group -->
<div class="btn-group-vertical" role="group">
  <button type="button" class="btn btn-dark">Button</button>
  <button type="button" class="btn btn-dark">Button</button>
  <div class="btn-group" role="group">
    <button type="button" class="btn btn-dark dropdown-toggle" data-bs-toggle="dropdown">
      Dropdown
    </button>
    <ul class="dropdown-menu">
      <li><a class="dropdown-item" href="#">Dropdown link</a></li>
    </ul>
  </div>
</div>
Button Group
Checkbox Group

Loading Buttons

Buttons with loading states and spinners

<!-- Buttons with Spinners -->
<button class="btn btn-primary" type="button" disabled>
  <span class="spinner-border spinner-border-sm" role="status" aria-hidden="true"></span>
  <span class="visually-hidden">Loading...</span>
</button>

<button class="btn btn-primary" type="button" disabled>
  <span class="spinner-border spinner-border-sm" role="status" aria-hidden="true"></span>
  Loading...
</button>

<button class="btn btn-primary" type="button" disabled>
  <span class="spinner-grow spinner-grow-sm" role="status" aria-hidden="true"></span>
  <span class="visually-hidden">Loading...</span>
</button>

<!-- Interactive Loading Button -->
<button class="btn btn-primary" type="button" id="loadingBtn">
  <span id="btnText">Click to Load</span>
  <span id="btnSpinner" class="spinner-border spinner-border-sm ms-2 d-none" role="status"></span>
</button>

<script>
document.getElementById('loadingBtn').addEventListener('click', function() {
  const btnText = document.getElementById('btnText');
  const btnSpinner = document.getElementById('btnSpinner');
  const btn = this;
  
  btn.disabled = true;
  btnText.textContent = 'Loading...';
  btnSpinner.classList.remove('d-none');
  
  setTimeout(() => {
    btn.disabled = false;
    btnText.textContent = 'Click to Load';
    btnSpinner.classList.add('d-none');
  }, 2000);
});
</script>
Loading States

Icon Buttons

Buttons with icons for better visual communication

<!-- Icon Buttons -->
<button type="button" class="btn btn-primary">
  <i class="bi bi-download me-2"></i>Download
</button>

<button type="button" class="btn btn-outline-secondary">
  <i class="bi bi-gear me-2"></i>Settings
</button>

<!-- Icon Only Buttons -->
<button type="button" class="btn btn-primary btn-lg">
  <i class="bi bi-play-fill"></i>
</button>

<button type="button" class="btn btn-outline-danger">
  <i class="bi bi-trash"></i>
</button>

<!-- Floating Action Button -->
<button type="button" class="btn btn-primary btn-lg position-fixed bottom-0 end-0 m-3 rounded-circle" style="width: 60px; height: 60px;">
  <i class="bi bi-plus-lg"></i>
</button>

<!-- Social Media Buttons -->
<div class="d-flex gap-2">
  <button type="button" class="btn btn-primary">
    <i class="bi bi-facebook"></i>
  </button>
  <button type="button" class="btn btn-info">
    <i class="bi bi-twitter"></i>
  </button>
  <button type="button" class="btn btn-danger">
    <i class="bi bi-youtube"></i>
  </button>
  <button type="button" class="btn btn-dark">
    <i class="bi bi-github"></i>
  </button>
</div>
Icon Buttons
Social Buttons

Basic Grid System

Bootstrap's powerful 12-column grid system

<!-- Equal Width Columns -->
<div class="container">
  <div class="row">
    <div class="col">
      Column 1
    </div>
    <div class="col">
      Column 2
    </div>
    <div class="col">
      Column 3
    </div>
  </div>
</div>

<!-- Column Widths -->
<div class="container">
  <div class="row">
    <div class="col-4">
      Column with width 4
    </div>
    <div class="col-8">
      Column with width 8
    </div>
  </div>
</div>

<!-- Variable Width Content -->
<div class="container">
  <div class="row justify-content-md-center">
    <div class="col col-lg-2">
      1 of 3
    </div>
    <div class="col-md-auto">
      Variable width content
    </div>
    <div class="col col-lg-2">
      3 of 3
    </div>
  </div>
</div>
Equal Width Columns
Column 1
Column 2
Column 3
Column Widths
col-4
col-8

Responsive Grid

Build responsive layouts with breakpoint-specific columns

<!-- Responsive Grid -->
<div class="container">
  <!-- Stack the columns on mobile by making one full-width and the other half-width -->
  <div class="row">
    <div class="col-12 col-md-8">.col-12 .col-md-8</div>
    <div class="col-6 col-md-4">.col-6 .col-md-4</div>
  </div>
  
  <!-- Columns start at 50% wide on mobile and bump up to 33.3% wide on desktop -->
  <div class="row">
    <div class="col-6 col-md-4">.col-6 .col-md-4</div>
    <div class="col-6 col-md-4">.col-6 .col-md-4</div>
    <div class="col-6 col-md-4">.col-6 .col-md-4</div>
  </div>
  
  <!-- Columns are always 50% wide, on mobile and desktop -->
  <div class="row">
    <div class="col-6">.col-6</div>
    <div class="col-6">.col-6</div>
  </div>
</div>

<!-- Breakpoints: -->
<!-- xs: <576px -->
<!-- sm: ≥576px -->
<!-- md: ≥768px -->
<!-- lg: ≥992px -->
<!-- xl: ≥1200px -->
<!-- xxl: ≥1400px -->
Responsive Grid Demo
.col-12 .col-md-8
.col-6 .col-md-4
.col-6 .col-md-4
.col-6 .col-md-4
.col-6 .col-md-4

Offset & Alignment

Control column positioning and alignment

<!-- Offset Columns -->
<div class="container">
  <div class="row">
    <div class="col-md-4">.col-md-4</div>
    <div class="col-md-4 offset-md-4">.col-md-4 .offset-md-4</div>
  </div>
  <div class="row">
    <div class="col-md-3 offset-md-3">.col-md-3 .offset-md-3</div>
    <div class="col-md-3 offset-md-3">.col-md-3 .offset-md-3</div>
  </div>
</div>

<!-- Row Alignment -->
<div class="container">
  <!-- Vertical Alignment -->
  <div class="row align-items-start">
    <div class="col">
      One of three columns
    </div>
    <div class="col">
      One of three columns
    </div>
    <div class="col">
      One of three columns
    </div>
  </div>
  
  <!-- Horizontal Alignment -->
  <div class="row justify-content-center">
    <div class="col-4">
      One of two columns
    </div>
    <div class="col-4">
      One of two columns
    </div>
  </div>
</div>
Offset Columns
.col-md-4
.col-md-4 .offset-md-4
Horizontal Alignment
Centered
Columns

Nesting & Ordering

Nest grids and control column order

<!-- Nested Grids -->
<div class="container">
  <div class="row">
    <div class="col-sm-9">
      Level 1: .col-sm-9
      <div class="row">
        <div class="col-8 col-sm-6">
          Level 2: .col-8 .col-sm-6
        </div>
        <div class="col-4 col-sm-6">
          Level 2: .col-4 .col-sm-6
        </div>
      </div>
    </div>
  </div>
</div>

<!-- Column Ordering -->
<div class="container">
  <div class="row">
    <div class="col">
      First in DOM, no order applied
    </div>
    <div class="col order-5">
      Second in DOM, with a larger order
    </div>
    <div class="col order-1">
      Third in DOM, with an order of 1
    </div>
  </div>
</div>

<!-- Responsive Ordering -->
<div class="container">
  <div class="row">
    <div class="col order-last order-md-first">
      First, but last on medium and up
    </div>
    <div class="col">
      Second, but unchanged
    </div>
    <div class="col order-first order-md-last">
      Third, but first on medium and up
    </div>
  </div>
</div>
Column Ordering
First
Second (order-5)
Third (order-1)

Basic Cards

Flexible and extensible content container

<!-- Basic Card -->
<div class="card" style="width: 18rem;">
  <img src="..." class="card-img-top" alt="...">
  <div class="card-body">
    <h5 class="card-title">Card title</h5>
    <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">Go somewhere</a>
  </div>
</div>

<!-- Card with List Group -->
<div class="card" style="width: 18rem;">
  <div class="card-header">Featured</div>
  <ul class="list-group list-group-flush">
    <li class="list-group-item">An item</li>
    <li class="list-group-item">A second item</li>
    <li class="list-group-item">A third item</li>
  </ul>
  <div class="card-footer">
    <small class="text-muted">Last updated 3 mins ago</small>
  </div>
</div>

<!-- Card with Header and Footer -->
<div class="card">
  <div class="card-header">
    Quote
  </div>
  <div class="card-body">
    <blockquote class="blockquote mb-0">
      <p>A well-known quote, contained in a blockquote element.</p>
      <footer class="blockquote-footer">Someone famous in <cite title="Source Title">Source Title</cite></footer>
    </blockquote>
  </div>
</div>
Card image
Card Title

Some quick example text to build on the card title.

Go somewhere
Featured
  • An item
  • A second item
  • A third item

Card Layouts

Various card layout options

<!-- Grid Cards -->
<div class="row">
  <div class="col-sm-6">
    <div class="card">
      <div class="card-body">
        <h5 class="card-title">Special title treatment</h5>
        <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>
  <div class="col-sm-6">
    <div class="card">
      <div class="card-body">
        <h5 class="card-title">Special title treatment</h5>
        <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>
</div>

<!-- Horizontal Card -->
<div class="card mb-3" style="max-width: 540px;">
  <div class="row g-0">
    <div class="col-md-4">
      <img src="..." class="img-fluid rounded-start" alt="...">
    </div>
    <div class="col-md-8">
      <div class="card-body">
        <h5 class="card-title">Card title</h5>
        <p class="card-text">This is a wider card with 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>
</div>
Grid Card

With supporting text below as a natural lead-in.

Go somewhere
Grid Card

With supporting text below as a natural lead-in.

Go somewhere

Card Groups

Group cards together with equal height and width

<!-- Card Group -->
<div class="card-group">
  <div class="card">
    <img src="..." class="card-img-top" alt="...">
    <div class="card-body">
      <h5 class="card-title">Card title</h5>
      <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>
  <div class="card">
    <img src="..." class="card-img-top" alt="...">
    <div class="card-body">
      <h5 class="card-title">Card title</h5>
      <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">
    <img src="..." class="card-img-top" alt="...">
    <div class="card-body">
      <h5 class="card-title">Card title</h5>
      <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>
</div>
Card image
Card title

This is a wider card with supporting text.

Last updated 3 mins ago

Card image
Card title

This card has supporting text below.

Last updated 3 mins ago

Interactive Cards

Cards with hover effects and interactions

<!-- Hover Card -->
<div class="card hover-lift">
  <img src="..." class="card-img-top" alt="...">
  <div class="card-body">
    <h5 class="card-title">Hover Card</h5>
    <p class="card-text">Hover over this card to see the lift effect.</p>
    <a href="#" class="btn btn-primary">Learn More</a>
  </div>
</div>

<!-- Card with Overlay -->
<div class="card bg-dark text-white">
  <img src="..." class="card-img" alt="...">
  <div class="card-img-overlay">
    <h5 class="card-title">Card title</h5>
    <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>
    <a href="#" class="btn btn-primary">Learn More</a>
  </div>
</div>

<!-- Custom Styles -->
<style>
.hover-lift {
  transition: all 0.3s ease;
}
.hover-lift:hover {
  transform: translateY(-10px);
  box-shadow: 0 20px 40px rgba(0,0,0,0.1);
}
</style>
Card image
Interactive Card

Hover over this card to see the lift effect.

Learn More

Animate.css Integration

Add animations to Bootstrap components

<!-- Include Animate.css --> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/animate.css/4.1.1/animate.min.css"/> <!-- Animated Elements --> <h1 class="animate__animated animate__bounce">An animated element</h1> <div class="card animate__animated animate__fadeInUp"> Card content </div> <button class="btn btn-primary animate__animated animate__pulse animate__infinite"> Pulsing Button </button> <!-- JavaScript for dynamic animations --> <script> const element = document.querySelector('.my-element'); element.classList.add('animate__animated', 'animate__bounceOutLeft'); element.addEventListener('animationend', () => { // do something after animation ends }); </script>

Bouncing Title

Animated Card

This card fades in from below.

Transitions

Use Bootstrap’s transition utilities to add smooth interactive effects to components.

<!-- Bootstrap Transition Example -->
<div class="transition p-3 bg-light border rounded" id="fadeBox">
  Hover to see transition effect
</div>

<style>
.transition {
  transition: all 0.4s ease-in-out;
}
.transition:hover {
  background-color: #0d6efd;
  color: #fff;
  transform: scale(1.05);
}
</style>
Hover to see transition effect

Scroll Animations

Use Bootstrap’s scrollspy and fade utilities to animate sections as you scroll through content.

<!-- Bootstrap Scroll Animation (Fade In) -->
<div data-bs-spy="scroll" data-bs-target="#scrollspy" data-bs-offset="0" tabindex="0" class="scroll-container border rounded p-3" style="height: 200px; overflow-y: scroll;">
  <div class="fade show p-3 mb-3 bg-light border">Section 1</div>
  <div class="fade show p-3 mb-3 bg-light border">Section 2</div>
  <div class="fade show p-3 mb-3 bg-light border">Section 3</div>
  <div class="fade show p-3 mb-3 bg-light border">Section 4</div>
</div>

<!-- Script to toggle fade effect when scrolling -->
<script>
document.querySelector('.scroll-container').addEventListener('scroll', e => {
  document.querySelectorAll('.fade').forEach(el => {
    const rect = el.getBoundingClientRect();
    if (rect.top < window.innerHeight - 50) {
      el.classList.add('show');
    } else {
      el.classList.remove('show');
    }
  });
});
</script>
Section 1
Section 2
Section 3
Section 4

Loading Animations

Use Bootstrap spinners to indicate loading states in your interface.

<!-- Bootstrap Spinners -->
<div class="d-flex justify-content-center align-items-center gap-3">
  <div class="spinner-border text-primary" role="status">
    <span class="visually-hidden">Loading...</span>
  </div>

  <div class="spinner-grow text-success" role="status">
    <span class="visually-hidden">Loading...</span>
  </div>

  <div class="spinner-border text-danger" style="width: 2rem; height: 2rem;" role="status">
    <span class="visually-hidden">Loading...</span>
  </div>
</div>

<!-- Buttons with Spinners -->
<button class="btn btn-primary mt-3" type="button" disabled>
  <span class="spinner-border spinner-border-sm" role="status" aria-hidden="true"></span>
  Loading...
</button>

<button class="btn btn-success mt-3" type="button" disabled>
  <span class="spinner-grow spinner-grow-sm" role="status" aria-hidden="true"></span>
  Processing
</button>
Loading...
Loading...
Loading...

Bootstrap 5 Cheat Sheet

Quick reference for Bootstrap classes and utilities

Essential Bootstrap Classes

.container
Fixed-width responsive container
.container-fluid
Full-width container spanning entire viewport
.row
Horizontal group of columns
.col
Auto layout column
.col-*
Set specific column width (e.g. .col-6)
.col-md-*
Responsive column for medium devices
.g-*
Set gutter spacing between columns
.offset-*
Add left margin offset to column
.order-*
Change order of columns
.d-flex
Enable flexbox display
.d-grid
Enable CSS grid display
.d-none
Hide element
.d-block
Display as block
.d-inline
Display as inline
.d-inline-block
Display as inline-block
.d-sm-none
Hide on small devices
.d-md-block
Show block on medium devices
.m-*
Set margin (0–5)
.p-*
Set padding (0–5)
.mt-*
Margin top
.mb-*
Margin bottom
.ms-*
Margin start (left in LTR)
.me-*
Margin end (right in LTR)
.pt-*
Padding top
.pb-*
Padding bottom
.ps-*
Padding start
.pe-*
Padding end
.mx-auto
Center horizontally
.my-auto
Center vertically (flex/grid)
.h1 – .h6
Bootstrap heading sizes
.display-1 – .display-6
Large display headings
.lead
Lead paragraph text
.fw-bold
Bold text
.fw-light
Light text
.fst-italic
Italic text
.text-center
Center align text
.text-start
Left align text
.text-end
Right align text
.text-uppercase
Uppercase text
.text-muted
Muted text color
.text-primary
Primary color text
.text-danger
Red/danger text color
.bg-primary
Primary background color
.bg-success
Success background color
.bg-danger
Danger background color
.bg-warning
Warning background color
.bg-info
Info background color
.bg-light
Light background
.bg-dark
Dark background
.text-bg-primary
Combined text and background style
.btn
Base button class
.btn-primary
Primary button
.btn-outline-primary
Outlined primary button
.btn-sm
Small button
.btn-lg
Large button
.btn-group
Group multiple buttons
.card
Card container
.card-body
Main card content area
.card-title
Card title
.card-text
Card text content
.card-header
Header area of card
.card-footer
Footer area of card
.card-img-top
Image on top of card
.alert
Alert box
.alert-primary
Primary alert
.badge
Badge label
.badge.bg-danger
Red badge
.progress
Progress bar container
.progress-bar
Progress indicator
.navbar
Navigation bar container
.navbar-brand
Brand name/logo
.navbar-nav
Nav list inside navbar
.nav-item
Navigation item
.nav-link
Link inside nav
.navbar-toggler
Collapse button for navbar
.collapse
Collapse behavior container
.modal
Modal dialog box
.modal-dialog
Wrapper for modal content
.modal-content
Modal inner content
.modal-header
Header of modal
.modal-footer
Footer of modal
.offcanvas
Sidebar overlay component
.toast
Notification toast
.form-control
Text input or select element
.form-check
Checkbox or radio container
.form-check-input
Checkbox or radio input
.form-label
Label for form input
.input-group
Wraps inputs with buttons or addons
.input-group-text
Text addon inside input group
.form-floating
Floating label input
.img-fluid
Responsive image
.rounded
Rounded corners
.rounded-circle
Circle-shaped image
.figure
Container for image and caption
.figure-caption
Caption for a figure
.table
Base table styling
.table-striped
Alternate row stripes
.table-hover
Highlight rows on hover
.list-group
List group container
.list-group-item
Individual list item
.shadow
Add default box shadow
.shadow-lg
Larger box shadow
.rounded-pill
Rounded pill shape
.opacity-75
Set element opacity
.position-relative
Position element relative
.position-absolute
Position element absolute
.top-0
Align to top
.bottom-0
Align to bottom
.start-0
Align to left/start
.end-0
Align to right/end
.z-3
High z-index stacking
.overflow-hidden
Hide overflow content
.ratio-16x9
Responsive video ratio
.visually-hidden
Hide visually but accessible to screen readers
.container
Responsive fixed width container
.container-fluid
Full width container
.row
Row in grid system
.col
Column in grid system
.col-6
Column with width 50%
.col-md-4
Medium column with 33% width
.card
Card component
.card-body
Card content container
.card-title
Card title styling
.card-text
Card text styling
.btn
Button component
.btn-primary
Primary styled button
.btn-secondary
Secondary styled button
.btn-success
Success styled button
.btn-danger
Danger styled button
.btn-warning
Warning styled button
.btn-info
Info styled button
.btn-light
Light styled button
.btn-dark
Dark styled button
.btn-outline-primary
Primary outlined button
.btn-outline-secondary
Secondary outlined button
.btn-outline-success
Success outlined button
.btn-outline-danger
Danger outlined button
.btn-outline-warning
Warning outlined button
.btn-outline-info
Info outlined button
.btn-outline-light
Light outlined button
.btn-outline-dark
Dark outlined button
.badge
Badge component
.badge-primary
Primary badge
.badge-secondary
Secondary badge
.badge-success
Success badge
.badge-danger
Danger badge
.badge-warning
Warning badge
.badge-info
Info badge
.badge-light
Light badge
.badge-dark
Dark badge
.alert
Alert component
.alert-primary
Primary alert
.alert-secondary
Secondary alert
.alert-success
Success alert
.alert-danger
Danger alert
.alert-warning
Warning alert
.alert-info
Info alert
.alert-light
Light alert
.alert-dark
Dark alert
.dropdown
Dropdown container
.dropdown-toggle
Dropdown toggle button
.dropdown-menu
Dropdown menu
.dropdown-item
Dropdown item
.dropdown-divider
Dropdown divider
.modal
Modal container
.modal-dialog
Modal dialog
.modal-content
Modal content
.modal-header
Modal header
.modal-body
Modal body
.modal-footer
Modal footer
.form-control
Form input control
.form-label
Form label
.form-check
Checkbox container
.form-check-input
Checkbox input
.form-check-label
Checkbox label
.form-select
Select dropdown
.input-group
Input group wrapper
.input-group-text
Input group text
.navbar
Navigation bar
.navbar-brand
Navbar brand/logo
.navbar-nav
Navbar navigation links
.nav-item
Navbar item
.nav-link
Navbar link
.pagination
Pagination container
.page-item
Pagination item
.page-link
Pagination link
.tooltip
Tooltip container
.popover
Popover container
.accordion
Accordion container
.accordion-item
Accordion item
.accordion-header
Accordion header
.accordion-body
Accordion body
.collapse
Collapsible element
.carousel
Carousel container
.carousel-inner
Carousel inner wrapper
.carousel-item
Single carousel item
.carousel-caption
Carousel caption text
.carousel-control-prev
Previous button control
.carousel-control-next
Next button control
.spinner-border
Border spinner loader
.spinner-grow
Growing spinner loader
.progress
Progress bar container
.progress-bar
Progress bar
.list-group
List group container
.list-group-item
List group item
.breadcrumb
Breadcrumb container
.breadcrumb-item
Breadcrumb item
.jumbotron
Jumbotron component
.figure
Figure component
.figure-img
Figure image
.figure-caption
Figure caption
Grid System
Breakpoint Class infix Dimensions
Extra small none <576px
Small sm ≥576px
Medium md ≥768px
Large lg ≥992px
Extra large xl ≥1200px
Extra extra large xxl ≥1400px
Color Palette
Primary
Secondary
Success
Danger
Warning
Info

Web Design Patterns

Check out these complete web design patterns built with Bootstrap

50+ Complete Design Patterns Available