本文介紹使用Bootstrap製作基本網站的方法。
草圖
期望完成後,大概長這個樣子。
準備工作
根據上面的規劃,我們需要準備幾張圖片。這樣最終頁面看起來才有點像樣。
圖片放在assets文件夾中。
創建HTML文件index.html,引入bootstrap CSS
<!DOCTYPE>
<html>
<head>
<title>Portfolio Website</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<!-- CSS only -->
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.3/dist/css/bootstrap.min.css" rel="stylesheet">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.10.0/font/bootstrap-icons.css">
</head>
<body>
</body>
</html>
這裡,我們引入了圖標css。因為後面有需要。
這時候,打開網頁,應該是空白,因為我們還沒有加入任何html可視元素。
創建導航條
在body塊中加入如下代碼
<nav class="navbar navbar-expand-sm navbar-dark bg-dark">
<div class="container-fluid">
<a class="navbar-brand" href="javascript:void(0)"><img class="img-fluid" src="./assets/logo.png" /></a>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#mynavbar">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="mynavbar">
<ul class="navbar-nav me-auto">
<li class="nav-item">
<a class="nav-link active" aria-current="page" href="#">首頁</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">關於我們</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">產品</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">聯繫</a>
</li>
</ul>
<form class="d-flex">
<input class="form-control me-2" type="text" placeholder="找一找">
<button class="btn btn-primary" type="button">Go</button>
</form>
</div>
</div>
</nav>
代碼幾乎是從bootstrap5官網複製下來的。
注意:我們使用 navbar-dark bg-dark使得背景是黑色的。logo使用我們自己準備的圖片。導航欄包括:首頁,關於,產品,聯繫,以及搜索框。常見的網站配置類目。
此時,效果如下圖
創建導航下面的區域hero
<!-- Hero section -->
<div class="container">
<div class="row mb-5 mt-5">
<div class="col">
<h1>軟體/App<br>分析、設計與開發</h1>
<p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Donec odio. Quisque volutpat mattis eros. Nullam malesuada erat ut turpis. Suspendisse urna nibh, viverra non, semper suscipit, posuere a, pede.</p>
<div class="w-50 d-grid"><button type="button" class="btn btn-dark">了解一下</button></div>
</div>
<div class="col">
<img src="./assets/hero.png" alt="Software Development">
</div>
</div>
<div class="row">
<div class="col-sm-4 mb-3 mb-sm-0">
<div class="card shadow-sm">
<div class="card-body">
<h1 class="card-title text-center"><i class="bi bi-code-slash"></i></h1>
<p class="card-text">With supporting text below as a natural lead-in to additional content.</p>
</div>
</div>
</div>
<div class="col-sm-4">
<div class="card shadow-sm">
<div class="card-body">
<h1 class="card-title text-center"><i class="bi bi-bounding-box"></i></h1>
<p class="card-text">With supporting text below as a natural lead-in to additional content.</p>
</div>
</div>
</div>
<div class="col-sm-4">
<div class="card shadow-sm">
<div class="card-body">
<h1 class="card-title text-center"><i class="bi bi-steam"></i></h1>
<p class="card-text">With supporting text below as a natural lead-in to additional content.</p>
</div>
</div>
</div>
</div>
</div>
<!-- End Hero section -->
注意:我們使用 mb-5 mt-5 調節區塊之間的間距。還使用了shadow-sm為3個塊狀框創建陰影效果。具體需要哪個圖標,上bootrstrap官網查詢即可。
效果如下:
加入關於
<!-- About us section -->
<section id="about-us">
<div class="container">
<div class="row mt-5 mb-5 align-items-center">
<div class="col-sm-6">
<img src="./assets/about.png" class="img-fluid" alt="About Us">
</div>
<div class="col-sm-6">
<h1>關於我們</h1>
<p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Donec odio. Quisque volutpat mattis eros. Nullam malesuada erat ut turpis. Suspendisse urna nibh, viverra non, semper suscipit, posuere a, pede.</p>
<p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Donec odio. Quisque volutpat mattis eros. Nullam malesuada erat ut turpis. Suspendisse urna nibh, viverra non, semper suscipit, posuere a, pede.</p>
<button type="button" class="btn btn-dark btn-large">Let's meet</button>
</div>
</div>
</div>
</section>
<!-- End About us section -->
創建產品/項目列表
主要用的CSS是帶圖片的card。另外,請注意:
row-cols-1 row-cols-md-2
當設備寬度超過Medium定義的尺寸時:顯示2列。否則顯示1列。這樣在手機上也能自適應。
<!-- Projects section -->
<section id="projects">
<div class="container">
<div class="row align-items-center projects">
<div class="col">
<h1>產品一覽</h1>
<p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Donec odio. Quisque volutpat mattis eros. Nullam malesuada erat ut turpis. Suspendisse urna nibh, viverra non, semper suscipit, posuere a, pede.</p>
</div>
</div>
<div class="row align-items-center">
<div class="row row-cols-1 row-cols-md-2 g-4">
<div class="col">
<div class="card">
<img src="./assets/dandelion-445228__340.jpg" class="card-img-top" alt="...">
<div class="card-body">
<h5 class="card-title">Card title</h5>
<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>
</div>
</div>
<div class="col">
<div class="card">
<img src="./assets/fantasy-2049567__340.jpg" class="card-img-top" alt="...">
<div class="card-body">
<h5 class="card-title">Card title</h5>
<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>
</div>
</div>
<div class="col">
<div class="card">
<img src="./assets/flowers-276014__340.jpg" class="card-img-top" alt="...">
<div class="card-body">
<h5 class="card-title">Card title</h5>
<p class="card-text">This is a longer card with supporting text below as a natural lead-in to additional content.</p>
</div>
</div>
</div>
<div class="col">
<div class="card">
<img src="./assets/road-1072823__340.jpg" class="card-img-top" alt="...">
<div class="card-body">
<h5 class="card-title">Card title</h5>
<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>
</div>
</div>
</div>
</div>
</div>
</section>
<!-- End Projects section -->
最後,再加聯繫我們
<!-- Contact section -->
<section id="contact">
<div class="container mb-5 mt-5">
<div class="row align-items-center">
<div class="col">
<h1>Contact US</h1>
<p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Donec odio. Quisque volutpat mattis eros. Nullam malesuada erat ut turpis. Suspendisse urna nibh, viverra non, semper suscipit, posuere a, pede.</p>
</div>
</div>
</div>
</section>
<!-- End Contact section -->
加個頁腳
<footer class="bg-light text-center text-lg-start">
<!-- Copyright -->
<div class="text-center p-3">
© 2023 Copyright
<a class="text-dark" href="#">Stackoverflow.ink</a>
</div>
<!-- Copyright -->
</footer>
最終,效果如下圖
在手機上瀏覽:
這樣一個基本的網站雛形就差不多了。初步測試,支持基本的設備自適應。
總共,大概180行代碼。
除了使用bootstrap本身的CSS外,不使用其它任何自定義的CSS。
確保足夠dry。便於維護升級。