前端每日實戰:103# 影片演示如何用純 CSS 創作一隻監視眼

choubou發表於2021-09-09

效果預覽

按下右側的“點選預覽”按鈕可以在當前頁面預覽,點選連結可以全屏預覽。

點選預覽


可互動影片

此影片是可以互動的,你可以隨時暫停影片,編輯影片中的程式碼。

請用 chrome, safari, edge 開啟觀看。

原始碼下載

每日前端實戰系列的全部原始碼請從 github 下載:

程式碼解讀

定義 dom,容器中包含 10 個元素,每個元素代表 1 個圓環:

                                                   

居中顯示:

body {     margin: 0;     height: 100vh;     display: flex;     align-items: center;     justify-content: center;     background-color: lightgoldenrodyellow; }

定義容器尺寸和其中子元素的佈局方式:

.circles {     width: 10em;     height: 10em;     font-size: 30px;     border: 1px dashed black;     display: flex;     justify-content: center; }

為每個圓環定義下標變數:

.circles span:nth-child(1) {     --n: 1; } .circles span:nth-child(2) {     --n: 2; } .circles span:nth-child(3) {     --n: 3; } .circles span:nth-child(4) {     --n: 4; } .circles span:nth-child(5) {     --n: 5; } .circles span:nth-child(6) {     --n: 6; } .circles span:nth-child(7) {     --n: 7; } .circles span:nth-child(8) {     --n: 8; } .circles span:nth-child(9) {     --n: 9; } .circles span:nth-child(10) {     --n: 10; }

設定每個的圓環的尺寸,顏色黑白間隔:

.circles {     position: relative; } .circles span {     position: absolute;     --diameter: calc(10em - (var(--n) - 1) * 1em);     width: var(--diameter);     height: var(--diameter);     border-radius: 50%; } .circles span:nth-child(odd) {     background-color: darkred; } .circles span:nth-child(even) {     background-color: gold; }

把尺寸最小的 3 個圓環向下移動,形成凹陷的效果:

.circles span:nth-child(n+8) {     top: calc((var(--n) - 7) * 1em); }

讓容器旋轉起來,就好像一隻監視的眼睛轉來轉去:

.circles {     animation: rotating 5s linear infinite; } @keyframes rotating {     to {         transform: rotate(1turn);     } }

大功告成!

原文連結:

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/4548/viewspace-2811857/,如需轉載,請註明出處,否則將追究法律責任。

相關文章