avatar

目錄
CSS_進度條

進度條

HTML

因為有順序關係,所以使用 ol 來做。

Code
1
2
3
4
5
6
7
8
<ol class="list">
<li><i class="fas fa-file" aria-hidden="true"></i>收到訂單</li>
<li class="active">
<i class="fas fa-archive" aria-hidden="true"></i>揀貨中
</li>
<li><i class="fas fa-truck" aria-hidden="true"></i>出貨</li>
<li><i class="fas fa-check-circle" aria-hidden="true"></i>送達</li>
</ol>

CSS

一樣使用 flex 來排版,連接線的部分使用 :before 來做。要注意的地方是,用 + 選取器選取從第二個 li 元素開始之後的所有 li 元素都產生連接線。

另外使用 .active 樣式加上 ~ 選取器來做出進度效果。

Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
// css reset
* {
margin: 0;
padding: 0;
list-style: none;
}

html,
body {
height: 100%;
}

body {
font-family: 'Noto Sans TC', sans-serif;
display: flex;
align-items: center;
background-color: #546377;
}

.list {
width: 100%;
display: flex;
// 水平置中
justify-content: center;
li {
display: flex;
flex-direction: column;
// 垂直水平置中
text-align: center;
justify-content: center;
position: relative;
width: 200px;
height: 200px;
color: #ffffff;
// background-color: #ffffff;
// 漸層背景 漸變軸角度 deg
background-image: linear-gradient(9deg, #185a8d, #45cea2);
border-radius: 50%;
font-size: 30px;
box-shadow: 0px 0px 0px 4px #ffffff;
// li 裡的 li
+ li {
margin-left: 100px;
}
// 連接線,從第二個元素左邊開始
+ li:before {
content: '';
position: absolute;
width: 100px;
height: 10px;
background-color: #45cea2;
// 調整連接線重疊邊框部分
z-index: -1;
box-shadow: 0px 0px 0px 3px #ffffff;
top: 0;
bottom: 0;
left: -101px;
margin: auto;
}
.fas {
font-size: 50px;
margin-bottom: 6px;
}
// 以有.active 屬性元素為起始點,之後的所有 li 元素效果
&.active ~ li {
background-image: linear-gradient(9deg, #999, #ccc);
&:before {
background-color: #999;
}
}
}
}

參考:
https://www.youtube.com/watch?v=AhHDJcys5tc&list=PLqivELodHt3hxeuLX8PYaI8u1GcDaBoJo&index=17