自留按钮动画

十字形劈开
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
.btn {
margin: 80px;
width: 400px;
height: 80px;
position: relative;
font-size: 4rem;
background-color: #f2f2f2;
color: black;
z-index: 1;
transition: 1s;
}

.btn::before {
content: "";
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
background-color: #262626;
transform: rotateX(90deg);
transition: 1s;
z-index: -1;
}

.btn:hover::before {
transform: rotateX(0deg);
}

.btn::after {
content: "";
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
background-color: #262626;
transform: rotateY(90deg);
transition: 1s;
z-index: -1;
}

.btn:hover::after {
transform: rotateY(0deg);
}

.btn:hover {
color: #fff;
}

十字形黑到白,原理是通过旋转x和y轴得到

自上而下倒塌
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
.roate {
margin: 5px;
width: 400px;
height: 50px;
margin-top: 200px;
position: relative;
overflow: hidden;
background-color: inherit;
}
.roate::before {
content: "";
position: absolute;
left: 0;
top: 0;
background-color: yellowgreen;
z-index: -1;
width: 100%;
height: 100%;
transform-origin: bottom left;
transform: rotate(-90deg);
transition: transform 1s ease-in-out;
}
.roate:hover::before {
transform: rotate(0deg);
}

原理是before里画一团颜色,用transform旋转让他塌下来

填充
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
.btn2 {
margin: 5px;
width: 400px;
height: 50px;
margin-top: 200px;
position: relative;
background-color: inherit;
overflow: hidden;
color: burlywood;
transition: all 1.5s;
font-size: 1rem;
}

.btn2::before {
content: "";
position: absolute;
left: 0;
top: 0;
background-color: burlywood;
width: 100%;
height: 100%;
z-index: -1;
transform-origin: left;
transform: translateX(-100%);
transition: transform 1s ease-in-out;
}

.btn2:hover::before {
transform: translateX(0);
}
.btn2:hover {
color: white;
}
悬浮放大
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

.btn {
padding: 10px;
position: relative;
background-color: inherit;
text-transform: uppercase;
color: black;
transition: all 1.5s;
font-size: 1.25rem;
border: 3px solid black;
font-weight: 300;
letter-spacing: 2px;
}

.btn:hover{
font-weight: 900;
letter-spacing: 5px;
border: 5px solid black;
}
想不出来怎么形容
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
a {
font-size: 2rem;
display: flex;
align-items: center;
justify-content: center;
color: black;
text-decoration: none;
margin: 25px;
width: 160px;
height: 60px;
line-height: 60px;
position: relative;
transition: all 0.2s;
letter-spacing: 3px;
user-select: none;
&::before {
content: "";
position: absolute;
width: 160px;
height: 90px;
top: -15px;
left: 0;
border-left: 4px solid #ff717f;
border-right: 4px solid #353d81;
transition: all 1s;

}

&:hover::before {
transform: rotateY(180deg);
}

&:hover::after {
transform: rotateX(180deg);
}

&::after {
content: "";
position: absolute;
width: 200px;
height: 60px;
top: 0;
left: -15px;
border-top: 4px solid #ff717f;
border-bottom: 4px solid #353d81;
transition: all 1s;
transition-delay: 0.2s;
}