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 相关文章推荐
ajaxControlToolkit AutoCompleteExtender的用法
Oct 30 Javascript
JavaScript 动态改变图片大小
Jun 11 Javascript
js切换div css注意的细节
Dec 10 Javascript
js+css 实现遮罩居中弹出层(随浏览器窗口滚动条滚动)
Dec 11 Javascript
Javascript中数组方法汇总(推荐)
Apr 01 Javascript
JavaScript使用cookie实现记住账号密码功能
Apr 27 Javascript
jQuery Dialog对话框事件用法实例分析
May 10 Javascript
微信小程序 摇一摇抽奖简单实例实现代码
Jan 09 Javascript
JavaScript实现微信红包算法及问题解决方法
Apr 26 Javascript
jQuery.validate.js表单验证插件的使用代码详解
Oct 22 jQuery
微信小程序实现吸顶效果
Jan 08 Javascript
Vue双向数据绑定(MVVM)的原理
Oct 03 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批量删除数据
2007/01/18 PHP
php页面消耗内存过大的处理办法
2013/03/18 PHP
PHP经典面试题集锦
2015/03/19 PHP
php提交post数组参数实例分析
2015/12/17 PHP
浅谈PHP中关于foreach使用引用变量的坑
2016/11/14 PHP
TP5(thinkPHP5)框架使用ajax实现与后台数据交互的方法小结
2020/02/10 PHP
js写一个弹出层并锁屏效果实现代码
2012/12/07 Javascript
ECMAScript6中Set/WeakSet详解
2015/06/12 Javascript
JS简单实现浮动窗口效果示例
2016/09/07 Javascript
JS操作input标签属性checkbox全选的实现代码
2017/03/02 Javascript
浅谈Node.js之异步流控制
2017/10/25 Javascript
深入理解Promise.all
2018/08/08 Javascript
Vue刷新修改页面中数据的方法
2018/09/16 Javascript
JavaScript实现与web通信的方法详解
2020/08/07 Javascript
vuecli项目构建SSR服务端渲染的实现
2020/10/30 Javascript
如何在vue 中使用柱状图 并自修改配置
2021/01/21 Vue.js
举例讲解Python中的list列表数据结构用法
2016/03/12 Python
Python批量更改文件名的实现方法
2017/10/29 Python
Python回文字符串及回文数字判定功能示例
2018/03/20 Python
Gauss-Seidel迭代算法的Python实现详解
2019/06/29 Python
Python 生成一个从0到n个数字的列表4种方法小结
2019/11/28 Python
Python猴子补丁Monkey Patch用法实例解析
2020/03/23 Python
完美解决pyinstaller打包报错找不到依赖pypiwin32或pywin32-ctypes的错误
2020/04/01 Python
使用pyecharts1.7进行简单的可视化大全
2020/05/17 Python
CSS3区域模块region相关编写示例
2015/08/28 HTML / CSS
美国高端婴童品牌:Hanna Andersson
2016/10/30 全球购物
linux面试题参考答案(10)
2013/11/04 面试题
党支部活动策划方案
2014/08/18 职场文书
中学生检讨书1000字
2014/10/28 职场文书
试用期转正工作总结2015
2015/05/28 职场文书
大国崛起观后感
2015/06/02 职场文书
2016机关干部作风建设心得体会
2016/01/21 职场文书
《蜜蜂引路》教学反思
2016/02/22 职场文书
Python实现Telnet自动连接检测密码的示例
2021/04/16 Python
Python基础详解之描述符
2021/04/28 Python
win7配置本地ftp服务器的图文教程
2022/08/05 Servers