
效果預覽
線上示範按下右側的“點選預覽”按鈕可以在目前頁面預覽,點選連結可以全屏預覽。
https://codepen.io/comehope/pen/VdbGvr可互動視訊
此視訊是可以互動的,你可以随時暫停視訊,編輯視訊中的代碼。
請用 chrome, safari, edge 打開觀看。
https://scrimba.com/p/pEgDAM/cky6wfa源代碼下載下傳
本地下載下傳每日前端實戰系列的全部源代碼請從 github 下載下傳:
https://github.com/comehope/front-end-daily-challenges代碼解讀
定義 dom,隻有一個元素:
<div class="radar"></div>
居中顯示:
body {
margin: 0;
height: 100vh;
display: flex;
align-items: center;
justify-content: center;
background: radial-gradient(circle at center, silver, black);
}
設定容器的尺寸,背景為黑色:
.radar {
width: 8em;
height: 8em;
font-size: 32px;
background:
linear-gradient(black, black);
}
在背景上畫出 4 個同心圓:
.radar {
background:
repeating-radial-gradient(
transparent 0,
transparent 0.95em,
darkgreen 0.95em,
darkgreen 1em),
linear-gradient(black, black);
}
在背景上再畫出十字坐标線:
.radar {
background:
linear-gradient(
90deg,
transparent 49.75%,
darkgreen 49.75%,
darkgreen 50.25%,
transparent 50.25%),
linear-gradient(
transparent 49.75%,
darkgreen 49.75%,
darkgreen 50.25%,
transparent 50.25%),
repeating-radial-gradient(
transparent 0,
transparent 0.95em,
darkgreen 0.95em,
darkgreen 1em),
linear-gradient(black, black);
}
用僞元素畫出面積等于容器面積四分之一的正方形:
.radar {
position: relative;
}
.radar::before {
content: '';
position: absolute;
width: calc(8em / 2);
height: calc(8em / 2);
}
把正方形變為有拖尾效果的扇形:
.radar::before {
background: linear-gradient(
45deg,
rgba(0, 0, 0, 0) 50%,
rgba(0, 192, 0, 1) 100%
);
border-radius: 100% 0 0 0;
}
把容器改為圓形:
.radar {
border-radius: 50%;
}
為容器增加一點邊距,以便清晰地展示最外側的同心圓:
.radar {
width: calc(8em + 1.5em);
height: calc(8em + 1.5em);
}
.radar::before {
top: calc(1.5em / 2);
left: calc(1.5em / 2);
}
最後,為拖尾增加轉動效果:
.radar::before {
animation: scanning 5s linear infinite;
transform-origin: 100% 100%;
}
@keyframes scanning {
to {
transform: rotate(360deg);
}
}
大功告成!
原文位址:https://segmentfault.com/a/1190000015283286