個人前面一張文章實現了用css3製做旋轉的效果,如今呢,我換另一種方法來實現.就是使用js結合css3的方法來實現的.下面我就先上圖給你們看看效果吧javascript
下面呢我先放上個人css代碼,代碼很簡單:css
.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; }
上面的代碼你們都看得懂,我就不介紹了.我重點講的是js的代碼部分.java
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){ //循環屬性對象 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的兼容性問題,因此這些屬性都必須加前綴才行 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]; } } }
我在這就把相對的難點講一下:css3
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()); 這一句代碼其實就是把首字母轉成是大寫的(
{transform:"rotate(10deg)","transform-origin":"0 0"))
由於在js中修改樣式的時候,是不存在-webkit-transformz這樣的格式的,兩個單詞之間的"-"是必需要省略掉的,換成第二個單詞的字母爲大寫.因此主要就是把這個處理好了以後久ok了
注意點:1.由於若是不添加css3的過渡屬性的話,旋轉的時候是會有種卡頓效果的,就是旋轉的時候不暢,因此我這裏添加了transition屬性,讓他轉動起來的時候看起來順暢的. 2.transform-origin的值若是爲0 0的時候,是繞着原點旋轉的,50% 50%的時候就是繞着中心點旋轉的.不過默認的時候就是繞着中心點旋轉的