0%

CSS 筆記 - 金魚系列 03 - 人員卡片介紹

staff

個人覺得這篇非常有趣,去年鐵人賽也有拿來練習一次,這次重新切版筆記,想做更完整的記錄。

學習重點

HTML 架構確認

首先只要確認一個架構內容沒問題,其他只要複製就可以了,

1
2
3
4
5
6
7
8
9
10
11
<div class="wrap">
<div class="card">
<img src="https://picsum.photos/300/300?pepple=10" alt="" />
<div class="content">
<h2>Amos 金魚系列 III</h2>
<p>
記得當前留下嘿嘿聯絡人世界盃證明改造輕鬆這就是,本來現金,也會商業幾天懂得力道怪物預期,狀況攝影法。
</p>
</div>
</div>
</div>

CSS 樣式

雛形樣式確認

確認架構上到下排列沒問題後,先簡單設定樣式,讓雛型完成。

staff01

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
body {
display: flex;
align-items: center;
background-color: #000033;
}

.wrap {
width: 960px;
display: flex;
margin: 0 auto;
}

.card {
width: 300px;
margin-right: 10px;
margin-left: 10px;
background-color: #fff;
border: 1px solid #fff;
transform: translateY(0px);
transition: all 0.5s;
cursor: pointer;
img {
width: 100%;
vertical-align: middle;
}
}

.content {
padding: 20px;
position: relative;
text-align: center;
h2 {
font-size: 24px;
font-weight: bold;
border-bottom: 1px solid #333333;
padding-bottom: 10px;
margin-bottom: 10px;
text-align: center;
}
P {
line-height: 1.5;
text-align: left;
}
h2,
p {
color: #444444;
}
}

寫一個三角形

這次練習的重點在這裡,怎麼寫三角形,這邊就使用到偽元素,使用的是 ::before 來呈現三角形。

  • 因為是在 .content 內要呈現三角形,並且要蓋在圖片上,所以要使用絕對定位,父層就是 .content
  • 使寬度與高度為 0,固定在左上角當做起始點,把線條頂點先抓出來,並給予線條粗細度,因使用偽元素,故可以在左右邊做設定,內容跟頂點一樣,要注意的是因為 .content 有給邊框 1px,所以三角形左右邊的粗細度要各扣掉 1px。
  • .content 中背景是白色,所以左右邊線條也給白色,因為要做成三角形的缺角,故頂點的線條顏色使用無色(transparent)。
  • 最後使三角形頂點其對齊圖片下方,使用位移 transform: translateY(-100%);
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
.content {
padding: 20px;
position: relative;
text-align: center;
//三角形寫法
&::before {
content: "";
position: absolute;
width: 0;
height: 0;
top: 0;
left: 0;
border-top: 50px solid transparent;
border-left: 149px solid #ffffff;
border-right: 149px solid #ffffff;
transform: translateY(-100%);
}
}

hover 互動效果

最後加上互動效果就完成這次的人員卡片互動,非常實用的一個練習呢!!

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
.card {
width: 300px;
margin-right: 10px;
margin-left: 10px;
background-color: #fff;
border: 1px solid #fff;
//卡片位移
transform: translateY(0px);
transition: all 0.5s;
cursor: pointer;
img {
width: 100%;
vertical-align: middle;
}
//卡片位移效果
&:hover {
transform: translateY(-30px);
.content {
//漸層從下到上
background-image: linear-gradient(0deg, #d0ff34, #fcff35);
}
}

.content {
padding: 20px;
position: relative;
text-align: center;
//三角形寫法
&::before {
content: "";
position: absolute;
width: 0;
height: 0;
top: 0;
left: 0;
border-top: 50px solid transparent;
border-left: 149px solid #ffffff;
border-right: 149px solid #ffffff;
transform: translateY(-100%);
}
//三角形顏色互動
&:hover {
&::before {
content: "";
border-left: 149px solid #fcff35;
border-right: 149px solid #fcff35;
}
}

h2 {
font-size: 24px;
font-weight: bold;
border-bottom: 1px solid #333333;
padding-bottom: 10px;
margin-bottom: 10px;
text-align: center;
}
P {
line-height: 1.5;
text-align: left;
}
h2,
p {
color: #444444;
}
}
}

CodePen https://codepen.io/tim_hsu/full/OJMwxvj

參考資料