純CSS打造邊框亮點移動效果
阿新 • • 發佈:2019-01-30
引言
在足球和籃球比賽的電視轉播中,記分版在剛彈出時,通常會在左下角和右上角出現兩個亮點,並沿著記分版邊緣移動一段距離,最後消失。這種動畫效果可以幫助觀眾更加關注相對單調的記分版。
最近正好在研究CSS動畫,一直在嘗試使用涉及@keyframes的純CSS來做出這個效果,終於成功實現了。
HTML程式碼
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>邊框動畫</title>
<style type="text/css">
.shine {
position: absolute;
top: 0;
bottom: 0;
left: 0;
right: 0;
width: 300px;
height: 60px;
margin: auto;
background-color: #333;
box-shadow: inset 0 0 2px 5px #8B7500;
border-radius: 2px;
color: #FFD700;
}
.shine::before, .shine::after {
position: absolute;
top: 2 px;
bottom: 0;
left: 2px;
right: 0;
content: '';
z-index: -1;
margin: 0;
box-shadow: 0 0 3px 2px #FFD700;
width: 5px;
height: 5px;
background-color: #FFD700;
border-radius: 50%;
}
.shine::before {
animation:leftShine 6s linear;
-moz-animation:leftShine 6s linear; /* Firefox */
-webkit-animation :leftShine 6s linear; /* Safari and Chrome */
-o-animation:leftShine 6s linear; /* Opera */
}
.shine::after {
animation:rightShine 6s linear;
-moz-animation:rightShine 6s linear; /* Firefox */
-webkit-animation:rightShine 6s linear; /* Safari and Chrome */
-o-animation:rightShine 6s linear; /* Opera */
}
/* Animation for shine point on left */
@keyframes leftShine {
0% {top: 57px; left: 27px;}
25% {top: 57px; left: -2px;}
75% {top: -2px; left: -2px;}
100% {top: -2px; left: 27px;}
}
/* Firefox */
@-moz-keyframes leftShine {
0% {top: 57px; left: 27px;}
25% {top: 57px; left: -2px;}
75% {top: -2px; left: -2px;}
100% {top: -2px; left: 27px;}
}
/* Safari 和 Chrome */
@-webkit-keyframes leftShine {
0% {top: 57px; left: 27px;}
25% {top: 57px; left: -2px;}
75% {top: -2px; left: -2px;}
100% {top: -2px; left: 27px;}
}
/* Opera */
@-o-keyframes leftShine {
0% {top: 57px; left: 27px;}
25% {top: 57px; left: -2px;}
75% {top: -2px; left: -2px;}
100% {top: -2px; left: 27px;}
}
/* Animation for shine point on right */
@keyframes rightShine {
0% {top: -2px; left: 268px;}
25% {top: -2px; left: 297px;}
75% {top: 57px; left: 297px;}
100% {top: 57px; left: 268px;}
}
/* Firefox */
@-moz-keyframes rightShine {
0% {top: -2px; left: 268px;}
25% {top: -2px; left: 297px;}
75% {top: 57px; left: 297px;}
100% {top: 57px; left: 268px;}
}
/* Safari 和 Chrome */
@-webkit-keyframes rightShine {
0% {top: -2px; left: 268px;}
25% {top: -2px; left: 297px;}
75% {top: 57px; left: 297px;}
100% {top: 57px; left: 268px;}
}
/* Opera */
@-o-keyframes rightShine {
0% {top: -2px; left: 268px;}
25% {top: -2px; left: 297px;}
75% {top: 57px; left: 297px;}
100% {top: 57px; left: 268px;}
}
</style>
</head>
<body>
<div class="shine"></div>
</body>
</html>
CSS說明
上述程式碼只涉及很簡單的html,絕大部分是CSS的內容。
- 使用.shine::before和.shine::after來分別處理左下角和右上角兩個亮點的移動
- 設定好亮點的背景色,並設定border-radius:50%來將其改為圓點,採用box-shadow樣式加入模糊來模擬光線散射效果
- 通過leftShine和rightShine兩個keyframes效果來分別指定左右兩個點的動畫路徑,具體說明請自行參閱w3cschool
效果展示
- 初始階段
- 中途階段
- 即將完成
- 最終完成