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 相关文章推荐
Valerio 发布了 Mootools
Sep 23 Javascript
使用javascript访问XML数据的实例
Dec 27 Javascript
jQuery 隔行换色 支持键盘上下键,按Enter选定值
Aug 02 Javascript
JSON 教程 json入门学习笔记
Sep 22 Javascript
jQuery .attr()和.removeAttr()方法操作元素属性示例
Jul 16 Javascript
jQuery链使用指南
Jan 20 Javascript
Javascript中实现trim()函数的两种方法
Feb 04 Javascript
JavaScript中 ES6 generator数据类型详解
Aug 11 Javascript
关于jQuery中fade(),show()起始位置的一点小发现
Apr 25 jQuery
详解ECMAScript6入门--Class对象
Apr 27 Javascript
Angular实现的日程表功能【可添加及隐藏显示内容】
Dec 27 Javascript
vue中tab选项卡的实现思路
Nov 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 抓取新浪读书频道的小说并生成txt电子书的代码
2009/12/18 PHP
详解PHP的Yii框架中自带的前端资源包的使用
2016/03/31 PHP
浅析php中array_map和array_walk的使用对比
2016/11/20 PHP
PHP getDocNamespaces()函数讲解
2019/02/03 PHP
thinkphp5.1 框架导入/导出excel文件操作示例
2020/05/25 PHP
JavaScript 对象链式操作测试代码
2010/04/25 Javascript
JS解决ie6下png透明的方法实例
2013/08/02 Javascript
JQuery判断子iframe何时加载完成解决方案
2013/08/20 Javascript
js保留小数点后几位的写法
2014/01/03 Javascript
Jquery中ajax方法data参数的用法小结
2014/02/12 Javascript
js获取判断上传文件后缀名的示例代码
2014/02/19 Javascript
Javascript学习笔记之 对象篇(三) : hasOwnProperty
2014/06/24 Javascript
javascript中实现兼容JAVA的hashCode算法代码分享
2020/08/11 Javascript
深入理解JavaScript编程中的同步与异步机制
2015/06/24 Javascript
JS组件Bootstrap实现弹出框和提示框效果代码
2015/12/08 Javascript
jQuery实现简单的DIV拖动效果
2016/02/19 Javascript
AngularJS  双向数据绑定详解简单实例
2016/10/20 Javascript
基于JS实现弹出一个隐藏的div窗口body页面变成灰色并且不可被编辑
2016/12/14 Javascript
JavaScript实现同一个页面打开多张图片
2016/12/29 Javascript
vue的Virtual Dom实现snabbdom解密
2017/05/03 Javascript
Bootstrap一款超好用的前端框架
2017/09/25 Javascript
实现div滚动条默认最底部以及默认最右边的示例代码
2017/11/15 Javascript
webpack v4 从dev到prd的方法
2018/04/02 Javascript
你了解vue3.0响应式数据怎么实现吗
2019/06/07 Javascript
Python httplib,smtplib使用方法
2008/09/06 Python
Python利用IPython提高开发效率
2016/08/10 Python
Python简单操作sqlite3的方法示例
2017/03/22 Python
Python + selenium自动化环境搭建的完整步骤
2018/05/19 Python
Pytorch实现GoogLeNet的方法
2019/08/18 Python
在pycharm中实现删除bookmark
2020/02/14 Python
Django 解决distinct无法去除重复数据的问题
2020/05/20 Python
使用canvas绘制超炫时钟
2014/12/17 HTML / CSS
音乐器材管理制度
2014/01/31 职场文书
护士求职自荐信范文
2015/03/04 职场文书
工厂门卫岗位职责
2015/04/13 职场文书
JavaScript 中for/of,for/in 的详细介绍
2021/11/17 Javascript