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


Posted in Javascript onSeptember 22, 2015

本文实例讲述了JS实现3D图片旋转展示效果代码。分享给大家供大家参考。具体如下:

这是一段JavaScript代码,围绕成3D模型样式的JavaScript图片旋转展示代码,这里为了演示方便,将图片替换成了数字,预留出了图片的位置,这样速度快些,会HTML的朋友都知道用时候该怎么做。本图片旋转需要手功控制,每点击一下,图片旋转一次,很方便。

运行效果截图如下:

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

在线演示地址如下:

具体代码如下:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>图片旋转展示</title>
<style>
#show{position:relative;margin:20px auto;width:800px;border:1px solid #999999;}
.item{position:absolute;height:40px;width:60px;background:#999999;border:1px solid #eeeeee;cursor:pointer;}
</style>
<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>
</head>
<body>
<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>
</body>
</html>

希望本文所述对大家的JavaScript程序设计有所帮助。

Javascript 相关文章推荐
JQuery中extend使用介绍
Mar 13 Javascript
用js模拟struts2的多action调用示例
May 19 Javascript
JQuery Mobile实现导航栏和页脚
Mar 09 Javascript
jQuery实现订单提交页发送短信功能前端处理方法
Jul 04 Javascript
JavaScript中数组slice和splice的对比小结
Sep 22 Javascript
浅谈js对象属性 通过点(.) 和方括号([]) 的不同之处
Oct 29 Javascript
JS中的作用域链
Mar 01 Javascript
Vue项目数据动态过滤实践及实现思路
Sep 11 Javascript
JS实现数组深拷贝的方法分析
Mar 06 Javascript
JS使用百度地图API自动获取地址和经纬度操作示例
Apr 16 Javascript
JQuery事件委托(适用于给动态生成的脚本元素添加事件)
Feb 01 jQuery
JavaScript队列结构Queue实现过程解析
Mar 07 Javascript
JS+CSS实现带小三角指引的滑动门效果
Sep 22 #Javascript
jQuery实现浮动层随浏览器滚动条滚动的方法
Sep 22 #Javascript
JavaScript脚本判断蜘蛛来源的方法
Sep 22 #Javascript
jQuery实现的经典滑动门效果
Sep 22 #Javascript
jquery实现的简单二级菜单效果代码
Sep 22 #Javascript
jfinal与bootstrap的登录跳转实战演习
Sep 22 #Javascript
jquery实现经典的淡入淡出选项卡效果代码
Sep 22 #Javascript
You might like
微博短链接算法php版本实现代码
2012/09/15 PHP
PHP学习笔记(一) 简单了解PHP
2014/08/04 PHP
PHP程序员简单的开展服务治理架构操作详解(一)
2020/05/14 PHP
不用AJAX和IFRAME,说说真正意义上的ASP+JS无刷新技术
2008/09/25 Javascript
jQuery 1.5最新版本的改进细节分析
2011/01/19 Javascript
javascript制作2048游戏
2015/03/30 Javascript
jQuery实现按钮只点击一次后就取消点击事件绑定的方法
2015/06/26 Javascript
Javascript设计模式理论与编程实战之简单工厂模式
2015/11/03 Javascript
Jquery揭秘系列:ajax原生js实现详解(推荐)
2016/06/08 Javascript
Jquery实现遮罩层的简单实例(就是弹出DIV周围都灰色不能操作)
2016/07/14 Javascript
javascript正则表达式中分组详解
2016/07/17 Javascript
vue2.0 axios前后端数据处理实例代码
2017/06/30 Javascript
javascript回调函数详解
2018/02/06 Javascript
JS设置自定义快捷键并实现图片上下左右移动
2019/10/17 Javascript
[04:16]DOTA2英雄梦之声_第09期_斧王
2014/06/21 DOTA
Python re模块介绍
2014/11/30 Python
详细解读Python中解析XML数据的方法
2015/10/15 Python
python递归删除指定目录及其所有内容的方法
2017/01/13 Python
Python实现随机选择元素功能
2017/09/14 Python
Python实现DDos攻击实例详解
2019/02/02 Python
python 读写excel文件操作示例【附源码下载】
2019/06/19 Python
python cv2在验证码识别中应用实例解析
2019/12/25 Python
Snapfish英国:在线照片打印和个性化照片礼品
2017/01/13 全球购物
什么是serialVersionUID
2016/03/04 面试题
网络工程师个人的自我评价范文
2013/10/01 职场文书
秘书岗位职责
2013/11/18 职场文书
中医专业职业生涯规划书范文
2014/01/04 职场文书
出纳试用期自我鉴定
2014/04/07 职场文书
2014年酒店前台工作总结
2014/11/14 职场文书
西湖英语导游词
2015/02/06 职场文书
2015年圣诞节活动总结
2015/03/24 职场文书
承诺书模板大全
2015/05/04 职场文书
六五普法先进个人主要事迹材料
2015/11/03 职场文书
2016年安康杯竞赛活动总结
2016/04/05 职场文书
Java后台生成图片的完整步骤
2021/08/04 Java/Android