js+css3實現旋轉效果


我的前面一張文章實現了用css3制作旋轉的效果,現在呢,我換另外一種方法來實現.就是使用js結合css3的方法來實現的.下面我就先上圖給大家看看效果吧

下面呢我先放上我的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的代碼部分.

	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];
			}
		}
	}

我在這就把相對的難點講一下:

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%的時候就是繞着中心點旋轉的.不過默認的時候就是繞着中心點旋轉的


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM