嗨嗨~歡迎來到「30天前端設計之旅」的DAY 27!今天我們將深入學習一個強大的布局系統——Flexbox,它能讓你靈活地編排不同尺寸、不同排列的版面,解決傳統 CSS 布局中的很多限制。無論是水平並列的內容排版、跨行跨列的布局,還是全域導覽列與標頭的設計,Flexbox 都能幫你輕鬆實現。
D-27的學習目標:
Flexbox 基本語法:
.container {
display: flex; /* 使父容器成為彈性容器 */
justify-content: space-between; /* 控制水平排列 */
align-items: center; /* 控制垂直對齊 */
}
<div class="horizontal-container">
<div class="box">區塊 1</div>
<div class="box">區塊 2</div>
<div class="box">區塊 3</div>
</div>
.horizontal-container {
display: flex;
justify-content: space-around;
align-items: center;
}
.box {
width: 30%;
padding: 20px;
background-color: #d6c6b9;
text-align: center;
color: white;
font-size: 1.2em;
}
<div class="flex-grid">
<div class="grid-item span-2">跨兩行的區塊</div>
<div class="grid-item">區塊 2</div>
<div class="grid-item">區塊 3</div>
<div class="grid-item">區塊 4</div>
</div>
.flex-grid {
display: flex;
flex-wrap: wrap;
}
.grid-item {
flex: 1;
padding: 20px;
background-color: #b8a29c;
color: white;
text-align: center;
margin: 10px;
}
.span-2 {
flex: 2; /* 讓這個區塊跨越兩列 */
}
<nav class="navbar">
<ul class="nav-list">
<li><a href="#">首頁</a></li>
<li><a href="#">服務</a></li>
<li><a href="#">產品</a></li>
<li><a href="#">聯絡我們</a></li>
</ul>
</nav>
.navbar {
background-color: #6c757d;
padding: 15px;
}
.nav-list {
display: flex;
justify-content: space-between;
list-style: none;
padding: 0;
}
.nav-list li a {
color: white;
text-decoration: none;
padding: 10px;
}
*標頭的編排設計:Flexbox 可以輕鬆地將標頭中的標題和其他元素(如按鈕、搜尋框)進行水平並列排放,讓頁面標頭既整潔又具有可操作性。
*說明:標頭中的內容透過 Flexbox 分別在兩端對齊,並且保持垂直居中,讓頁面整體協調一致。
<header class="header">
<h1 class="title">我的網站</h1>
<button class="cta-btn">立即訂閱</button>
</header>
.header {
display: flex;
justify-content: space-between;
align-items: center;
padding: 10px 20px;
background-color: #b8a29c;
}
.title {
font-size: 2em;
color: white;
}
.cta-btn {
padding: 10px 20px;
background-color: #6c757d;
color: white;
border: none;
border-radius: 5px;
cursor: pointer;
}