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 相关文章推荐
js 目录列举函数
Nov 06 Javascript
突发奇想的一个jquery插件
Nov 19 Javascript
cnblogs 代码高亮显示后的代码复制问题解决实现代码
Dec 14 Javascript
js 实现的可折叠留言板(附源码下载)
Jul 01 Javascript
JavaScript通过join函数连接数组里所有元素的方法
Mar 20 Javascript
javascript实现html页面之间参数传递的四种方法实例分析
Dec 15 Javascript
jQuery旋转插件jqueryrotate用法详解
Oct 13 Javascript
微信小程序中使用自定义图标(阿里icon)的方法
Aug 20 Javascript
使用Vue-Awesome-Swiper实现旋转叠加轮播效果&amp;平移轮播效果
Aug 16 Javascript
JavaScript数组去重实现方法小结
Jan 17 Javascript
ajax jquery实现页面某一个div的刷新效果
Mar 04 jQuery
微信小程序用户授权最佳实践指南
May 08 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
历史证明,懒惰才是推动科学发展技术进步的动力
2021/03/02 无线电
以实例全面讲解PHP中多进程编程的相关函数的使用
2015/08/18 PHP
php获取微信共享收货地址的方法
2017/12/21 PHP
9行javascript代码获取QQ群成员具体实现
2013/10/16 Javascript
IE6下javasc#ipt:void(0) 无效的解决方法
2013/12/23 Javascript
jquery分页对象使用示例
2014/04/01 Javascript
jQuery实现带滚动线条导航效果的方法
2015/01/30 Javascript
ECMAScript6函数默认参数
2015/06/12 Javascript
JavaScript的Number对象的toString()方法
2015/12/18 Javascript
浅谈bootstrap源码分析之tab(选项卡)
2016/06/06 Javascript
jquery中live()方法和bind()方法区别分析
2016/06/23 Javascript
原生ajax处理json格式数据的实例代码
2016/12/25 Javascript
webpack配置sass模块的加载的方法
2017/07/30 Javascript
node.js读取Excel数据(下载图片)的方法示例
2018/08/02 Javascript
使用form-create动态生成vue自定义组件和嵌套表单组件
2019/01/18 Javascript
JavaScript ECMA-262-3 深入解析(一):执行上下文实例分析
2020/04/25 Javascript
Python实现远程调用MetaSploit的方法
2014/08/22 Python
TensorFlow搭建神经网络最佳实践
2018/03/09 Python
win7 x64系统中安装Scrapy的方法
2018/11/18 Python
解析Python3中的Import
2019/10/13 Python
Python基于requests库爬取网站信息
2020/03/02 Python
Python发起请求提示UnicodeEncodeError错误代码解决方法
2020/04/21 Python
matlab、python中矩阵的互相导入导出方式
2020/06/01 Python
Python爬虫之Selenium下拉框处理的实现
2020/12/04 Python
Python3+Flask安装使用教程详解
2021/02/16 Python
CSS3动画之流彩文字效果+图片模糊效果+边框伸展效果实现代码合集
2017/08/18 HTML / CSS
瑞典在互联网上最大的宠物商店:Animail
2020/10/31 全球购物
语文教学感言
2014/02/06 职场文书
大学同学十年聚会感言
2014/02/21 职场文书
《动手做做看》教学反思
2014/04/09 职场文书
班级文化标语
2014/06/23 职场文书
学校端午节活动方案
2014/08/23 职场文书
公司行政专员岗位职责
2014/08/24 职场文书
入党积极分子十八届四中全会思想汇报
2014/10/23 职场文书
2014年残疾人工作总结
2014/12/06 职场文书
css让页脚保持在底部位置的四种方案
2022/07/23 HTML / CSS