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 相关文章推荐
JavaScript 异步方法队列链实现代码分析
Jun 05 Javascript
jquery实现图片等比例缩放以及max-width在ie中不兼容解决
Mar 21 Javascript
js计算精度问题小结
Apr 22 Javascript
js获得指定控件输入光标的坐标兼容IE,Chrome,火狐等多种主流浏览器
May 21 Javascript
分享JavaScript获取网页关闭与取消关闭的事件
Dec 13 Javascript
js闭包实例汇总
Nov 09 Javascript
js实现从中间开始往上下展开网页窗口的方法
Mar 02 Javascript
jquery+html5烂漫爱心表白动画代码分享
Aug 24 Javascript
JavaScript实现搜索框的自动完成功能(一)
Feb 25 Javascript
BootStrap 轮播插件(carousel)支持左右手势滑动的方法(三种)
Jul 07 Javascript
基于JS实现checkbox全选功能实例代码
Oct 31 Javascript
django中使用vue.js的要点总结
Jul 07 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
vBulletin HACK----关于排版的两个HACK
2006/10/09 PHP
php使用cookie保存登录用户名的方法
2015/01/26 PHP
php随机显示指定文件夹下图片的方法
2015/07/13 PHP
PHP实现的简单组词算法示例
2018/04/10 PHP
Laravel学习笔记之Artisan命令生成自定义模板的方法
2018/11/22 PHP
Alliance vs Liquid BO3 第二场2.13
2021/03/10 DOTA
原生Javascript封装的一个AJAX函数分享
2014/10/11 Javascript
2014 HTML5/CSS3热门动画特效TOP10
2014/12/07 Javascript
论Bootstrap3和Foundation5网格系统的异同
2016/05/16 Javascript
JavaScript数组去重的几种方法效率测试
2016/10/23 Javascript
JS数组排序方法实例分析
2016/12/16 Javascript
angularjs中判断ng-repeat是否迭代完的实例
2018/09/12 Javascript
基于JS实现前端压缩上传图片的实例代码
2019/05/14 Javascript
[01:31:02]TNC vs VG 2019国际邀请赛淘汰赛 胜者组赛BO3 第一场
2019/08/22 DOTA
Python实现对excel文件列表值进行统计的方法
2015/07/25 Python
Python 12306抢火车票脚本 Python京东抢手机脚本
2018/02/06 Python
致Python初学者 Anaconda入门使用指南完整版
2018/04/05 Python
python中协程实现TCP连接的实例分析
2018/10/14 Python
python opencv实现图像边缘检测
2019/04/29 Python
opencv导入头文件时报错#include的解决方法
2019/07/31 Python
使用python实现unix2dos和dos2unix命令的例子
2019/08/13 Python
python使用PIL和matplotlib获取图片像素点并合并解析
2019/09/10 Python
Python 3.8 新功能来一波(大部分人都不知道)
2020/03/11 Python
pandas分批读取大数据集教程
2020/06/06 Python
python属于解释型语言么
2020/06/15 Python
python time()的实例用法
2020/11/03 Python
CSS3 Calc实现滚动条出现页面不跳动问题
2017/09/14 HTML / CSS
详解H5 活动页之移动端 REM 布局适配方法
2017/12/07 HTML / CSS
PHP如何对用户密码进行加密
2014/07/31 面试题
宝信软件JAVA工程师面试经历
2012/08/19 面试题
学雷锋演讲稿汇总
2014/05/10 职场文书
含预算的公司户外活动方案
2014/08/16 职场文书
2015年班主任德育工作总结
2015/05/21 职场文书
保护环境建议书作文500字
2015/09/14 职场文书
MySql学习笔记之事务隔离级别详解
2021/05/12 MySQL
vue递归实现树形组件
2022/07/15 Vue.js