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 相关文章推荐
利用js获取服务器时间的两个简单方法
Jan 08 Javascript
Jquery中获取iframe的代码
Jan 11 Javascript
javascript获取鼠标点击元素对象(示例代码)
Dec 20 Javascript
javascript 3d 逐侦产品展示(核心精简)
Mar 26 Javascript
用JavaScript实现使用鼠标画线的示例代码
Aug 19 Javascript
使用时间戳解决ie缓存的问题
Aug 20 Javascript
JavaScript自动点击链接 防止绕过浏览器访问的方法
Jan 19 Javascript
mpvue将vue项目转换为小程序
Sep 30 Javascript
jQuery实现高级检索功能
May 28 jQuery
vue实现简单图片上传
Jun 30 Javascript
openlayers 3实现车辆轨迹回放
Sep 24 Javascript
javascript实现倒计时提示框
Mar 02 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
WindowsXP中快速配置Apache+PHP5+Mysql
2008/06/05 PHP
浅析Apache中RewriteCond规则参数的详细介绍
2013/06/30 PHP
PHP使用CURL获取302跳转后的地址实例
2014/05/04 PHP
字符串长度函数strlen和mb_strlen的区别示例介绍
2014/09/09 PHP
PHP中实现crontab代码分享
2015/03/26 PHP
php中 ob_start等函数截取标准输出的方法
2015/06/22 PHP
php日期操作技巧小结
2016/06/25 PHP
PHP simplexml_import_dom()函数讲解
2019/02/03 PHP
Javascript----文件操作
2007/01/18 Javascript
ExtJS 2.0实用简明教程之应用ExtJS
2009/04/29 Javascript
JQuery困惑—包装集 DOM节点
2009/10/16 Javascript
在浏览器中获取当前执行的脚本文件名的代码
2011/07/19 Javascript
jQuery-Tools-overlay 使用介绍
2012/07/14 Javascript
Javascript 按位与运算符 (&amp;)使用介绍
2014/02/04 Javascript
js中的json对象详细介绍
2014/10/29 Javascript
JQuery移动页面开发之屏幕方向改变与滚屏的实现
2015/12/03 Javascript
Extjs4.0 ComboBox如何实现三级联动
2016/05/11 Javascript
jQuery实现页面倒计时并刷新效果
2017/03/13 Javascript
vue兄弟组件传递数据的实例
2018/09/06 Javascript
Vue Router history模式的配置方法及其原理
2019/05/30 Javascript
Element实现表格分页数据选择+全选所有完善批量操作
2019/06/07 Javascript
Python搭建HTTP服务器和FTP服务器
2017/03/09 Python
python opencv之SURF算法示例
2018/02/24 Python
基于python进行桶排序与基数排序的总结
2018/05/29 Python
anaconda中更改python版本的方法步骤
2019/07/14 Python
PyTorch中Tensor的拼接与拆分的实现
2019/08/18 Python
CSS3 Flex 弹性布局实例代码详解
2018/11/01 HTML / CSS
html5自定义video标签的海报与播放按钮功能
2019/12/04 HTML / CSS
美国女性卫生用品公司:Thinx
2017/06/30 全球购物
介绍一下linux文件系统分配策略
2012/11/17 面试题
技校教师求职简历的自我评价
2013/10/20 职场文书
教育局长自荐信范文
2013/12/22 职场文书
廉洁校园实施方案
2014/05/25 职场文书
2015年高一班主任工作总结
2015/05/13 职场文书
导游词之山东孔庙
2019/11/04 职场文书
浅谈mysql哪些情况会导致索引失效
2021/11/20 MySQL