CSS 加載動畫:理查等等

Rachel Wen 2019/12/31 17:08:26
228

此文章分兩個部分:「 簡易加載動畫 」、「 加工:理查等等 」

 

一、簡易加載動畫

1. 建立加載範圍:背景先使用黑色,方便開發及調整

<div class="loading">
</div>
$loading-wh: 20em
$mask-wh: $loading-wh/2
$body-border-size: 0.4em

$body-wh: $loading-wh
$body-wh-del: $loading-wh/2
$border-color: #555
$bg-color: #ccc
$body-color: #fff

body
  background-color: $bg-color

.loading
  position: relative
  width: $loading-wh
  height: $loading-wh
  margin: $loading-wh auto
  background-color : black

 

2. 建立加載主體:使用「 border-radius: 50% 」,建立圓形

<div class="loading">
  <div class="body" />
</div>
.body
  position : absolute
  width : $body-wh
  height : $body-wh
  background-color : $body-color
  border-radius : 50%
  
  &:before
    content: ''
    position: absolute
    width: $body-wh-del
    height: $body-wh-del
    background-color: $bg-color
    top: $body-wh-del/2
    left: $body-wh-del/2
    border-radius : 50%

 

3. 建立遮罩 ( mask ),使其產生旋轉的變化 並 製作旋轉動畫

 

    a. 變化:網頁元素可使用「 transform 」屬性產生變化,變化的項目包含:縮放、選轉,等等。

                   例如:CSS 第 9 行:transform: rotate(45deg),代表該元素「 旋轉45度 」  ref:CSS3 transform 屬性

    b. 動畫:

         i. animation: name duration timing-function delay iteration-count direction;

                             name : 動畫名稱 / duration:動畫總時間 / timing-function:速度曲線

                             delay:動畫開始前的延遲時間 / iteration-count:播放次數 / direction:是否反向輪流播放

               例如:CSS 第 10 行:animation: mask-animation 2.5s 1s infinite,

                          代表該元素「 讀取動畫『 mask-animation 』,一次動畫花費 2.5 秒,一開始要延遲 1 秒,不限制重複次數 」 

        ii. @keyframes:「 animation:name  所對應動畫內容

               例如:CSS 第 12-16 行:開始時旋轉 45 度,結束時轉到 -675 度。

 

<div class="loading">
  <div class="body" />
  <div class="mask" />
</div>
.mask
  position: absolute
  width: $mask-wh
  height: $mask-wh
  background-color: #4ce
  transform-origin: right bottom

.mask
  transform: rotate(45deg)
  animation: mask-animation 2.5s 1s infinite

@keyframes mask-animation
  0%
    transform: rotate(45deg)
  100%
    transform: rotate(-675deg)

 

4. 顏色調整:將遮罩顏色調整為背景色,使其被視為隱藏(消失)

<div class="loading">
  <div class="body" />
  <div class="mask" />
</div>
.loading
  /*ground-color : black
.mask
  background-color: $bg-color

 

以上,完成簡易的加載動畫。

 

 

二、加工:理查等等

 

1. 參考前述的做法,增加頭及腳的遮罩

<div class="loading">
  <div class="body"></div>
  <div class="mask"></div>
  <div class="mask-head"></div>
  <div class="mask-foot"></div>
</div>
.mask-foot, .mask-head
  position: absolute
  width: $mask-wh
  height: $mask-wh
  background-color: $bg-color
  transform: rotate(45deg)

.mask-foot
  left: 0
  bottom: 0
  background-color: yellow
  transform-origin: right top
  
.mask-head
  right: 0
  top: 0
  background-color: blue
  transform-origin: left bottom

 

2. 加入其他定位細節,完成加載動畫

( 因本文是以 CSS動畫為主,定位為輔;詳細的定位教學,可上網搜尋參閱。 )

 

  以上就是 CSS動畫 的簡單範例,有興趣也可以試看看。= )

 

Rachel Wen