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库 开发规则
Jan 31 Javascript
jQuery 阴影插件代码分享
Jan 09 Javascript
基于jquery实现select选择框内容左右移动添加删除代码分享
Aug 25 Javascript
实例讲解javascript注册事件处理函数
Jan 09 Javascript
TypeOf这些知识点你了解吗
Feb 21 Javascript
微信小程序 页面跳转事件绑定的实例详解
Sep 20 Javascript
Vue实现数字输入框中分割手机号码的示例
Oct 10 Javascript
Vue.js通用应用框架-Nuxt.js的上手教程
Dec 25 Javascript
VUE + UEditor 单图片跨域上传功能的实现方法
Feb 08 Javascript
在vue中使用css modules替代scroped的方法
Mar 10 Javascript
vue 做移动端微信公众号采坑经验记录
Apr 26 Javascript
vue计算属性无法监听到数组内部变化的解决方案
Nov 06 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
拼音码表的生成
2006/10/09 PHP
thinkphp实现发送邮件密码找回功能实例
2014/12/01 PHP
php使用curl详细解析及问题汇总
2016/08/11 PHP
javascript iframe内的函数调用实现方法
2009/07/19 Javascript
js中split函数的使用方法说明
2013/12/26 Javascript
jQuery中element选择器用法实例
2014/12/29 Javascript
jQuery子窗体取得父窗体元素的方法
2015/05/11 Javascript
给angular加上动画效遇到的问题总结
2016/02/17 Javascript
jQuery绑定事件-多种实现方式总结
2016/05/09 Javascript
JavaScript程序中的流程控制语句用法总结
2016/05/23 Javascript
input输入密码变黑点密文的实现方法
2017/01/09 Javascript
bootstrap table表格使用方法详解
2017/04/26 Javascript
JS实现利用两个队列表示一个栈的方法
2017/12/13 Javascript
JS实现方形抽奖效果
2018/08/27 Javascript
微信小程序canvas.drawImage完全显示图片问题的解决
2018/11/30 Javascript
jQuery实现动态加载(按需加载)javascript文件的方法分析
2019/05/31 jQuery
vue动画—通过钩子函数实现半场动画操作
2020/08/09 Javascript
jquery插件实现轮播图效果
2020/10/19 jQuery
Vue+penlayers实现多边形绘制及展示
2020/12/24 Vue.js
python中文乱码的解决方法
2013/11/04 Python
Python处理JSON时的值报错及编码报错的两则解决实录
2016/06/26 Python
详解Python pygame安装过程笔记
2017/06/05 Python
Pycharm 实现下一个文件引用另外一个文件的方法
2019/01/17 Python
python根据文章标题内容自动生成摘要的实例
2019/02/21 Python
python 统计文件中的字符串数目示例
2019/12/24 Python
python如何调用java类
2020/07/05 Python
Python 如何操作 SQLite 数据库
2020/08/17 Python
HTML5的Geolocation地理位置定位API使用教程
2016/05/12 HTML / CSS
LTD Commodities:礼品,独特发现,家居装饰,家用器皿
2017/08/11 全球购物
马来西亚在线健康商店:Medipal Malaysia
2020/04/13 全球购物
租车协议书范本2014
2014/11/17 职场文书
公司文体活动总结
2015/05/07 职场文书
2015年图书馆个人工作总结
2015/05/26 职场文书
你为什么是穷人?可能是这5个缺点造成
2019/07/11 职场文书
2019入党申请书范文3篇
2019/08/21 职场文书
Redis全局ID生成器的实现
2022/06/05 Redis