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 相关文章推荐
使用jquery为table动态添加行的实现代码
Mar 30 Javascript
js固定DIV高度,超出部分自动添加滚动条的简单方法
Jul 10 Javascript
创建一个类Person的简单实例
May 17 Javascript
JS实现复制内容到剪贴板功能兼容所有浏览器(推荐)
Jun 17 Javascript
详解微信小程序开发之下拉刷新 上拉加载
Nov 24 Javascript
jquery Banner轮播选项卡
Dec 26 Javascript
js图片延迟加载(Lazyload)三种实现方式
Mar 01 Javascript
微信小程序 登录的简单实现
Apr 19 Javascript
Vuex之理解Store的用法
Apr 19 Javascript
vue2.0全局组件之pdf详解
Jun 26 Javascript
前端axios下载excel文件(二进制)的处理方法
Jul 31 Javascript
在Echarts图中给坐标轴加一个标识线markLine
Jul 20 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中构造函数和析构函数解析
2014/10/10 PHP
php实现按照权重随机排序数据的方法
2015/01/09 PHP
PHP实现统计代码行数小工具
2019/09/19 PHP
直接生成打开窗口代码,不必下载
2008/05/14 Javascript
jQuery中的val()示例应用
2014/02/26 Javascript
原生js实现淘宝首页点击按钮缓慢回到顶部效果
2014/04/06 Javascript
基于JavaScript实现根据手机定位获取当前具体位置(X省X市X县X街道X号)
2015/12/29 Javascript
nodejs微信公众号支付开发
2016/09/19 NodeJs
老生常谈javascript中逻辑运算符&amp;&amp;和||的返回值问题
2017/04/13 Javascript
前端防止用户重复提交js实现代码示例
2018/09/07 Javascript
angularjs自定义过滤器demo示例
2019/08/24 Javascript
JavaScript中的this基本问题实例小结
2020/03/09 Javascript
vue组件系列之TagsInput详解
2020/05/14 Javascript
Python的高级Git库 Gittle
2014/09/22 Python
python基础之入门必看操作
2017/07/26 Python
python os用法总结
2018/06/08 Python
python实现zabbix发送短信脚本
2018/09/17 Python
python+logging+yaml实现日志分割
2019/07/22 Python
50行Python代码实现视频中物体颜色识别和跟踪(必须以红色为例)
2019/11/20 Python
Python生成器常见问题及解决方案
2020/03/21 Python
后端开发使用pycharm的技巧(推荐)
2020/03/27 Python
布里斯班女装时尚品牌:Adrift
2017/12/28 全球购物
聪明的粉丝购买门票的地方:TickPick
2018/03/09 全球购物
分别介绍一下Session Bean和Entity Bean
2015/03/13 面试题
护理专业毕业生自我鉴定
2013/10/08 职场文书
应聘教师自荐信
2013/10/12 职场文书
药学专业个人自我评价
2013/11/11 职场文书
旅游个人求职信范文
2014/01/30 职场文书
信用社竞聘演讲稿
2014/05/16 职场文书
条幅标语大全
2014/06/20 职场文书
2014学生会工作总结报告
2014/12/02 职场文书
琅琊山导游词
2015/02/05 职场文书
合同补充协议书
2016/03/24 职场文书
XX部保密工作制度范本
2019/08/27 职场文书
Python函数中apply、map、applymap的区别
2021/11/27 Python
MySQL主从切换的超详细步骤
2022/06/28 MySQL