float
的用途與限制clear
避免元素被浮動影響flexbox
取代,但仍需理解舊專案的用法<body>
<h1>CSS 浮動與清除示範</h1>
<div class="container">
<img src="https://picsum.photos/200/150" alt="範例圖片" class="float-left">
<p>
這段文字會環繞在圖片的右側。利用 float 可以實現圖文混排的效果。
不過要注意,浮動會讓後續的元素脫離正常的文流。
</p>
</div>
<div class="box">這是一個受浮動影響的區塊,會跑上來。</div>
<div class="clearfix"></div>
<div class="box">這是一個加了 clear 後的區塊,恢復正常位置。</div>
</body>
body {
font-family: "Microsoft JhengHei", sans-serif;
margin: 0;
padding: 20px;
}
h1 {
text-align: center;
margin-bottom: 30px;
}
.box {
width: 200px;
padding: 20px;
margin: 20px;
background: #3498db;
color: white;
border-radius: 6px;
}
.static {
position: static;
.relative {
position: relative;
left: 30px;
top: 10px;
background: #2ecc71;
}
.container {
position: relative;
height: 150px;
background: #ecf0f1;
margin: 20px 0;
}
.absolute {
position: absolute;
top: 20px;
right: 20px;
background: #e67e22;
}
.fixed {
position: fixed;
bottom: 20px;
right: 20px;
background: #9b59b6;
}
.sticky {
position: sticky;
top: 10px;
background: #f39c12;
padding: 15px;
margin: 30px 0;
}
.content {
height: 200px;
border: 1px solid #ccc;
margin-bottom: 20px;
}
clear: both;
或 clearfix
flex
或 grid
取代float: left/right
clearfix
修正父層高度塌陷問題flex
重寫浮動版面今天練習了 CSS 的浮動,終於理解為什麼很多舊專案的排版都靠 float
完成。雖然它的確能實現圖文混排或左右並排,但也常常帶來高度塌陷或版面跑掉的問題。
我覺得最關鍵的就是 清除浮動,不管是用 clear
還是 .clearfix
,都能讓後續元素回到正常文流。這讓我體會到,CSS 的世界裡很多 bug 其實是因為沒有掌握元素的「流動方式」。
雖然現在有 flexbox
和 grid
,大部分需求已經不需要再用 float
,但學會它能幫助我看懂舊的程式碼,也能在一些特殊情境下派上用場。