0%

CSS-金魚系列切版-人員介紹卡片

最終練習結果圖

Source Url

教學影片連結

學習點

1. 加了邊框線,會手動將元素的 width 扣回來

假設原本的元素的 css 是這樣

1
2
3
4
.item {
width: 370;
background-color: #fff;
}

想要為它加上粗度為 2px 的邊框,這個時候就要手動將寬度扣回來

1
2
3
4
5
.item {
width: 376px;
background-color: #fff;
border: 2px solid #000;
}

width 會是 376px 的原因為 370px -2px -2px = 376px 所造成的,也就是扣掉左右兩邊的邊框粗度。

2. 達成文字區域斜角的效果

我們會用 :before 偽元素來達成此效果。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
.item {
width: 370px;
}

.item .txt {
position: relative;
}

.item .txt:before {
content: '';
position: absolute;
top: 0;
left: 0;
width: 0%;
height: 0%;
border-top: 50px solid transparent;
border-left: 185px solid transparent; // 因為父層的寬度 370px 除以二為 185px
border-right: 185px solid transparent; // 因為父層的寬度 370px 除以二為 185px
transform: translateY(-100%);
}

道理為下

width: 0%
height: 0%
使得偽元素整體變成一個點,
接著,border-top, border-left, border-right 會以這個點為中心,成輻射狀的方式成長,長到該邊的邊況達到設定的目標為止,
所以,就有三角形的效果囉。

3.整體區塊往上滑動的效果

這邊的效果我們會用 translateY 的方式來達成
當鼠標滑入 .item 時, .item 整體會往上滑動 30px。
接下來,就是程式碼的部分

1
2
3
4
5
6
7
8
9
item {
// 忽略一些基本的 css
transform: translateY(0px);
transition: all .5s;
}

.item:hover {
transform: translateY(-30px);
}

一開始 .item 的起點為 transform: translateY(0px) ,當鼠標滑入後, transform: translateY(-30px) 就會往上滑動 30px 囉。

4. 滑入後,文字區塊背景變色

來將區塊背景變色的效果加在文字區塊 .txt 中

1
2
3
.item:hover .txt {
background-image: linear-gradient(0deg, #f50 50%, #fa0 100%);
}

注意 linear-gradient 的屬性是設在 background-image 上,不是 background-color 上喔。

Final Result

練習連結

Reference

  1. background-image with linear-gradient
  2. solution of unnecessary white space between img and its parent