圓弧和扇形的加載動畫-遁地龍卷風

0.靜態效果圖

1.畫弧度的代碼

width: 3em;
height: 3em;
border: 7px transparent solid;
border-left: 7px #4DB6AC solid;
border-radius: 50%;

 

  

* 這里還有另一個方式

border-left:7px #4DB6AC solid;	
border-radius: 50%;
border-top:7px transparent solid;
border-bottom:7px transparent solid;

 

  后者做成旋轉動畫效果不如前者,肉眼能感到差異,在chrome49.

2.畫扇形的代碼

border: 7px transparent solid;
border-left: 7px #4DB6AC solid;
border-radius: 50%;

 

  

* 畫扇形不可以定義寬度和長度,其余與畫圓弧相同

3.less 封裝畫圓弧和扇形的代碼

.arc(@direction,@style){
@color:~`"@{style}".split(/,\s+/)[1]`;
@width:~`"@{style}".split(/,\s+/)[0].replace("[","")`;
@shape:~`"@{style}".split(/,\s+/)[2].replace("]","")`;
border: @width transparent @shape;
@length:length(@direction);
.setStyle(@length,@style,@direction);
border-radius: 50%;

.setStyle(@length,@style,@direction) when (@length>0){
@index:@length - 1;
@pos:extract(@direction,@length);
[email protected]{pos}:@style ;
.setStyle(@index,@style,@direction);

}
}
//使用方式:
@driection 可以是top、left、right、bottom中的一個或多個
@style 需要嚴格按照 7px solid red 這樣的順序
.arc(left,7px solid red);
.arc(left top,7px solid red);

4.加載動畫的完整代碼

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style>
         html,body {
          overflow: hidden;
          width: 100%;
          height: 100%;
        }
        .container {
          display: -webkit-box;
          display: -ms-flexbox;
          display: flex;
          -ms-flex-wrap: wrap;
          flex-wrap: wrap;
          -webkit-box-pack: space-around;
          -ms-flex-pack: space-around;
          justify-content: space-around;
          margin: 0 auto;
          max-width: 650px;
          min-width: 200px;
        }
        .container .canvas {
          -webkit-box-align: center;
          -ms-flex-align: center;
          align-items: center;
          display: -webkit-box;
          display: -ms-flexbox;
          display: flex;
          -webkit-box-pack: center;
          -ms-flex-pack: center;
          justify-content: center;
          background: #eee;
          border-radius: 50%;
          -webkit-box-shadow: 0 5px 20px rgba(0, 0, 0, 0.2);
          box-shadow: 0 5px 20px rgba(0, 0, 0, 0.2);
          height: 10em;
          width: 10em;
          margin: 1em 1em 2em 1em;
        }
        .container .canvas .spinner4 {
          width: 3em;
          height: 3em;
          border: 7px transparent solid;
          border-left: 7px #4DB6AC solid;
          border-radius: 50%;
          -webkit-animation: spinner4 1s linear infinite;
          animation: spinner4 1s linear infinite;
        }
        @-webkit-keyframes spinner4 {
          100% {
            -webkit-transform: rotate(360deg);
            -ms-transform: rotate(360deg);
            -o-transform: rotate(360deg);
            transform: rotate(360deg);
          }
        }
        @keyframes spinner4 {
          100% {
            -webkit-transform: rotate(360deg);
            -ms-transform: rotate(360deg);
            -o-transform: rotate(360deg);
            transform: rotate(360deg);
          }
        }
        .container .canvas .spinner5 {
          border: 1.5em transparent solid;
          border-right: 1.5em #4DB6AC solid;
          border-left: 1.5em #4DB6AC solid;
          border-radius: 50%;
          -webkit-animation: spinner5 1s linear infinite;
          animation: spinner5 1s linear infinite;
        }
        @-webkit-keyframes spinner5 {
          0% {
            transform: rotate(0deg);
          }
          50% {
            transform: rotate(60deg);
          }
          100% {
            transform: rotate(360deg);
          }
        }
        @keyframes spinner5 {
          0% {
            transform: rotate(0deg);
          }
          50% {
            transform: rotate(60deg);
          }
          100% {
            transform: rotate(360deg);
          }
        }
        .container .canvas .spinner6 {
          width: 1em;
          height: 1em;
          border-radius: 50%;
          background-color: #4db6ac;
          margin: 0.1em;
          -webkit-animation: fall 1s linear infinite;
          animation: fall 1s linear infinite;
        }
        
        
    </style>
</head>

<body>
    <div class="container">
        <div class="canvas">
            <div class="spinner4"></div>
        </div>
        <div class="canvas">
            <div class="spinner5"></div>
        </div>
    </div>
</body>

</html>

5.聲明

案例代碼是我從網上看到的,我自己模仿了一下但無論效果和方法上都不如前者。

欣慰的是能夠知道原理,只是細節之處還需練習。

來源:itnose

上一篇: jQuery.validate 的form校驗

下一篇: HTML5-Web存儲

分享到: 更多
通比牛牛出牛牛规律 幸运28方法 pk10冠军大小单双口诀 重庆时时51计划 重庆时时51计划 注册立马送彩金的娱乐网址 重庆时时彩后一技巧 球探比分网足球即时比 重庆欢乐生肖对应的号码 分分彩彩后一100稳赚 后三组选包胆必中计划 管家婆原创36码 网上玩龙虎有技巧吗 电子游戏平台抢庄牌九 球探体育足球比分直播 篮球赛