摘要:引子移動端做一個加載的圖標,跟以往沿用的都不太一樣,是一個圓環進度條,圓環進度條也就罷了,還得能用百分比控制。
引子
移動端做一個 loadiing 加載的圖標,跟以往沿用的都不太一樣,是一個圓環進度條,圓環進度條也就罷了,還得能用百分比控制。CSS3 實現圓環
demo
剛開始寫這個圓環的時候是參照帖子上給出的css代碼代入,然后根據自己的需求改,發現圓環可以完美轉動了,但是好像沒法用百分比控制,所以放棄了隨便copy一個現成的想法,該動動腦子還是有必要的。
實現原理css實現圓環的方法很多,我看大部分都是采用邊框(border)+ 裁剪(clip:rect())來實現的,所以我也準備采用這種方式。
主要是布局問題,我看大部分圓環進度條都大同小異,就是布局和轉動方式不同
// html// css .loading { position: fixed; top: 50%; left: 50%; overflow: hidden; z-index: 9999; -webkit-transform: translate(-50%,-50%); transform: translate(-50%,-50%); } .circle{ -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; border:10px solid #fff; clip:rect(0,100px,100px,50px); } .clip-auto{ clip:rect(auto, auto, auto, auto); } .percent{ -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; top:-10px; left:-10px; } .left{ -webkit-transition:-webkit-transform ease; transition:-webkit-transform ease; transition:transform ease; border:10px solid #E54B00; clip: rect(0,50px,100px,0); } .right{ border:10px solid #E54B00; clip: rect(0,100px,100px,50px); } .wth0{ width:0; } // js $(".left").animate({ deg: per*3.6 }, { step: function(n, fx) { if(per>180){ $(".circle").addClass("clip-auto"); $(".right").removeClass("wth0"); } $(this).css({ "-webkit-transform":"rotate("+n+"deg)", "-moz-transform":"rotate("+n+"deg)", "transform":"rotate("+n+"deg)" }); }, duration:500 })
通過對 .circle(左右兩側圓環的父元素) 的裁剪只顯示左側的圓環,右側的圓環的寬度直接為 0 ,當進度條進行到50%的時候,即左側圓環轉動角度為 transform: rotate(180deg) ,將 .circle 的裁剪去掉 (.clip-auto),右側圓環的寬度恢復。基本就是這個套路。
jQuery的 動畫方法 animate() 的 step屬性如果僅用
$(this).css({ "-webkit-transform":"rotate("+n+"deg)", "-moz-transform":"rotate("+n+"deg)", "transform":"rotate("+n+"deg)" });
來控制角度的轉動,沒有絲毫動畫顯得比較生硬,這時候就要考慮給它加個動畫了,而jq提供的 animate 對只有數字值可創建動畫,而字符串類型的值無法創建動畫。
這時候需要用到 animate的step屬性了。
step介紹animate的progress屬性是我們經常用的,對數字值的屬性進行操作,但是字符串值的屬性卻并不能用它進行操作,這時候就需要step屬性了。
step 顧名思義就是對一段動畫進行步驟分解,在animate方法中,每一步具體是怎么分解的,不是由我們設定的CSS屬性值和動畫時長來決定的,是由系統來決定的。
$(".left").animate({left:50},{ duration:100, step:function(now,fx){ console.log(now) //控制臺輸出,看看這個動畫被分解成了幾個片段 } });
這個地方主要是解釋為什么在這里給角度賦值,順便說明一下它到底將該值分成多少個片段并不是由我們人為控制的。
step方法的第二個參數——fx$(".demo").animate({ first:2, second:10 }, { step:function(n,fx){ // 動畫元素的每個動畫屬性每一次動畫效果的執行都將調用的函數。第1個參數是當前動畫正在改變的屬性的實時值(每1次動畫過程中,屬性值的實時反饋呈現);第2個參數為修改Tween 對象提供了一個機會來改變animate第1個參數中設置的屬性在動畫結束時的值。 // fx: jQuery.fx 原型對象的一個引用,其中包含了多項屬性,比如 // 執行動畫的元素:elem; // 動畫正在改變的屬性:prop; // 正在改變屬性的當前值:now; // 正在改變屬性的結束值:end; // 正在改變屬性的單位:unit;等 // 可在這里改變animate第1個參數中設置的屬性second在動畫結束時的值 if(fx.prop=="second"){fx.end=5} console.log(fx.prop+": "+n); }, duration:2000 })結束
做這個動畫遇到了自己兩個知識盲點,clip的運用以及jq的step屬性,寫這篇文章主要目的還是加深理解,以及分享。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/51758.html
摘要:引子移動端做一個加載的圖標,跟以往沿用的都不太一樣,是一個圓環進度條,圓環進度條也就罷了,還得能用百分比控制。 引子 移動端做一個 loadiing 加載的圖標,跟以往沿用的都不太一樣,是一個圓環進度條,圓環進度條也就罷了,還得能用百分比控制。 CSS3 實現圓環 demo 剛開始寫這個圓環的時候是參照帖子上給出的css代碼代入,然后根據自己的需求改,發現圓環可以完美轉動了,但是好像沒...
摘要:引子移動端做一個加載的圖標,跟以往沿用的都不太一樣,是一個圓環進度條,圓環進度條也就罷了,還得能用百分比控制。 引子 移動端做一個 loadiing 加載的圖標,跟以往沿用的都不太一樣,是一個圓環進度條,圓環進度條也就罷了,還得能用百分比控制。 CSS3 實現圓環 demo 剛開始寫這個圓環的時候是參照帖子上給出的css代碼代入,然后根據自己的需求改,發現圓環可以完美轉動了,但是好像沒...
摘要:環形進度條的問題,網上有很多的,也有各種不同的實現方式,很棒的實現也有很多,我這自己做一下一方面是想開闊一下自己的思路,一方面好久沒看和的東西了,基礎的拿來熟悉下。 環形進度條的問題,網上有很多的demo,也有各種不同的實現方式,很棒的實現也有很多,我這自己做一下一方面是想開闊一下自己的思路,一方面好久沒看SVG和Canvas的東西了,基礎的拿來熟悉下。 DIV + CSS3 這個是最...
摘要:效果圖怎么實現這樣一個圓環進度條的效果呢,可以使用等等方式,今天我們來說下使用怎么來實現。使用才實現圓環進度還是很簡單的,還不需要考慮兼容性,關于可以看張鑫旭大神的日志 效果圖 showImg(https://segmentfault.com/img/bV3DbY?w=315&h=300); 怎么實現這樣一個圓環進度條的效果呢,可以使用canvas、svg、GIF等等方式,今天我們來說...
閱讀 4276·2021-10-13 09:39
閱讀 481·2021-09-06 15:02
閱讀 3229·2019-08-30 15:53
閱讀 1039·2019-08-30 13:04
閱讀 2028·2019-08-30 11:27
閱讀 2010·2019-08-26 13:51
閱讀 2092·2019-08-26 11:33
閱讀 2901·2019-08-26 10:36