纯JS实现旋转图片3D展示效果

 更新时间:2015年04月12日 10:48:42   投稿:hebedich  
本文给大家分享的是纯js实现的类似flash里的图片环绕旋转效果,非常炫酷,有需要的小伙伴可以参考下。

CSS:

<style type="text/css">
#show{position:relative;margin:20px auto;width:800px;}
.item{position:absolute;height:40px;width:60px;background:#999999;border:1px solid #eeeeee;cursor:pointer;}</style>

Html:

input id="l" type="button" value="left" /> <input id="r" type="button" value="right" />
<div id="show">
<div class="item">1</div>
<div class="item">2</div>
<div class="item">3</div>
<div class="item">4</div>
<div class="item">5</div>
<div class="item">6</div>
<div class="item">7</div>
<div class="item">8</div>
<div class="item">9</div>
<div class="item">0</div>
<div class="item">a</div>
<div class="item">b</div>
<div class="item">1</div>
<div class="item">2</div>
<div class="item">3</div>
</div>

JS

<script>
var len;
var showerObj;
var listObj;
var showerWidth=800;
var showerHeight=400;
var r;
var cR=0;
var ccR=0;
var timer=0;
window.onload=function(){
 showerObj=document.getElementById("show");
 listObj=showerObj.getElementsByTagName("div");
 len=listObj.length;
 r=Math.PI/180*360/len;
 for(var i=0;i<len;i++){
 var item=listObj[i];
 item.style.top=showerHeight/2+Math.sin(r*i)*showerWidth/2-20+"px";
 item.style.left=showerWidth/2+Math.cos(r*i)*showerWidth/2-30+"px";
 item.rotate=(r*i+2*Math.PI)%(2*Math.PI);
 item.onclick=function(){
  cR=Math.PI/2-this.rotate;
  timer || (timer=setInterval(rotate,10));
  
 }
 
 }
 var rX=showerObj.offsetLeft+showerWidth/2;
 var ry=showerObj.offsetTop+showerHeight/2;
 
 var rotate=function(){
 ccR=(ccR+2*Math.PI)%(2*Math.PI);
 if(cR-ccR<0) cR=cR+2*Math.PI;
 if(cR-ccR<Math.PI){
  ccR=ccR+(cR-ccR)/19;
 }else{
  ccR=ccR-(2*Math.PI+ccR-cR)/19;
 
 }
 
 if(Math.abs((cR+2*Math.PI)%(2*Math.PI)-(ccR+2*Math.PI)%(2*Math.PI))<Math.PI/720){
  ccR=cR;
  clearInterval(timer);
  timer=0;
 }
 
 for(var i=0;i<len;i++){
  var item=listObj[i];
  var w,h;
  var sinR=Math.sin(r*i+ccR);
  var cosR=Math.cos(r*i+ccR);
  w=60+0.6*60*sinR;
  h=(40+0.6*40*sinR);
  item.style.cssText +=";width:"+w+"px;height:"+h+"px;top:"+parseInt(showerHeight/2+sinR*showerWidth/2/3-w/2)+"px;left:"+parseInt(showerWidth/2+cosR*showerWidth/2-h/2)+"px;z-index:"+parseInt(showerHeight/2+sinR*showerWidth/2/3-w/2)+";";
 
 }
 }
 
 document.getElementById("l").onclick=function(){
 cR=(cR+r+2*Math.PI)%(2*Math.PI);
 timer || (timer=setInterval(rotate,10));
 }
 document.getElementById("r").onclick=function(){
 cR=(cR-r+2*Math.PI)%(2*Math.PI);
 timer || (timer=setInterval(rotate,10));
 }
 rotate();
}
</script>

以上所述就是本文的全部内容了,希望大家能够喜欢。

相关文章

  • javascript中Date对象的使用总结

    javascript中Date对象的使用总结

    本文介绍了Date对象的使用方法,清晰明了,实现方法有多种,仅供大家参考,希望对大家有所帮助,下面就跟小编一起来看看吧
    2016-11-11
  • JS对象与json字符串相互转换实现方法示例

    JS对象与json字符串相互转换实现方法示例

    这篇文章主要介绍了JS对象与json字符串相互转换实现方法,结合实例形式分析了js对象与json字符串相互转换的相关操作技巧与注意事项,需要的朋友可以参考下
    2018-06-06
  • js同时按下两个方向键

    js同时按下两个方向键

    本文通过实例代码给大家介绍了js同时按下两个方向键的实现方法,感兴趣的朋友跟随脚本之家小编一起看看吧
    2007-12-12
  • 浅谈javascript中的Function和Arguments

    浅谈javascript中的Function和Arguments

    下面小编就为大家带来一篇浅谈javascript中的Function和Arguments。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-08-08
  • 微信小程序用户授权获取手机号(getPhoneNumber)

    微信小程序用户授权获取手机号(getPhoneNumber)

    这篇文章主要给大家介绍了关于微信小程序用户授权获取手机号的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-03-03
  • 你可能从未使用过的11+个JavaScript特性(小结)

    你可能从未使用过的11+个JavaScript特性(小结)

    这篇文章主要介绍了你可能从未使用过的11+个JavaScript特性(小结),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-01-01
  • thinkjs微信中控之微信鉴权登陆的实现代码

    thinkjs微信中控之微信鉴权登陆的实现代码

    这篇文章主要介绍了thinkjs微信中控之微信鉴权登陆的实现代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-08-08
  • javascript中如何判断类型汇总

    javascript中如何判断类型汇总

    这篇文章主要给大家介绍了关于javascript中如何判断类型的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用javascript具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-05-05
  • 百度地图JavascriptApi Marker平滑移动及车头指向行径方向

    百度地图JavascriptApi Marker平滑移动及车头指向行径方向

    本文主要介绍了百度地图JavascriptApi Marker平滑移动及车头指向行径方向的相关知识。具有很好的参考价值。下面跟着小编一起来看下吧
    2017-03-03
  • 论坛特效代码收集(落伍转发-不错)

    论坛特效代码收集(落伍转发-不错)

    论坛特效代码收集(落伍转发-不错)...
    2006-12-12

最新评论