js实现3D图片环展示效果


Posted in Javascript onMarch 09, 2017

可对整体进行拖拽

效果图:

js实现3D图片环展示效果

代码如下:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
  <style>
    *{padding:0;margin:0; font-family: "Proxima Nova","proxima-nova","Helvetica Neue",Helvetica,Arial,sans-serif !important;}
    html body{overflow: hidden;}
    body{background:#ccc;}
    .box{width:140px; height:200px; -webkit-transform-style:preserve-3d; -webkit-transform: perspective(800px) rotateY(0deg) rotateX(0deg); position:relative; margin:400px auto;}
    .box span{width:140px; height:200px; position: absolute; background:deepskyblue; font-size:20px;
      text-align: center; line-height:200px; color:white;}
  </style>
  <script>
    function r2n(n){
      return n*Math.PI/180
    }
    window.onload=function(){
      var oBox=document.getElementsByClassName('box')[0];
      var aS=document.getElementsByTagName('span');
      for(var i=0;i<aS.length;i++){
        aS[i].style.WebkitTransition='1s all ease '+(aS.length-i)*.1+'s';
        aS[i].style.WebkitTransform='rotateY('+i*360/aS.length+'deg)'+' translateZ(500px) '
      }
      var pos=[];
      var x=0;
      var y=0;
      var timer=null;
      var timer2=null;
      document.onmousedown=function(ev){
        timer=setInterval(function(){
          pos[0]=pos[2];
          pos[1]=pos[3];
          pos[2]=x;
          pos[3]=y;
        },30);
        var disx=ev.pageX-x;
        var disy=ev.pageY-y;
        document.onmousemove=function(ev){
          x=ev.pageX-disx;
          y=ev.pageY-disy;
          oBox.style.WebkitTransform=' perspective(800px)'+' rotateY('+x/3+'deg)'+'rotateX('+-y/3+'deg)';
        };
        document.onmouseup=function(){
          clearInterval(timer);
          var speedx=pos[2]-pos[0];
          var speedy=pos[3]-pos[1];
          timer2=setInterval(function(){
            x+=speedx;
            y+=speedy;
            oBox.style.WebkitTransform=' perspective(800px)'+' rotateY('+x/3+'deg)'+'rotateX('+-y/3+'deg)';
            speedx*=0.94;
            speedy*=0.94;
            if(Math.abs(speedx)<1)speedx=0;
            if(Math.abs(speedy)<1)speedy=0;
            if(speedx==0&&speedy==0){
              clearInterval(timer2)
            }
          },30);
          document.onmousemove=null;
          document.onmouseup=null;
        }
      };
      return false
    }
  </script>
</head>
<body>
<div class="box">
  <span>1</span>
  <span>2</span>
  <span>3</span>
  <span>4</span>
  <span>5</span>
  <span>6</span>
  <span>7</span>
  <span>8</span>
  <span>9</span>
  <span>10</span>
  <span>11</span>
  <span>12</span>
</div>
</body>
</html>

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持三水点靠木!

Javascript 相关文章推荐
TextArea不支持maxlength的解决办法(jquery)
Sep 13 Javascript
jQuery extend 的简单实例
Sep 18 Javascript
浅谈Javascript如何实现匀速运动
Dec 19 Javascript
JavaScript限制在客户区可见范围的拖拽(解决scrollLeft和scrollTop的问题)(2)
May 17 Javascript
详解基于Bootstrap+angular的一个豆瓣电影app
Jun 26 Javascript
Angularjs的$http异步删除数据详解及实例
Jul 27 Javascript
gulp安装以及打包合并的方法教程
Nov 19 Javascript
vue 系列——vue2-webpack2框架搭建踩坑之路
Dec 22 Javascript
vue.js提交按钮时进行简单的if判断表达式详解
Aug 08 Javascript
使用vue-cli3新建一个项目并写好基本配置(推荐)
Apr 24 Javascript
vue的注意规范之v-if 与 v-for 一起使用教程
Aug 04 Javascript
Vue实现Header渐隐渐现效果的实例代码
Nov 05 Javascript
Vue监听数组变化源码解析
Mar 09 #Javascript
Node.js通过身份证号验证年龄、出生日期与性别方法示例
Mar 09 #Javascript
基于jQuery实现一个marquee无缝滚动的插件
Mar 09 #Javascript
jQuery插件HighCharts绘制2D圆环图效果示例【附demo源码下载】
Mar 09 #Javascript
js实现显示手机号码效果
Mar 09 #Javascript
jQuery插件HighCharts绘制2D半圆环图效果示例【附demo源码下载】
Mar 09 #Javascript
javascript 秒表计时器实现代码
Mar 09 #Javascript
You might like
php+mysql分页代码详解
2008/03/27 PHP
PHP垃圾回收机制简单说明
2010/07/22 PHP
PHP下的Oracle客户端扩展(OCI8)安装教程
2014/09/10 PHP
PHP与SQL语句写一句话木马总结
2019/10/11 PHP
js function使用心得
2010/05/10 Javascript
玩转jQuery按钮 请告诉我你最喜欢哪些?
2012/01/08 Javascript
使用CSS和jQuery模拟select并附提交后取得数据的代码
2013/10/18 Javascript
jquery中常用的函数和属性详细解析
2014/03/07 Javascript
如何将php数组或者对象传递给javascript
2014/03/20 Javascript
深入理解JavaScript系列(29):设计模式之装饰者模式详解
2015/03/03 Javascript
JavaScript数组的栈方法与队列方法详解
2016/05/26 Javascript
详解Nodejs基于mongoose模块的增删改查的操作
2016/12/21 NodeJs
jquery图片预览插件实现方法详解
2019/07/18 jQuery
浅析微信小程序自定义日历组件及flex布局最后一行对齐问题
2020/10/29 Javascript
[48:00]EG vs LGD 2018国际邀请赛淘汰赛BO3 第二场 8.26
2018/08/29 DOTA
python通过scapy获取局域网所有主机mac地址示例
2014/05/04 Python
Python数据分析中Groupby用法之通过字典或Series进行分组的实例
2017/12/08 Python
Python基于列表模拟堆栈和队列功能示例
2018/01/05 Python
在Python中Dataframe通过print输出多行时显示省略号的实例
2018/12/22 Python
Django如何使用第三方服务发送电子邮件
2019/08/14 Python
python中class的定义及使用教程
2019/09/18 Python
TensorFlow tensor的拼接实例
2020/01/19 Python
Tensorflow获取张量Tensor的具体维数实例
2020/01/19 Python
tensorflow 报错unitialized value的解决方法
2020/02/06 Python
英国婚礼商城:Wedding Mall
2019/11/02 全球购物
Goodee官方商店:迷你投影仪
2021/03/15 全球购物
定义一结构体变量,用其表示点坐标,并输入两点坐标,求两点之间的距离
2015/08/17 面试题
写好求职信第一句话的技巧
2013/10/26 职场文书
和解协议书
2014/04/16 职场文书
社区党建工作汇报材料
2014/08/14 职场文书
永远跟党走演讲稿
2014/09/12 职场文书
优秀教师单行材料
2014/12/16 职场文书
人才市场接收函
2015/01/30 职场文书
综合素质评价个性与发展自我评价
2015/03/06 职场文书
少先队大队委竞选口号
2015/12/25 职场文书
不同品牌、不同型号对讲机如何互相通联
2022/02/18 无线电