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 相关文章推荐
ExtJS扩展 垂直tabLayout实现代码
Jun 21 Javascript
Javascript学习笔记-详解in运算符
Sep 13 Javascript
使用javascript实现简单的选项卡切换
Jan 09 Javascript
js对象基础实例分析
Jan 13 Javascript
javascript实现根据iphone屏幕方向调用不同样式表的方法
Jul 13 Javascript
详解JavaScript的回调函数
Nov 20 Javascript
javascript实现label标签跳出循环操作
Mar 06 Javascript
微信小程序 在线支付功能的实现
Mar 14 Javascript
详解Vue一个案例引发「内容分发slot」的最全总结
Dec 02 Javascript
在微信小程序中使用vant的方法
Jun 07 Javascript
详解如何使用React Hooks请求数据并渲染
Oct 18 Javascript
JavaScript实现九宫格拖拽效果
Jun 28 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
让Json更懂中文(JSON_UNESCAPED_UNICODE)
2011/10/27 PHP
PHP数组无限分级数据的层级化处理代码
2012/12/29 PHP
PHP迭代器的内部执行过程详解
2013/11/12 PHP
PHP实现采集中国天气网未来7天天气
2014/10/15 PHP
PHP获取音频文件的相关信息
2015/06/22 PHP
thinkphp5.0自定义验证规则使用方法
2017/11/16 PHP
PHP使用glob方法遍历文件夹下所有文件的实例
2018/10/17 PHP
如何实现浏览器上的右键菜单
2006/07/10 Javascript
Prototype 学习 工具函数学习($方法)
2009/07/12 Javascript
javascript淡入淡出效果的实现思路
2012/03/31 Javascript
js鼠标及对象坐标控制属性详细解析
2013/12/14 Javascript
JS数组的遍历方式for循环与for...in
2014/07/31 Javascript
javascript获取dom的下一个节点方法
2014/09/05 Javascript
21个JavaScript事件(Events)属性汇总
2014/12/02 Javascript
js jquery获取当前元素的兄弟级 上一个 下一个元素
2015/09/01 Javascript
javascript闭包(Closure)用法实例简析
2015/11/30 Javascript
JS去掉字符串前后空格、阻止表单提交的实现代码
2017/06/08 Javascript
Vue.set() this.$set()引发的视图更新思考及注意事项
2018/08/30 Javascript
跨域解决之JSONP和CORS的详细介绍
2018/11/21 Javascript
jQuery内容过滤选择器与子元素过滤选择器用法实例分析
2019/02/20 jQuery
原生js拖拽功能制作滑动条实例代码
2021/02/05 Javascript
python获取标准北京时间的方法
2015/03/24 Python
详细解析Python中__init__()方法的高级应用
2015/05/11 Python
Python md5与sha1加密算法用法分析
2017/07/14 Python
Python运行不显示DOS窗口的解决方法
2018/10/22 Python
基于YUV 数据格式详解及python实现方式
2019/12/09 Python
Python 实现opencv所使用的图片格式与 base64 转换
2020/01/09 Python
tensorflow对图像进行拼接的例子
2020/02/05 Python
python GUI库图形界面开发之PyQt5单行文本框控件QLineEdit详细使用方法与实例
2020/02/27 Python
使用Python实现将多表分批次从数据库导出到Excel
2020/05/15 Python
html5 外链式实现加减乘除的代码
2019/09/04 HTML / CSS
林肯就职演讲稿
2014/05/19 职场文书
大学新闻系自荐书
2014/05/31 职场文书
美术学专业求职信
2014/07/23 职场文书
2014教师教育实践活动对照检查材料思想汇报
2014/09/21 职场文书
2016年基层党支部书记公开承诺书
2016/03/25 职场文书