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 相关文章推荐
JavaScript创建类/对象的几种方式概述及实例
May 06 Javascript
ie中js创建checkbox默认选中问题探讨
Oct 21 Javascript
js创建元素(节点)示例
Jan 02 Javascript
Extjs中RowExpander控件的默认展开问题示例探讨
Jan 24 Javascript
javascript鼠标滑动评分控件完整实例
May 13 Javascript
jQuery+ajax简单实现文件上传的方法
Jun 03 Javascript
微信小程序 wx.request(OBJECT)发起请求详解
Oct 13 Javascript
BootStrap表单时间选择器详解
May 09 Javascript
解决在vue项目中,发版之后,背景图片报错,路径不对的问题
Mar 06 Javascript
javascript系统时间设置操作示例
Jun 17 Javascript
JS计算斐波拉切代码实例
Sep 12 Javascript
layui点击左侧导航栏,实现不刷新整个页面,只刷新局部的方法
Sep 25 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防攻击代码升级版
2010/12/29 PHP
php用header函数实现301跳转代码实例
2013/11/25 PHP
php的ddos攻击解决方法
2015/01/08 PHP
PHP有序表查找之插值查找算法示例
2018/02/10 PHP
学习JS面向对象成果 借国庆发布个最新作品与大家交流
2009/10/03 Javascript
js操作二级联动实现代码
2010/07/27 Javascript
js数值和和字符串进行转换时可以对不同进制进行操作
2014/03/05 Javascript
Javascript的表单验证长度
2016/03/16 Javascript
jQuery简单实现提交数据出现loading进度条的方法
2016/03/29 Javascript
vue.js指令v-model实现方法
2016/12/05 Javascript
详解JS去重及字符串奇数位小写转大写
2016/12/29 Javascript
基于Vue框架vux组件库实现上拉刷新功能
2017/11/28 Javascript
解决layer.open后laydate失效的问题
2019/09/06 Javascript
vue 父组件通过v-model接收子组件的值的代码
2019/10/27 Javascript
简单了解Vue + ElementUI后台管理模板
2020/04/07 Javascript
Python对两个有序列表进行合并和排序的例子
2014/06/13 Python
Python tkinter模块弹出窗口及传值回到主窗口操作详解
2017/07/28 Python
Python编程实现微信企业号文本消息推送功能示例
2017/08/21 Python
Python 多核并行计算的示例代码
2017/11/07 Python
Python爬虫番外篇之Cookie和Session详解
2017/12/27 Python
python实现手机销售管理系统
2019/03/19 Python
对django后台admin下拉框进行过滤的实例
2019/07/26 Python
python ffmpeg任意提取视频帧的方法
2020/02/21 Python
解决pyPdf和pyPdf2在合并pdf时出现异常的问题
2020/04/03 Python
如何用Python 加密文件
2020/09/10 Python
Python用摘要算法生成token及检验token的示例代码
2020/12/01 Python
HTML5的video标签的浏览器兼容性增强方案分享
2016/05/19 HTML / CSS
html5指南-7.geolocation结合google maps开发一个小的应用
2013/01/07 HTML / CSS
HTML5超炫酷粒子效果的进度条的实现示例
2019/08/23 HTML / CSS
美国领先的精品家居照明和装饰产品在线零售商:LightsOnline.com
2018/01/23 全球购物
生物制药毕业生自荐信
2013/10/16 职场文书
还款承诺书范文
2014/05/20 职场文书
视光学专业自荐信
2014/06/24 职场文书
2015年农村党员干部主题教育活动总结
2015/03/25 职场文书
python中对列表的删除和添加方法详解
2022/02/24 Python
SpringBoot项目部署到阿里云服务器的实现步骤
2022/06/28 Java/Android