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帮助之CSS尺寸(五)outerHeight、outerWidth
Nov 14 Javascript
DOM Scripting中的图片切换[兼容Firefox]
Jun 12 Javascript
JavaScript实现带缓冲效果的随屏滚动漂浮广告代码
Nov 06 Javascript
prototype.js常用函数详解
Jun 18 Javascript
Vue.js Ajax动态参数与列表显示实现方法
Oct 20 Javascript
微信小程序自定义音乐进度条的实例代码
Aug 28 Javascript
vue根据值给予不同class的实例
Sep 29 Javascript
koa2实现登录注册功能的示例代码
Dec 03 Javascript
Vue+Django项目部署详解
May 30 Javascript
轻松学习JavaScript函数中的 Rest 参数
May 30 Javascript
JavaScript函数重载操作实例浅析
May 02 Javascript
详解Vue之事件处理
Jul 10 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 生成WML页面方法详解
2009/08/09 PHP
深入php之规范编程命名小结
2013/05/15 PHP
PHP获取当前日期及本周一是几月几号的方法
2017/03/28 PHP
Ext.FormPanel 提交和 Ext.Ajax.request 异步提交函数的区别
2009/11/12 Javascript
基于jQuery制作迷你背词汇工具
2010/07/27 Javascript
那些年,我还在学习jquery 学习笔记
2012/03/05 Javascript
分享精心挑选的12款优秀jQuery Ajax分页插件和教程
2012/08/09 Javascript
使用PHP+JQuery+Ajax分页的实现
2013/04/23 Javascript
javascript实现playfair和hill密码算法
2014/12/07 Javascript
jQuery中:checked选择器用法实例
2015/01/04 Javascript
关于Angularjs中跨域设置白名单问题
2018/04/17 Javascript
vue定义全局变量和全局方法的方法示例
2018/08/01 Javascript
layui 监听表格复选框选中值的方法
2018/08/15 Javascript
JavaScript日期工具类DateUtils定义与用法示例
2018/09/03 Javascript
用js限制网页只在微信浏览器中打开(或者只能手机端访问)
2020/12/24 Javascript
详解VUE中的插值( Interpolation)语法
2020/10/18 Javascript
js 执行上下文和作用域的相关总结
2021/02/08 Javascript
Python 绘图和可视化详细介绍
2017/02/11 Python
python3大文件解压和基本操作
2017/12/15 Python
Python之csv文件从MySQL数据库导入导出的方法
2018/06/21 Python
python实现dijkstra最短路由算法
2019/01/17 Python
使用pycharm设置控制台不换行的操作方法
2019/01/19 Python
从0开始的Python学习014面向对象编程(推荐)
2019/04/02 Python
Nordgreen手表德国官方网站:丹麦极简主义手表
2019/10/31 全球购物
全球烹饪课程的领先预订平台:Cookly
2020/01/28 全球购物
2014年大学生自我评价
2014/01/19 职场文书
会计师职业生涯规划范文
2014/02/18 职场文书
就业推荐表自我鉴定范文
2014/03/21 职场文书
企业委托书范本
2014/09/13 职场文书
个人批评与自我批评
2014/10/15 职场文书
承诺书范本
2015/01/21 职场文书
演讲稿之开卷有益
2019/08/07 职场文书
python 中的jieba分词库
2021/11/23 Python
python中的3种定义类方法
2021/11/27 Python
Android Flutter实现图片滑动切换效果
2022/04/07 Java/Android
python 闭包函数详细介绍
2022/04/19 Python