利用 clip-path 實(shí)現(xiàn)環(huán)形進(jìn)度條

??昨天逛網(wǎng)頁(yè)時(shí)看到有用css與js實(shí)現(xiàn)環(huán)形進(jìn)度條的(那位博主在面試時(shí)被要求當(dāng)場(chǎng)寫出環(huán)形進(jìn)度條π_π)恩溅,然后就想嘗試下寫出來(lái)(感覺好尷尬),說(shuō)實(shí)話春節(jié)后遺癥真可怕 haha~

??看了網(wǎng)上的三種方法實(shí)現(xiàn)方式如下:

  • DIV旋轉(zhuǎn)

??兩個(gè)clip過(guò)的半圓谓娃,邊框設(shè)置顏色脚乡,左側(cè)的用來(lái)旋轉(zhuǎn),右側(cè)的固定不動(dòng)(width:0px;)滨达,當(dāng)進(jìn)度到達(dá)50%時(shí)奶稠, 右側(cè)的半圓顯示出來(lái)(同時(shí)左半圓和右半圓的父元素div覆蓋最外層的div),左側(cè)的半圓繼續(xù)旋轉(zhuǎn) 弦悉。
??可能我沒說(shuō)清楚窒典,原文鏈接:http://blog.csdn.net/angeljsl/article/details/51208960

  • SVG提供的一個(gè)范圍廣泛stroke 屬性

??使用SVGstroke-dasharray寥寥數(shù)行實(shí)現(xiàn)圓環(huán)loading進(jìn)度效果蟆炊,原文鏈接:http://www.zhangxinxu.com/wordpress/?p=4889

  • SVG中的path進(jìn)行繪制

??利用path元素稽莉,使用path指令繪制扇形,原文鏈接:http://www.tuicool.com/articles/e2UzuaQ

??常用的path指令:

    M = moveto(M X,Y) :將畫筆移動(dòng)到指定的坐標(biāo)位置
    
    L = lineto(L X,Y) :畫直線到指定的坐標(biāo)位置
    
    H = horizontal lineto(H X):畫水平線到指定的X坐標(biāo)位置
    
    V = vertical lineto(V Y):畫垂直線到指定的Y坐標(biāo)位置
    
    A = elliptical Arc(A RX,RY,XROTATION,FLAG1,FLAG2,X,Y):弧線
    
    Z = closepath():關(guān)閉路徑

兩個(gè)介紹 SVG比較詳細(xì)的網(wǎng)址
??http://www.w3cplus.com/css3/using-making-sense-of-clip-path.html
??http://www.mb5u.com/HTML5/html5_96413.html

下面本人使用CSS3中的clip-path屬性實(shí)現(xiàn)的效果

www.reibang.com/u/7814fc84433b.png
www.reibang.com.png

??核心就是使用-webkit-clip-path:polygon();切割div涩搓,border-radius:50%;畫出圓弧

直接上代碼

<!DOCTYPE html>
<html>
<head>
    <meta charset="{CHARSET}">
    <title>利用 clip-path 實(shí)現(xiàn)環(huán)形進(jìn)度條</title>
    <style type="text/css">
        *{margin:0;padding:0;}
        #circle,.test1{
            width:200px;
            height:200px;
            border-radius:50%;                                          
        }
        #circle{
            background-color:#ccc;
            text-align:center;
            position:relative;
            left:50px;
            top:50px;
        }
        .test2{
            background-color:blue;
            /*position: absolute;*/
            /*clip: rect(0px,200px,200px,100px);*/
            /*-webkit-clip-path:polygon(50% 50%,50% 0%,100% 0%,100% 100%,0% 100%,0% 0%,30% 0%);*/
        }
        .circle-ban{
            width:170px;
            height:170px;
            border-radius:50%;
            background-color:white; 
            position:absolute;
            top:15px;       
            left:15px;
        }
        .circle-ban p{margin-top:76px;}         
    </style>
</head>
<body>
    <div id="circle">
        <div class="test1"></div>
        <div class="circle-ban">
            <p><span class="mask">0</span>%</p>
        </div>
    </div>      
    <script src="http://libs.baidu.com/jquery/2.0.0/jquery.min.js"></script>
    <script type="text/javascript">
        function press(r){
            /* 百分比與角度的關(guān)系
             * 100%對(duì)應(yīng)360度->1%=3.6deg
             * 角度與周長(zhǎng)的關(guān)系
             * 360度對(duì)應(yīng)長(zhǎng)度為800->0.45deg=1px
             * 百分比與周長(zhǎng)的關(guān)系
             * 100%對(duì)應(yīng)周長(zhǎng)800->0.125%=1px           
             * ----->1%=8px
             * 45deg=100px(角度對(duì)應(yīng)的周長(zhǎng))=50%(clip-path中的百分比)
             * ------->100%(百分比值)=400%(clip-path中的百分比)
             */

            var r=r*4;
            var div=$(".test1");
            div.addClass("test2");
            var k1="polygon(50% 50%,50% 0%,";
            var k2=k1+"100% 0%,";
            var k3=k2+"100% 100%,";
            var k4=k3+"0% 100%,";
            var k5=k4+"0% 0%,";
            if(r<=50){
                r+=50;
                div.css({"-webkit-clip-path":k1+r+"% 0%)"});                    
            }else if((r>50)&&(r<=150)){
                r-=50;
                div.css({"-webkit-clip-path":k2+"100% "+r+"%)"});
            }else if((r>150)&&(r<=250)){
                r=250-r;
                div.css({"-webkit-clip-path":k3+r+"% 100%)"});
            }else if((r>250)&&(r<=350)){
                r=350-r;
                div.css({"-webkit-clip-path":k4+"0% "+r+"%)"});
            }else if((r>350)&&(r<=400)){
                r-=350;
                div.css({"-webkit-clip-path":k5+r+"% 0%)"});
            }
        }           
        var n=0;
        var timer=setInterval((function(){
            n++;
            if(n==100){clearInterval(timer);timer=null;}                
            $(".mask").text(n);
            press(n);
        }),100);

    </script>
</body>
</html>
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末污秆,一起剝皮案震驚了整個(gè)濱河市劈猪,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌良拼,老刑警劉巖战得,帶你破解...
    沈念sama閱讀 212,718評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異庸推,居然都是意外死亡常侦,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,683評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門贬媒,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)聋亡,“玉大人,你說(shuō)我怎么就攤上這事际乘∑戮螅” “怎么了?”我有些...
    開封第一講書人閱讀 158,207評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵脖含,是天一觀的道長(zhǎng)罪塔。 經(jīng)常有香客問(wèn)我,道長(zhǎng)养葵,這世上最難降的妖魔是什么征堪? 我笑而不...
    開封第一講書人閱讀 56,755評(píng)論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮关拒,結(jié)果婚禮上请契,老公的妹妹穿的比我還像新娘。我一直安慰自己夏醉,他們只是感情好爽锥,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,862評(píng)論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著畔柔,像睡著了一般氯夷。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上靶擦,一...
    開封第一講書人閱讀 50,050評(píng)論 1 291
  • 那天腮考,我揣著相機(jī)與錄音,去河邊找鬼玄捕。 笑死踩蔚,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的枚粘。 我是一名探鬼主播馅闽,決...
    沈念sama閱讀 39,136評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了福也?” 一聲冷哼從身側(cè)響起局骤,我...
    開封第一講書人閱讀 37,882評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎暴凑,沒想到半個(gè)月后峦甩,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,330評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡现喳,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,651評(píng)論 2 327
  • 正文 我和宋清朗相戀三年凯傲,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片嗦篱。...
    茶點(diǎn)故事閱讀 38,789評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡泣洞,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出默色,到底是詐尸還是另有隱情球凰,我是刑警寧澤,帶...
    沈念sama閱讀 34,477評(píng)論 4 333
  • 正文 年R本政府宣布腿宰,位于F島的核電站呕诉,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏吃度。R本人自食惡果不足惜甩挫,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,135評(píng)論 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望椿每。 院中可真熱鬧伊者,春花似錦、人聲如沸间护。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,864評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)汁尺。三九已至法精,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間痴突,已是汗流浹背搂蜓。 一陣腳步聲響...
    開封第一講書人閱讀 32,099評(píng)論 1 267
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留辽装,地道東北人帮碰。 一個(gè)月前我還...
    沈念sama閱讀 46,598評(píng)論 2 362
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像拾积,于是被迫代替她去往敵國(guó)和親殉挽。 傳聞我的和親對(duì)象是個(gè)殘疾皇子丰涉,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,697評(píng)論 2 351

推薦閱讀更多精彩內(nèi)容

  • 當(dāng)你指責(zé)“趨勢(shì)”沒有盡到朋友的義務(wù)時(shí),請(qǐng)先問(wèn)問(wèn)自己玲销,是否真的拿“趨勢(shì)”當(dāng)朋友了输拇? ——金融帝國(guó) “趨勢(shì)是你的朋友”...
    Julien_竹先生閱讀 537評(píng)論 0 15
  • 終有一天,當(dāng)我和你面對(duì)面時(shí)贤斜。 我可以望著你的眼眸策吠, 用靜默的笑意對(duì)你訴說(shuō): 謝謝你,成就了我的無(wú)所眷戀瘩绒。 謝謝你猴抹,...
    Lucky感謝愛閱讀 400評(píng)論 0 6
  • 從小到大我都覺得自己是一個(gè)內(nèi)向但又不太內(nèi)向的人蟀给,我喜歡有獨(dú)處的空間,在陌生人面前比較靦腆阳堕,但在熟人面前跋理,我可以很瘋...
    卓安安閱讀 297評(píng)論 8 4
  • 有點(diǎn)起不來(lái)床,訂鬧鐘是八點(diǎn)起恬总,還在做夢(mèng)前普,夢(mèng)見上生物課,班級(jí)一共就帶我四個(gè)人壹堰,有三個(gè)同學(xué)坐后排的位子拭卿,我在門口徘徊要...
    悠哉輕創(chuàng)聯(lián)盟閱讀 247評(píng)論 0 0