溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么用純CSS實現(xiàn)一個圓環(huán)旋轉(zhuǎn)錯覺的動畫效果

發(fā)布時間:2022-02-25 16:53:57 來源:億速云 閱讀:279 作者:iii 欄目:web開發(fā)

本文小編為大家詳細介紹“怎么用純CSS實現(xiàn)一個圓環(huán)旋轉(zhuǎn)錯覺的動畫效果”,內(nèi)容詳細,步驟清晰,細節(jié)處理妥當,希望這篇“怎么用純CSS實現(xiàn)一個圓環(huán)旋轉(zhuǎn)錯覺的動畫效果”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學習新知識吧。

效果圖:

怎么用純CSS實現(xiàn)一個圓環(huán)旋轉(zhuǎn)錯覺的動畫效果

  代碼解讀

  定義dom,容器中包含10個<div>子元素,每個<div>子元素內(nèi)還有一個<span>子元素:

  <figureclass="container">

  <div><span></span></div>

  <div><span></span></div>

  <div><span></span></div>

  <div><span></span></div>

  <div><span></span></div>

  <div><span></span></div>

  <div><span></span></div>

  <div><span></span></div>

  <div><span></span></div>

  <div><span></span></div>

  </figure>

  定義容器尺寸:

  .container{

  width:17em;

  height:17em;

  font-size:16px;

  }

  定義子元素的尺寸,和容器相同:

  .container{

  position:relative;

  }

  .containerdiv{

  position:absolute;

  width:inherit;

  height:inherit;

  }

  在子元素的正中畫一個黃色的小方塊:

  .containerdiv{

  display:flex;

  align-items:center;

  justify-content:center;

  }

  .containerspan{

  position:absolute;

  width:1em;

  height:1em;

  background-color:yellow;

  }

  增加讓小方塊左右移動的動畫效果,動畫時長還會在后面用到,所以定義成變量:

  .containerspan{

  --duration:2s;

  animation:movevar(--duration)infinite;

  }

  @keyframesmove{

  0%,100%{

  left:calc(10%-0.5em);

  }

  50%{

  left:calc(90%-0.5em);

  }

  }

  用貝賽爾曲線調(diào)整動畫的時間函數(shù),使小方塊看起來就像在左右兩側(cè)跳來跳去:

  .containerspan{

  animation:movevar(--duration)cubic-bezier(0.6,-0.3,0.7,0)infinite;

  }

  增加小方塊變形的動畫,使它看起來有下蹲起跳的擬人效果:

  .containerspan{

  animation:

  movevar(--duration)cubic-bezier(0.6,-0.3,0.7,0)infinite,

  morphvar(--duration)ease-in-outinfinite;

  }

  @keyframesmorph{

  0%,50%,100%{

  transform:scale(0.75,1);

  }

  25%,75%{

  transform:scale(1.5,0.5);

  }

  }

  至此,完成了1個方塊的動畫。接下來設置多個方塊的動畫效果。

  為子元素定義CSS下標變量:

  .containerdiv:nth-child(1){--n:1;}

  .containerdiv:nth-child(2){--n:2;}

  .containerdiv:nth-child(3){--n:3;}

  .containerdiv:nth-child(4){--n:4;}

  .containerdiv:nth-child(5){--n:5;}

  .containerdiv:nth-child(6){--n:6;}

  .containerdiv:nth-child(7){--n:7;}

  .containerdiv:nth-child(8){--n:8;}

  .containerdiv:nth-child(9){--n:9;}

  旋轉(zhuǎn)子元素,使小方塊分布均勻地在容器的四周,圍合成一個圓形:

  .containerp{

  transform:rotate(calc(var(--n)*40deg));

  }

  設置動畫延時,現(xiàn)在看起來就像是一群小方塊貼著一個圓的內(nèi)邊線在旋轉(zhuǎn)了(但實際上沒有任何元素在做旋轉(zhuǎn)運動,大腦感覺到的旋轉(zhuǎn)是一種錯覺):

  .containerspan{

  animation-delay:calc(var(--duration)/9*var(--n)*-1);

  }

  最后,為小方塊上色:

  .containerspan{

  background-color:hsl(calc(var(--n)*80deg),100%,70%);

  }

讀到這里,這篇“怎么用純CSS實現(xiàn)一個圓環(huán)旋轉(zhuǎn)錯覺的動畫效果”文章已經(jīng)介紹完畢,想要掌握這篇文章的知識點還需要大家自己動手實踐使用過才能領會,如果想了解更多相關內(nèi)容的文章,歡迎關注億速云行業(yè)資訊頻道。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

css
AI