Getting Started

Setup Bootstrap

<!-- Bootstrap 5 CSS via CDN -->
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet">

<!-- Bootstrap 5 JS bundle via CDN (includes Popper) -->
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/js/bootstrap.bundle.min.js"></script>

<!-- Alternatively, include Popper and Bootstrap JS separately -->
<script src="https://cdn.jsdelivr.net/npm/@popperjs/core@2.11.8/dist/umd/popper.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/js/bootstrap.min.js"></script>
Note: Always include the CSS in the head and JS before the closing body tag for better performance.

Basic Template

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Bootstrap 5 Template</title>
<!-- Bootstrap CSS -->
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet">
</head>
<body>
<h1>Hello, Bootstrap!</h1>

<!-- Bootstrap JS -->
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/js/bootstrap.bundle.min.js"></script>
</body>
</html>

Grid System

Grid Basics

<!-- Container -->
<div class="container">
<!-- Fixed width container -->
</div>

<div class="container-fluid">
<!-- Full width container -->
</div>

<!-- Basic Grid -->
<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>

<!-- Grid with specified column widths -->
<div class="row">
<div class="col-6">6 units</div>
<div class="col-4">4 units</div>
<div class="col-2">2 units</div>
</div>
Note: Bootstrap's grid system uses 12 columns. Use .container or .container-fluid as wrappers.

Responsive Grid

<!-- Responsive breakpoints: sm, md, lg, xl, xxl -->
<div class="row">
<div class="col-md-8">
<!-- 8 columns on medium screens and up -->
</div>
<div class="col-md-4">
<!-- 4 columns on medium screens and up -->
</div>
</div>

<!-- Multiple breakpoint classes -->
<div class="row">
<div class="col-12 col-sm-6 col-md-4 col-lg-3">
<!-- 12 cols on xs, 6 on sm, 4 on md, 3 on lg -->
</div>
</div>

<!-- Auto-layout columns -->
<div class="row">
<div class="col">Auto column</div>
<div class="col">Auto column</div>
<div class="col">Auto column</div>
</div>

<!-- Nesting grids -->
<div class="row">
<div class="col-md-8">
<div class="row">
<div class="col-md-6">Nested col 1</div>
<div class="col-md-6">Nested col 2</div>
</div>
</div>
</div>

Components

Buttons

<!-- Basic buttons -->
<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 sizes -->
<button type="button" class="btn btn-primary btn-sm">Small</button>
<button type="button" class="btn btn-primary btn-lg">Large</button>

<!-- Disabled button -->
<button type="button" class="btn btn-primary" disabled>Disabled</button>

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

Cards

<!-- Basic card -->
<div class="card" style="width: 18rem;">
<div class="card-body">
<h5 class="card-title">Card title</h5>
<p class="card-text">Some quick example text.</p>
<a href="#" class="btn btn-primary">Go somewhere</a>
</div>
</div>

<!-- Card with image -->
<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.</p>
<a href="#" class="btn btn-primary">Go somewhere</a>
</div>
</div>

<!-- Card with header and footer -->
<div class="card">
<div class="card-header">Featured</div>
<div class="card-body">
<h5 class="card-title">Special title treatment</h5>
<p class="card-text">With supporting text below.</p>
<a href="#" class="btn btn-primary">Go somewhere</a>
</div>
<div class="card-footer text-body-secondary">2 days ago</div>
</div>

<!-- Card groups -->
<div class="card-group">
<div class="card">...</div>
<div class="card">...</div>
<div class="card">...</div>
</div>

Navbar

<!-- Basic navbar -->
<nav class="navbar navbar-expand-lg navbar-light bg-light">
<div class="container-fluid">
<a class="navbar-brand" href="#">Navbar</a>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarSupportedContent">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarSupportedContent">
<ul class="navbar-nav me-auto mb-2 mb-lg-0">
<li class="nav-item">
<a class="nav-link active" aria-current="page" href="#">Home</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">Link</a>
</li>
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown">Dropdown</a>
<ul class="dropdown-menu">
<li><a class="dropdown-item" href="#">Action</a></li>
<li><a class="dropdown-item" href="#">Another action</a></li>
<li><hr class="dropdown-divider"></li>
<li><a class="dropdown-item" href="#">Something else</a></li>
</ul>
</li>
</ul>
<form class="d-flex">
<input class="form-control me-2" type="search" placeholder="Search">
<button class="btn btn-outline-success" type="submit">Search</button>
</form>
</div>
</div>
</nav>

Forms

<!-- Basic form -->
<form>
<div class="mb-3">
<label for="exampleInputEmail1" class="form-label">Email address</label>
<input type="email" class="form-control" id="exampleInputEmail1">
<div class="form-text">We'll never share your email.</div>
</div>
<div class="mb-3">
<label for="exampleInputPassword1" class="form-label">Password</label>
<input type="password" class="form-control" id="exampleInputPassword1">
</div>
<div class="mb-3 form-check">
<input type="checkbox" class="form-check-input" id="exampleCheck1">
<label class="form-check-label" for="exampleCheck1">Check me out</label>
</div>
<button type="submit" class="btn btn-primary">Submit</button>
</form>

<!-- Form controls -->
<select class="form-select" aria-label="Default select example">
<option selected>Open this select menu</option>
<option value="1">One</option>
<option value="2">Two</option>
<option value="3">Three</option>
</select>

<textarea class="form-control" placeholder="Leave a comment here" id="floatingTextarea"></textarea>

<!-- Form validation -->
<div class="form-floating mb-3">
<input type="email" class="form-control is-invalid" id="floatingInputInvalid" placeholder="name@example.com">
<label for="floatingInputInvalid">Invalid input</label>
<div class="invalid-feedback">Please provide a valid value.</div>
</div>

Utilities

Spacing

<!-- Margin and padding utilities -->
<div class="mt-3">Margin top</div>
<div class="mb-3">Margin bottom</div>
<div class="ms-3">Margin start (left)</div>
<div class="me-3">Margin end (right)</div>
<div class="mx-3">Horizontal margin</div>
<div class="my-3">Vertical margin</div>
<div class="m-3">Margin all sides</div>

<div class="pt-3">Padding top</div>
<div class="pb-3">Padding bottom</div>
<div class="ps-3">Padding start (left)</div>
<div class="pe-3">Padding end (right)</div>
<div class="px-3">Horizontal padding</div>
<div class="py-3">Vertical padding</div>
<div class="p-3">Padding all sides</div>

<!-- Sizes: 0-5 (0=0, 1=0.25rem, 2=0.5rem, 3=1rem, 4=1.5rem, 5=3rem) -->
<div class="m-0">No margin</div>
<div class="m-1">Small margin</div>
<div class="m-5">Large margin</div>

<!-- Responsive spacing -->
<div class="mt-md-5 mt-3">Different margins on different screens</div>

Text & Colors

<!-- Text utilities -->
<p class="text-start">Start aligned text</p>
<p class="text-center">Center aligned text</p>
<p class="text-end">End aligned text</p>

<p class="text-lowercase">LOWERCASE TEXT</p>
<p class="text-uppercase">uppercase text</p>
<p class="text-capitalize">capitalized text</p>

<p class="fw-bold">Bold text</p>
<p class="fw-bolder">Bolder weight text</p>
<p class="fw-normal">Normal weight text</p>
<p class="fw-light">Light weight text</p>
<p class="fst-italic">Italic text</p>

<!-- Color utilities -->
<p class="text-primary">Primary text</p>
<p class="text-secondary">Secondary text</p>
<p class="text-success">Success text</p>
<p class="text-danger">Danger text</p>
<p class="text-warning">Warning text</p>
<p class="text-info">Info text</p>
<p class="text-light bg-dark">Light text</p>
<p class="text-dark">Dark text</p>
<p class="text-body">Body text</p>
<p class="text-muted">Muted text</p>

<!-- Background colors -->
<div class="bg-primary">Primary background</div>
<div class="bg-success">Success background</div>
<div class="bg-danger">Danger background</div>
<div class="bg-warning">Warning background</div>
<div class="bg-info">Info background</div>
<div class="bg-light">Light background</div>
<div class="bg-dark text-light">Dark background</div>
<div class="bg-body">Body background</div>
<div class="bg-white">White background</div>
<div class="bg-transparent">Transparent background</div>

Flexbox

<!-- Flexbox container -->
<div class="d-flex">Flex container</div>
<div class="d-inline-flex">Inline flex container</div>

<!-- Direction -->
<div class="d-flex flex-row">Horizontal (default)</div>
<div class="d-flex flex-row-reverse">Horizontal reversed</div>
<div class="d-flex flex-column">Vertical</div>
<div class="d-flex flex-column-reverse">Vertical reversed</div>

<!-- Justify content -->
<div class="d-flex justify-content-start">Start (default)</div>
<div class="d-flex justify-content-end">End</div>
<div class="d-flex justify-content-center">Center</div>
<div class="d-flex justify-content-between">Space between</div>
<div class="d-flex justify-content-around">Space around</div>
<div class="d-flex justify-content-evenly">Space evenly</div>

<!-- Align items -->
<div class="d-flex align-items-start">Start</div>
<div class="d-flex align-items-end">End</div>
<div class="d-flex align-items-center">Center</div>
<div class="d-flex align-items-baseline">Baseline</div>
<div class="d-flex align-items-stretch">Stretch (default)</div>

<!-- Align self -->
<div class="d-flex">
<div class="align-self-start">Start</div>
<div class="align-self-end">End</div>
<div class="align-self-center">Center</div>
<div class="align-self-baseline">Baseline</div>
<div class="align-self-stretch">Stretch</div>
</div>

<!-- Fill -->
<div class="d-flex">
<div class="flex-fill">Flex fill</div>
<div class="flex-fill">Flex fill</div>
<div class="flex-fill">Flex fill</div>
</div>

<!-- Grow and shrink -->
<div class="d-flex">
<div class="flex-grow-1">Flex grow</div>
<div class="flex-shrink-1">Flex shrink</div>
</div>

<!-- Auto margins -->
<div class="d-flex">
<div class="me-auto">Left auto margin</div>
<div>Content</div>
<div class="ms-auto">Right auto margin</div>
</div>

<!-- Wrap -->
<div class="d-flex flex-nowrap">No wrap (default)</div>
<div class="d-flex flex-wrap">Wrap</div>
<div class="d-flex flex-wrap-reverse">Wrap reversed</div>

Display & Position

<!-- Display utilities -->
<div class="d-none">Hidden</div>
<div class="d-inline">Inline</div>
<div class="d-inline-block">Inline block</div>
<div class="d-block">Block</div>
<div class="d-grid">Grid</div>
<div class="d-table">Table</div>
<div class="d-table-row">Table row</div>
<div class="d-table-cell">Table cell</div>
<div class="d-flex">Flex</div>
<div class="d-inline-flex">Inline flex</div>

<!-- Responsive display -->
<div class="d-sm-none d-md-block">
<!-- Hidden on small screens, block on medium and up -->
</div>

<!-- Position utilities -->
<div class="position-static">Static</div>
<div class="position-relative">Relative</div>
<div class="position-absolute">Absolute</div>
<div class="position-fixed">Fixed</div>
<div class="position-sticky">Sticky</div>

<!-- Placement utilities -->
<div class="top-0">Top 0</div>
<div class="start-0">Left 0</div>
<div class="bottom-0">Bottom 0</div>
<div class="end-0">Right 0</div>
<div class="translate-middle">Translate middle</div>

<!-- Fixed top example -->
<div class="fixed-top">Fixed to the top</div>
<div class="fixed-bottom">Fixed to the bottom</div>

<!-- Sticky top example -->
<div class="sticky-top">Sticky to the top</div>

Advanced Components

Modals

<!-- Button trigger modal -->
<button type="button" class="btn btn-primary" data-bs-toggle="modal" data-bs-target="#exampleModal">
Launch demo modal
</button>

<!-- Modal -->
<div class="modal fade" id="exampleModal" tabindex="-1" aria-labelledby="exampleModalLabel" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="exampleModalLabel">Modal title</h5>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
</div>
<div class="modal-body">
...
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Close</button>
<button type="button" class="btn btn-primary">Save changes</button>
</div>
</div>
</div>
</div>

<!-- Modal sizes -->
<div class="modal-dialog modal-sm">Small modal</div>
<div class="modal-dialog">Default modal</div>
<div class="modal-dialog modal-lg">Large modal</div>
<div class="modal-dialog modal-xl">Extra large modal</div>
<div class="modal-dialog modal-fullscreen">Fullscreen modal</div>

Carousel

<!-- Carousel -->
<div id="carouselExample" class="carousel slide">
<div class="carousel-inner">
<div class="carousel-item active">
<img src="..." class="d-block w-100" alt="...">
</div>
<div class="carousel-item">
<img src="..." class="d-block w-100" alt="...">
</div>
<div class="carousel-item">
<img src="..." class="d-block w-100" alt="...">
</div>
</div>
<button class="carousel-control-prev" type="button" data-bs-target="#carouselExample" data-bs-slide="prev">
<span class="carousel-control-prev-icon" aria-hidden="true"></span>
<span class="visually-hidden">Previous</span>
</button>
<button class="carousel-control-next" type="button" data-bs-target="#carouselExample" data-bs-slide="next">
<span class="carousel-control-next-icon" aria-hidden="true"></span>
<span class="visually-hidden">Next</span>
</button>
</div>

<!-- With indicators -->
<div class="carousel-indicators">
<button type="button" data-bs-target="#carouselExample" data-bs-slide-to="0" class="active"></button>
<button type="button" data-bs-target="#carouselExample" data-bs-slide-to="1"></button>
<button type="button" data-bs-target="#carouselExample" data-bs-slide-to="2"></button>
</div>

<!-- With captions -->
<div class="carousel-caption d-none d-md-block">
<h5>First slide label</h5>
<p>Some representative placeholder content.</p>
</div>