js+css3實(shí)現(xiàn)旋轉(zhuǎn)效果
我的前面一張文章實(shí)現(xiàn)了用css3制作旋轉(zhuǎn)的效果,現(xiàn)在呢,我換另外一種方法來(lái)實(shí)現(xiàn).就是使用js結(jié)合css3的方法來(lái)實(shí)現(xiàn)的.下面我就先上圖給大家看看效果吧
下面呢我先放上我的css代碼,代碼很簡(jiǎn)單:
.one{ width:200px; height: 200px; border:1px solid #adadad; transition:all 0.1s; border-radius:50%; background:url(images/1.jpg) no-repeat center center; background-size:cover; margin:50px auto; }
上面的代碼大家都看得懂,我就不介紹了.我重點(diǎn)講的是js的代碼部分.
window.onload=function(){ var div=document.getElementsByClassName("one")[0]; console.log(div); setCss3(div,{transform:"rotate(10deg)","transform-origin":"50% 50%"}) var angel=0; setInterval(function(){ angel+=8; setCss3(div,{transform:"rotate("+angel+"deg)","transform-origin":"0 0"}) },30) function setCss3(obj,objAttr){ //循環(huán)屬性對(duì)象 for(var i in objAttr){ var newi=i; //判斷是否存在transform-origin這樣格式的屬性 if(newi.indexOf("-")>0){ var num=newi.indexOf("-"); newi=newi.replace(newi.substr(num,2),newi.substr(num+1,1).toUpperCase()); } //考慮到css3的兼容性問(wèn)題,所以這些屬性都必須加前綴才行 obj.style[newi]=objAttr[i]; newi=newi.replace(newi.charAt(0),newi.charAt(0).toUpperCase()); obj.style[newi]=objAttr[i]; obj.style["webkit"+newi]=objAttr[i]; obj.style["moz"+newi]=objAttr[i]; obj.style["o"+newi]=objAttr[i]; obj.style["ms"+newi]=objAttr[i]; } } }
我在這就把相對(duì)的難點(diǎn)講一下:
if(newi.indexOf("-")>0){ var num=newi.indexOf("-"); newi=newi.replace(newi.substr(num,2),newi.substr(num,2).toUpperCase()); }
newi=newi.replace(newi.substr(num,2),newi.substr(num,2).toUpperCase());
這一句代碼其實(shí)就是把首字母轉(zhuǎn)成是大寫(xiě)的
({transform:"rotate(10deg)","transform-origin":"0 0"))
因?yàn)樵趈s中修改樣式的時(shí)候,是不存在-webkit-transformz這樣的格式的,兩個(gè)單詞之間的"-"是必須要省略掉的,換成第二個(gè)單詞的字母為大寫(xiě).所以主要就是把這個(gè)處理好了之后久ok了<br><span style="color: #ff0000">注意點(diǎn):1.因?yàn)槿绻惶砑觕ss3的過(guò)渡屬性的話(huà),旋轉(zhuǎn)的時(shí)候是會(huì)有種卡頓效果的,就是旋轉(zhuǎn)的時(shí)候不順暢,所以我這里添加了transition屬性,讓他轉(zhuǎn)動(dòng)起來(lái)的時(shí)候看起來(lái)順暢的.<br> 2.transform-origin的值如果為0 0的時(shí)候,是繞著原點(diǎn)旋轉(zhuǎn)的,50% 50%的時(shí)候就是繞著中心點(diǎn)旋轉(zhuǎn)的.不過(guò)默認(rèn)的時(shí)候就是繞著中心點(diǎn)旋轉(zhuǎn)的<br></span>
以上就是本文的全部?jī)?nèi)容,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作能帶來(lái)一定的幫助,同時(shí)也希望多多支持腳本之家!
相關(guān)文章
js點(diǎn)亮星星評(píng)分并獲取參數(shù)的js代碼
點(diǎn)亮星星評(píng)分后,點(diǎn)擊按鈕,立即獲得分?jǐn)?shù)參數(shù)值,方便不想使用ajax傳參的朋友2014-07-07

JavaScript使用setInterval()函數(shù)實(shí)現(xiàn)簡(jiǎn)單輪詢(xún)操作的方法
![[js高手之路]HTML標(biāo)簽解釋成DOM節(jié)點(diǎn)的實(shí)現(xiàn)方法](http://img.jbzj.com/images/xgimg/bcimg5.png)
[js高手之路]HTML標(biāo)簽解釋成DOM節(jié)點(diǎn)的實(shí)現(xiàn)方法

JS之獲取樣式的簡(jiǎn)單實(shí)現(xiàn)方法(推薦)

JS中onpropertychange和onchange事件區(qū)別小結(jié)