常见的css动画效果

 

一、常用的动效

1、背景颜色淡入淡出

 

 

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<div class="bgc">背景颜色淡入淡出</div>
  
 
  
 
  
 
  
 
/* 背景颜色的淡入淡出 */
.bgc {
    width: 150px;
    height: 40px;
    text-align: center;
    line-height: 40px;
    background-color: #ccc;
    border-radius: 5px;
    transition: background-color 1s;
    transition-timing-function: ease-in-out;
    cursor: pointer;
}
.bgc:hover {
    background-color: #09f;
}

  

 

2、下划线从中间往两边淡入淡出

 

 

 

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
<div class="underline-cen-out ege">下划线中间往两边淡入淡出</div>
  
 
  
 
  
 
  
 
/*后面的ege都用该css样式*/
    .ege {
        cursor: pointer;
        height: 40px;
        line-height: 40px;
        text-align: center;
        display: inline-block;
        color: #333;
        background: #ccc;
        min-width: 80px;
        padding: 0 10px;
        margin: 10px;
        position: relative;
        transition: all .3s;
        z-index: 1;
    }
  
 
  
 
  
 
  
 
.underline-cen-out::after {
    content: "";
    width: 0;
    height: 3px;
    background: #3866ff;
    position: absolute;
    top: 100%;
    left: 50%;
    transition: .8s;
    margin-top: -3px;
  }
  .underline-cen-out:hover::after {
    left: 0;
    width: 100%;
  }

  

 

3、按钮心跳动画

 

 

 

 

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
<div class="heart-shake ege">按钮心跳动画</div>
  
 
  
 
  
 
  
 
  
 
/* 按钮心跳动画 */
  .heart-shake {
    border-radius: 10px;
    background: #3866ff;
    color: #ffffff;
    box-shadow: 0 2px 30px 0 #3866ff63;
    animation: submitBtn 1.5s ease infinite;
  }
  @keyframes submitBtn {
    0% {
      transform: scale(1);
    }
    50% {
      transform: scale(1.1);
    }
    100% {
      transform: scale(1);
    }
  }

  

 

4、内容从下向上移入动画

 

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
73
74
75
76
77
78
79
80
81
82
83
84
85
<div class="box">
    <div class="baise">
      <div class="zhe-zhao"></div>
      <div class="up-bao"></div>
      <div class="zhe-text">
        <p>我是底部内容</p>
      </div>
    </div>
  </div>
  
 
  
 
  
 
  
 
/* 内容从下向上移入 */
  .box {
    width: 280px;
    height: 300px;
    position: relative;
    /* background-color: pink; */
    background: url("http://img30.360buyimg.com/baoxian/jfs/t7423/47/3941548926/53740/eeeda758/59cb037bN06494a9f.jpg") no-repeat center;
    /* border: 1px solid #ccc; */
  }
  .baise {
    position: absolute;
    width: 280px;
    height: 300px;
    left: 0;
    top: 0;
    overflow: hidden;
  }
  .zhe-zhao {
    width: 100%;
    height: 155px;
    filter: alpha(enabled=false);
    opacity: 1;
    background: #fff;
    position: absolute;
    bottom: -75px;
    left: 0;
    z-index: 10;
    *z-index: 1;
    transition: .3s all ease;
  }
  .up-bao {
    display: block;
    position: absolute;
    left: 0;
    top: 0;
    width: 100%;
    height: 100%;
    background: #000;
    filter: alpha(Opacity=0);
    opacity: 0;
    transition: .6s all ease-in;
  }
  .zhe-text {
    width: 250px;
    z-index: 1000;
    position: absolute;
    bottom: -105px;
    left: 0;
    padding: 15px;
    height: 155px;
    overflow: hidden;
    text-align: center;
    z-index: 11;
    transition: all .3s ease-in-out;
  }
  .box:hover .up-bao {
    filter: alpha(Opacity=50);
    opacity: .5;
  }
  .box:hover .zhe-zhao {
    bottom: -50px;
    filter: alpha(Opacity=0);
    opacity: 0;
  }
  .box:hover .zhe-text {
    bottom: 10px;
  }

  

 

 

 

5、伪类实现按钮边框动画

 

单边框

 

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
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
<div class="btn border-animation">
        <div class="btn-borders">
            <div class="border-top"></div>
            <div class="border-right"></div>
            <div class="border-bottom"></div>
            <div class="border-left"></div>
        </div>
        <span class="btn-text">Start</span>
    </div>
  
 
  
 
  
 
  
 
.btn {
    --ease-in-duration: 0.25s;
    --ease-in-exponential: cubic-bezier(0.95, 0.05, 0.795, 0.035);
    --ease-out-duration: 0.65s;
    --ease-out-delay: var(--ease-in-duration);
    --ease-out-exponential: cubic-bezier(0.19, 1, 0.22, 1);
    position: relative;
    width: 100px;
    height: 50px;
    line-height: 50px;
    text-align: center;
    font-size: 14px;
    color: #333333;
    background-color: #ffffff;
    border: 1px solid #ebebeb;
    cursor: pointer;
    transition: 0.25s;
  }
  .btn .btn-borders {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
  }
  .btn .btn-borders .border-top {
    position: absolute;
    top: 0;
    width: 100%;
    height: 1px;
    background: #3866ff;
    transform: scaleX(0);
    transform-origin: left;
  }
  .btn .btn-borders .border-right {
    position: absolute;
    right: 0;
    width: 1px;
    height: 100%;
    background: #3866ff;
    transform: scaleY(0);
    transform-origin: bottom;
  }
  .btn .btn-borders .border-bottom {
    position: absolute;
    bottom: 0;
    width: 100%;
    height: 1px;
    background: #3866ff;
    transform: scaleX(0);
    transform-origin: left;
  }
  .btn .btn-borders .border-left {
    position: absolute;
    left: 0;
    width: 1px;
    height: 100%;
    background: #3866ff;
    transform: scaleY(0);
    transform-origin: bottom;
  }
  .btn .btn-borders .border-left {
    transition: var(--ease-out-duration) var(--ease-out-delay) var(--ease-out-exponential);
  }
  .btn .btn-borders .border-bottom {
    transition: var(--ease-out-duration) var(--ease-out-delay) var(--ease-out-exponential);
  }
  .btn .btn-borders .border-right {
    transition: var(--ease-in-duration) var(--ease-in-exponential);
  }
  .btn .btn-borders .border-top {
    transition: var(--ease-in-duration) var(--ease-in-exponential);
  }
  .btn:hover {
    background: transparent;
  }
  .btn:hover .border-top,
  .btn:hover .border-bottom {
    transform: scaleX(1);
  }
  .btn:hover .border-left,
  .btn:hover .border-right {
    transform: scaleY(1);
  }
  .btn:hover .border-left {
    transition: var(--ease-in-duration) var(--ease-in-exponential);
  }
  .btn:hover .border-bottom {
    transition: var(--ease-in-duration) var(--ease-in-exponential);
  }
  .btn:hover .border-right {
    transition: var(--ease-out-duration) var(--ease-out-delay) var(--ease-out-exponential);
  }
  .btn:hover .border-top {
    transition: var(--ease-out-duration) var(--ease-out-delay) var(--ease-out-exponential);
  }

  

 

 

 

多边框

 

 

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
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
<div class="btn btn-primary btn-ghost btn-multiple-border-stroke">
        <div class="btn-borders-group">
            <div class="border-top"></div>
            <div class="border-right"></div>
            <div class="border-bottom"></div>
            <div class="border-left"></div>
        </div>
        <div class="btn-borders-group">
            <div class="border-top"></div>
            <div class="border-right"></div>
            <div class="border-bottom"></div>
            <div class="border-left"></div>
        </div>
        <div class="btn-borders-group">
            <div class="border-top"></div>
            <div class="border-right"></div>
            <div class="border-bottom"></div>
            <div class="border-left"></div>
        </div>
        <span class="btn-text">Start</span>
    </div>
  
 
  
 
  
 
  
 
.btn {
  --ease-in-duration: 0.25s;
  --ease-in-exponential: cubic-bezier(0.95, 0.05, 0.795, 0.035);
  --ease-out-duration: 0.65s;
  --ease-out-delay: var(--ease-in-duration);
  --ease-out-exponential: cubic-bezier(0.19, 1, 0.22, 1);
  position: relative;
  width: 200px;
  height: 100px;
  line-height: 100px;
  text-align: center;
  font-size: 24px;
  color: #333333;
  background-color: #ffffff;
  border: 1px solid #ebebeb;
  cursor: pointer;
  transition: 0.25s;
}
.btn-multiple-border-stroke {
  border-color: transparent;
}
.btn-multiple-border-stroke .btn-borders-group {
  position: absolute;
  top: 0;
  left: 0;
  display: flex;
  justify-content: center;
  align-items: center;
  width: 100%;
  height: 100%;
  border: 1px solid #cccccc;
}
.btn-multiple-border-stroke .btn-borders-group:nth-child(1) {
  left: -8px;
  padding: 0 8px;
}
.btn-multiple-border-stroke .btn-borders-group:nth-child(2) {
  top: -8px;
  padding: 8px 0;
}
.btn-multiple-border-stroke .btn-borders-group:nth-child(3) {
  top: -4px;
  left: -4px;
  padding: 4px;
}
.btn-multiple-border-stroke .btn-borders-group .border-top {
  position: absolute;
  top: 0;
  width: 100%;
  height: 1px;
  background: #3866ff;
  transform: scaleX(0);
  transform-origin: left;
}
.btn-multiple-border-stroke .btn-borders-group .border-right {
  position: absolute;
  right: 0;
  width: 1px;
  height: 100%;
  background: #3866ff;
  transform: scaleY(0);
  transform-origin: bottom;
}
.btn-multiple-border-stroke .btn-borders-group .border-bottom {
  position: absolute;
  bottom: 0;
  width: 100%;
  height: 1px;
  background: #3866ff;
  transform: scaleX(0);
  transform-origin: left;
}
.btn-multiple-border-stroke .btn-borders-group .border-left {
  position: absolute;
  left: 0;
  width: 1px;
  height: 100%;
  background: #3866ff;
  transform: scaleY(0);
  transform-origin: bottom;
}
.btn-multiple-border-stroke .btn-borders-group .border-left {
  transition: var(--ease-out-duration) var(--ease-out-delay) cubic-bezier(0.2, 1, 0.2, 1);
}
.btn-multiple-border-stroke .btn-borders-group .border-bottom {
  transition: var(--ease-out-duration) var(--ease-out-delay) cubic-bezier(0.2, 1, 0.2, 1);
}
.btn-multiple-border-stroke .btn-borders-group .border-right {
  transition: var(--ease-in-duration) cubic-bezier(1, 0, 0.8, 0);
}
.btn-multiple-border-stroke .btn-borders-group .border-top {
  transition: var(--ease-in-duration) cubic-bezier(1, 0, 0.8, 0);
}
.btn-multiple-border-stroke:hover {
  background: transparent;
}
.btn-multiple-border-stroke:hover .border-top,
.btn-multiple-border-stroke:hover .border-bottom {
  transform: scaleX(1);
}
.btn-multiple-border-stroke:hover .border-left,
.btn-multiple-border-stroke:hover .border-right {
  transform: scaleY(1);
}
.btn-multiple-border-stroke:hover .border-left {
  transition: var(--ease-in-duration) cubic-bezier(1, 0, 0.8, 0);
}
.btn-multiple-border-stroke:hover .border-bottom {
  transition: var(--ease-in-duration) cubic-bezier(1, 0, 0.8, 0);
}
.btn-multiple-border-stroke:hover .border-right {
  transition: var(--ease-out-duration) var(--ease-out-delay) cubic-bezier(0.2, 1, 0.2, 1);
}
.btn-multiple-border-stroke:hover .border-top {
  transition: var(--ease-out-duration) var(--ease-out-delay) cubic-bezier(0.2, 1, 0.2, 1);
}

  

 

 

二、其他hover动画

 

1
2
3
4
5
6
7
8
9
10
11
12
13
div{
        cursor: pointer;
        height: 40px;
        line-height: 40px;
        text-align: center;
        display: inline-block;
        color: #333;
        background: #ccc;
        min-width: 80px;
        padding: 0 10px;
        margin: 10px;
    }

  

 

 

 

1、简单动画

1.1大小变化

 

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<p>大小变化</p>
    <div class="example-big">big</div>
<div class="example-small">small</div>
  
 
  
 
  
 
  
 
.example-big,.example-small {
    transition: all .4s;
}
.example-big:hover{
    transform: scale(1.2);
}
.example-small:hover{
    transform: scale(.9);
}

  

 

 

 

1.2形状变化

 

 

 

 

 

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
<p>形状变化</p>
<div class="example-skew-l">skew-l</div>
<div class="example-skew-r">skew-r</div>
<div class="example-skew-l-t">skew-l-t</div>
<div class="example-skew-r-t">skew-r-t</div>
<div class="example-skew-l-b">skew-l-b</div>
<div class="example-skew-r-b">skew-r-b</div>
  
 
  
 
  
 
  
 
  
 
.example-skew-l, .example-skew-r, .example-skew-l-t, .example-skew-r-b, .example-skew-l-b, .example-skew-r-t{
    transition: all .4s;
}
.example-skew-r-t, .example-skew-l-t {
    transform-origin: 0 100%;
}
.example-skew-r-b, .example-skew-l-b {
    transform-origin: 100% 0;
}
.example-skew-l:hover {
    transform: skew(-15deg);
}
.example-skew-r:hover {
    transform: skew(15deg);
}
.example-skew-l-t:hover {
    transform: skew(-15deg);
}
.example-skew-r-t:hover {
    transform: skew(15deg);
}
.example-skew-l-b:hover {
    transform: skew(15deg);
}
.example-skew-r-b:hover {
    transform: skew(-15deg);
}

  

 

 

1.3旋转角度变化

 

 

 

 

 

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
<p>旋转角度变化</p>
<div class="example-grow-rotate-l">grow-rotate-l</div>
<div class="example-grow-rotate-r">grow-rotate-r</div>
<div class="example-rotate5">rotate5</div>
<div class="example-rotate15">rotate15</div>
<div class="example-rotate30">rotate30</div>
<div class="example-rotate60">rotate60</div>
<div class="example-rotate90">rotate90</div>
<div class="example-rotate180">rotate180</div>
<div class="example-rotate360">rotate360</div>
<div class="example-rotate-5">rotate-5</div>
<div class="example-rotate-15">rotate-15</div>
<div class="example-rotate-30">rotate-30</div>
<div class="example-rotate-60">rotate-60</div>
<div class="example-rotate-90">rotate-90</div>
<div class="example-rotate-180">rotate-180</div>
  
 
  
 
  
 
  
 
.example-grow-rotate-l,.example-grow-rotate-r, .example-rotate5, .example-rotate15, .example-rotate30, .example-rotate60, .example-rotate90, .example-rotate180, .example-rotate360, .example-rotate-5,.example-rotate-15, .example-rotate-30, .example-rotate-60, .example-rotate-90, .example-rotate-180{
transition: all .4s;
}
.example-grow-rotate-l:hover {
    transform: scale(1.1) rotate(4deg);
}
.example-grow-rotate-r:hover {
    transform: scale(1.1) rotate(-4deg);
}
.example-rotate-5:hover {
    transform: rotate(-5deg);
}
.example-rotate-15:hover {
    transform: rotate(-15deg);
}
.example-rotate-30:hover {
    transform: rotate(-30deg);
}
.example-rotate-60:hover {
    transform: rotate(-60deg);
}
.example-rotate-90:hover {
    transform: rotate(-90deg);
}
.example-rotate-180:hover {
    transform: rotate(-180deg);
}
.example-rotate5:hover {
    transform: rotate(5deg);
}
.example-rotate15:hover {
    transform: rotate(15deg);
}
.example-rotate30:hover {
    transform: rotate(30deg);
}
.example-rotate60:hover {
    transform: rotate(60deg);
}
.example-rotate90:hover {
    transform: rotate(90deg);
}
.example-rotate180:hover {
    transform: rotate(180deg);
}
.example-rotate360:hover {
    transform: rotate(360deg);
}

  

 

 

 

1.4位移变化

 

 

 

 

 

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
<p>位移变化</p>
<div class="example-t">up</div>
<div class="example-b">bottom</div>
<div class="example-l">left</div>
<div class="example-r">right</div>
  
 
  
 
  
 
  
 
  
 
.example-t,.example-bottom,.example-top,.example-right{
    transition: all .4s;
}
.example-t:hover {
    transform: translate3d(0, -10px, 0);
}
.example-b:hover {
    transform: translate3d(0, 10px, 0);
}
.example-l:hover {
    transform: translate3d(-10px, 0, 0);
}
.example-r:hover {
    transform: translate3d(10px, 0, 0);
}

  

 

 

 

1.5边框变化

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<p>边框变化</p>
<div class="example-border">border</div>
<div class="example-border-in">border-in</div>
  
 
  
 
  
 
  
 
.example-border,.example-border-in{
    transition: all .4s;
}
.example-border:hover {
    box-shadow: 0 0 0 4px #09f, 0 0 1px transparent;
}
.example-border-in:hover {
    box-shadow: inset 0 0 0 4px #09f, 0 0 1px transparent;
}

  

 

 

 

1.6阴影变化

 

 

 

 

效果图和实际有点点差别

 

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
<p>阴影变化</p>
<div class="example-shadow">shadow</div>
<div class="example-shadow-in">shadow-in</div>
<div class="example-shadow-write">shadow-write</div>
<div class="example-shadow-big">shadow-big</div>
  
 
  
 
  
 
  
 
  
 
.example-shadow,.example-shadow-in,.example-shadow-write,.example-shadow-big{
    transition: all .4s;
}
.example-shadow:hover {
    box-shadow: 0 0 10px #333;
}  
.example-shadow-in:hover {
    box-shadow: inset 0 0 10px #333;
}
.example-shadow-write:hover {
    box-shadow: inset 0 0 20px #fff;
}
.example-shadow-big:hover {
    box-shadow: 0 10px 10px -10px rgba(0, 0, 0, 0.5);
    transform: scale(1.1);
}

  

 

 

 

1.7透明度变化

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<p>透明度变化</p>
<div class="example-fade-out">fade-out</div>
<div class="example-fade-in">fade-in</div>
  
 
  
 
  
 
  
 
.example-fade-out,.example-fade-in{
    transition: all .4s;
}
.example-fade-out:hover {
    opacity: .6;
}
.example-fade-in {
    opacity: .5;
}
.example-fade-in:hover {
    opacity: 1;
}

  

 

 

 

1.8圆角变化

 

 

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<p>圆角变化</p>
<div class="example-rectangle">rectangle</div>
<div class="example-radius">radius</div>
  
 
  
 
  
 
  
 
.example-radius,.example-rectangle{
    transition: all .4s;
}
.example-radius {
    border-radius: 10px;
}
.example-radius:hover {
    border-radius: 0;
}
.example-rectangle:hover {
    border-radius: 10px;
}

  

 

 

 

2、颜色动画效果

 

2.1色块变化

 

 

 

 

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
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
<p>色块变化</p>
    <div class="example-fade">fade</div>
<div class="example-fade-t">fade-t</div>
<div class="example-fade-b">fade-b</div>
<div class="example-fade-l">fade-l</div>
<div class="example-fade-r">fade-r</div>
<div class="example-bounce-t">bounce-t</div>
<div class="example-bounce-b">bounce-b</div>
<div class="example-bounce-l">bounce-l</div>
<div class="example-bounce-r">bounce-r</div>
<div class="example-fade-c-out">fade-c-out</div>
<div class="example-fade-c-in">fade-c-in</div>
<div class="example-fade-m-out">fade-m-out</div>
<div class="example-fade-m-in">fade-m-in</div>
<p></p>
<div class="example-overline-l">overline-l</div>
<div class="example-overline-r">overline-r</div>
<div class="example-underline-l">underline-l</div>
<div class="example-underline-r">underline-r</div>
<div class="example-underline-c">underline-c</div>
<div class="example-underline-c-out">underline-c-out</div>
<div class="example-overline-c">overline-c</div>
<div class="example-overline-c-out">overline-c-out</div>
  
 
  
 
  
 
  
 
/* 色块变化 */
        /*当前元素设置相对定位*/
.example-fade, .example-fade-t, .example-fade-b, .example-fade-l, .example-fade-r, .example-fade-c-in, .example-fade-m-in, .example-fade-m-out, .example-fade-c-out, .example-bounce-t, .example-bounce-b, .example-bounce-r, .example-bounce-l {
    position: relative;
    transition: all .3s;
    z-index: 1;
}
/*当前元素的:before和:after设置绝对定位*/
.example-fade:before, .example-fade-t:before, .example-fade-b:before, .example-fade-l:before, .example-fade-r:before, .example-fade-c-in:before, .example-fade-m-in:before, .example-fade-m-out:before, .example-fade-c-in:after, .example-fade-m-in:after, .example-fade-c-out:before {
    position: absolute;
    transition: all .3s;
    content: "";
    display: block;
    background: #09f;
    z-index: -1;
    width: 100%;
    height: 100%;
}
/*弹跳元素:before和:after设置绝对定位和运动曲线*/
.example-bounce-t:before, .example-bounce-b:before, .example-bounce-r:before, .example-bounce-l:before {
    transition: all .3s;
    transition-timing-function: cubic-bezier(0.52, 1.7, 0.5, 0.4);
    position: absolute;
    content: "";
    display: block;
    background: #09f;
    z-index: -1;
    width: 100%;
    height: 100%;
}
/*背景颜色和文字变化*/
.example-fade:before {
    top: 0;
    left: 0;
    transform: scaleX(1);
    opacity: 0;
}
.example-fade:hover:before {
    opacity: 1;
}
/*颜色从左至右变化*/
.example-fade-l:before, .example-bounce-l:before {
    top: 0;
    right: 0;
    transform-origin: 0 50%;
    transform: scaleX(0);
}
/*颜色从右至左变化*/
.example-fade-r:before, .example-bounce-r:before {
    top: 0;
    left: 0;
    transform-origin: 100% 50%;
    transform: scaleX(0);
}
/*颜色从上往下变化*/
.example-fade-t:before, .example-bounce-t:before {
    bottom: 0;
    left: 0;
    transform-origin: 50% 0;
    transform: scaleY(0);
}
/*颜色从下往上变化*/
.example-fade-b:before, .example-bounce-b:before {
    top: 0;
    left: 0;
    transform-origin: 50% 100%;
    transform: scaleY(0);
}
/*颜色垂直居中出去*/
.example-fade-m-out:before {
    top: 0;
    bottom: 0;
    left: 0;
    margin: auto;
    transform: scaleY(0);
}
/*水平居中出去*/
.example-fade-c-out:before {
    top: 0;
    right: 0;
    bottom: 0;
    left: 0;
    margin: auto;
    transform: scaleX(0);
}
.example-fade-c-out:hover:before {
    transform: scaleX(1);
}
/*水平居中进来*/
.example-fade-c-in:before {
    top: 0;
    left: 0;
    transform-origin: 0 50%;
    transform: scaleX(0);
}
.example-fade-c-in:after {
    top: 0;
    right: 0;
    transform-origin: 100% 50%;
    transform: scaleX(0);
}
/*垂直居中进来*/
.example-fade-m-in:before {
    top: 0;
    left: 0;
    transform-origin: 50% 0;
    transform: scaleY(0);
}
.example-fade-m-in:after {
    bottom: 0;
    left: 0;
    transform-origin: 50% 100%;
    transform: scaleY(0);
}
/*当前元素文字颜色变化*/
.example-fade:hover, .example-fade-t:hover, .example-fade-b:hover, .example-fade-l:hover, .example-fade-r:hover, .example-fade-c-in:hover, .example-fade-m-in:hover, .example-fade-m-out:hover, .example-fade-c-out:hover, .example-bounce-t:hover, .example-bounce-b:hover, .example-bounce-r:hover, .example-bounce-l:hover {
    color: #fff;
}
/*垂直方向进来的:before变化(一半)*/
.example-fade-m-in:hover:before, .example-fade-m-in:hover:after {
    transform: scaleY(.51);
}
/*垂直方向进来的:before变化*/
.example-fade-t:hover:before, .example-fade-b:hover:before, .example-fade-m-out:hover:before, .example-bounce-b:hover:before, .example-bounce-t:hover:before {
    transform: scaleY(1);
}
/*水平方向进来的:before变化(一半)*/
.example-fade-c-in:hover:before, .example-fade-c-in:hover:after {
    transform: scaleX(.51);
}
/*水平方向进来的:before变化*/
.example-fade-l:hover:before, .example-fade-r:hover:before,.example-fade-c-out:hover:before, .example-bounce-l:hover:before, .example-bounce-r:hover:before {
    transform: scaleX(1);
}

  

 

 

 

2.2颜色上下线变化

 

 

 

 

 

 

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
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
<p>颜色上下线变化</p>
<div class="example-overline-l">overline-l</div>
<div class="example-overline-r">overline-r</div>
<div class="example-underline-l">underline-l</div>
<div class="example-underline-r">underline-r</div>
<div class="example-underline-c">underline-c</div>
<div class="example-underline-c-out">underline-c-out</div>
<div class="example-overline-c">overline-c</div>
<div class="example-overline-c-out">overline-c-out</div>
  
 
  
 
  
 
  
 
  
 
/*上划线和下划线变化 当前元素样式设置相对定位*/
.example-overline-r, .example-overline-l, .example-underline-r, .example-underline-l, .example-underline-c, .example-overline-c, .example-underline-c-out, .example-overline-c-out{
    position: relative;
    transition: all .3s;
    z-index: 1;
}
/*初始化:after:before大小和绝对定位*/
.example-overline-r:before, .example-overline-l:before, .example-underline-l:before, .example-underline-r:before, .example-underline-c:before, .example-overline-c:before, .example-underline-c:after, .example-overline-c:after, .example-underline-c-out:before, .example-overline-c-out:before {
    position: absolute;
    transition: all .3s;
    content: "";
    display: block;
    background: #09f;
    z-index: -1;
    height: 4px;
    width: 100%;
    transform: scaleX(0);
}
/*上划线 左右出来*/
.example-overline-r:before {
    top: 0;
    left: 0;
    transform-origin: 100% 50%;
}
.example-overline-l:before {
    top: 0;
    right: 0;
    transform-origin: 0 50%;
}
/*下划线 左右出来*/
.example-underline-r:before {
    bottom: 0;
    left: 0;
    transform-origin: 100% 50%;
}
.example-underline-l:before {
    bottom: 0;
    right: 0;
    transform-origin: 0% 50%;
}
/**上划线 下划线 居中进来**/
.example-overline-c:before {
    top: 0;
    transform-origin: 0 50%;
}
.example-overline-c:after {
    top: 0;
    transform-origin: 100% 50%;
}
.example-underline-c:before {
    bottom: 0;
    transform-origin: 0 50%;
}
.example-underline-c:after {
    bottom: 0;
    transform-origin: 100% 50%;
}
.example-overline-c:before, .example-underline-c:before {
    left: 0;
}
.example-overline-c:after, .example-underline-c:after {
    right: 0;
}
/*上划线 下划线-居中出去 */
.example-overline-c-out:before {
    top: 0;
    left: 0;
    right: 0;
    margin: auto;
}
.example-underline-c-out:before {
    bottom: 0;
    left: 0;
    right: 0;
    margin: auto;
}
/*hover效果*/
.example-overline-c:hover:after, .example-overline-c:hover:before, .example-underline-c:hover:after, .example-underline-c:hover:before {
    transform: scaleX(.51);
}
.example-overline-l:hover:before, .example-overline-r:hover:before, .example-underline-l:hover:before, .example-underline-r:hover:before, .example-underline-c-out:hover:before, .example-overline-c-out:hover:before {
    transform: scaleX(1);
}

  

 

 

 

 

2.3箭头变化

 

 

 

 

 

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
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
<p>箭头动画</p>
<div class="example-arrow-l">arrow-l</div>
<div class="example-arrow-r">arrow-r</div>
<div class="example-arrow-t">arrow-t</div>
<div class="example-arrow-b">arrow-b</div>
<div class="example-arrow-l-move">arrow-l</div>
<div class="example-arrow-r-move">arrow-r</div>
<div class="example-arrow-t-move">arrow-t</div>
<div class="example-arrow-b-move">arrow-b</div>
  
 
  
 
  
 
  
 
  
 
/* 箭头动画 */
.example-arrow-l, .example-arrow-r, .example-arrow-t, .example-arrow-b, .example-arrow-l-move, .example-arrow-r-move, .example-arrow-t-move, .example-arrow-b-move{
    position: relative;
    transition: all .3s;
    z-index: 1;
}
/*初始化箭头样式*/
.example-arrow-l:before, .example-arrow-r:before, .example-arrow-t:before, .example-arrow-b:before, .example-arrow-l-move:before, .example-arrow-r-move:before, .example-arrow-t-move:before, .example-arrow-b-move:before {
    position: absolute;
    transition: all .3s;
    content: "";
    display: block;
    z-index: -1;
    border-style: solid;
    margin: auto;
    width: 0;
    height: 0;
}
.example-arrow-l:before, .example-arrow-l-move:before {
    left: 0;
    top: 0;
    bottom: 0;
    border-width: 10px 10px 10px 0;
    border-color: transparent #ccc transparent transparent;
}
.example-arrow-r:before, .example-arrow-r-move:before {
    right: 0;
    top: 0;
    bottom: 0;
    border-width: 10px 0 10px 10px;
    border-color: transparent transparent transparent #ccc;
}
.example-arrow-t:before, .example-arrow-t-move:before {
    left: 0;
    top: 0;
    right: 0;
    border-width: 0 10px 10px 10px;
    border-color: transparent transparent #ccc transparent;
}
.example-arrow-b:before, .example-arrow-b-move:before {
    left: 0;
    bottom: 0;
    right: 0;
    border-width: 10px 10px 0 10px;
    border-color: #ccc transparent transparent transparent;
}
.example-arrow-l-move, .example-arrow-r-move, .example-arrow-t-move, .example-arrow-b-move {
    transition: transform .3s;
}
/*hover效果*/
.example-arrow-l-move:hover {
    transform: translateX(10px);
}
.example-arrow-r-move:hover {
    transform: translateX(-10px);
}
.example-arrow-t-move:hover {
    transform: translateY(10px);
}
.example-arrow-b-move:hover {
    transform: translateY(-10px);
}
.example-arrow-l-move:hover:before, .example-arrow-l:hover:before {
    transform: translateX(-10px);
}
.example-arrow-r-move:hover:before, .example-arrow-r:hover:before {
    transform: translateX(10px);
}
.example-arrow-t-move:hover:before, .example-arrow-t:hover:before {
    transform: translateY(-10px);
}
.example-arrow-b-move:hover:before, .example-arrow-b:hover:before {
    transform: translateY(10px);
}

  

 

 

 

 

 

 

 

 

 

 

posted @   前端小小瀚  阅读(2059)  评论(1编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
点击右上角即可分享
微信分享提示