JavaScript结合CSS3实现元素旋转动画

作者:像素猫时间:2026-10-21 20:48:17浏览:430

本文介绍如何使用JavaScript结合CSS3实现元素的平滑旋转效果。通过动态修改transform属性并配合transition过渡,解决旋转卡顿问题,同时处理浏览器前缀及transform-origin原点设置,实现流畅的动画交互。

JavaScript结合CSS3实现元素旋转动画

前文曾介绍过纯CSS3实现旋转效果的方法,本文将展示另一种方案,即结合JavaScript与CSS3来实现旋转动画。首先通过图片展示最终效果。

JavaScript结合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;
}

上述CSS代码逻辑直观,此处不再赘述。本文将重点解析JavaScript部分的实现细节。


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了<br><span style="color: #ff0000">注意点:1.因为如果不添加css3的过渡属性的话,旋转的时候是会有种卡顿效果的,就是旋转的时候不顺畅,所以我这里添加了transition属性,让他转动起来的时候看起来顺畅的.<br>    2.transform-origin的值如果为0 0的时候,是绕着原点旋转的,50% 50%的时候就是绕着中心点旋转的.不过默认的时候就是绕着中心点旋转的<br></span>

以上内容为本文的全部介绍,希望能为读者的学习或工作提供参考,欢迎继续支持本站。

作者最新文章