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 相关文章推荐
baidu博客的编辑友情链接的新的层窗口!经典~支持【FF】
Feb 09 Javascript
javascript中的nextSibling使用陷(da)阱(keng)
May 05 Javascript
基于socket.io和node.js搭建即时通信系统
Jul 30 Javascript
jQuery.holdReady()方法用法实例
Dec 27 Javascript
javascript实现判断鼠标的状态
Jul 10 Javascript
js中数组结合字符串实现查找(屏蔽广告判断url等)
Mar 30 Javascript
JS实现前端缓存的方法
Sep 21 Javascript
vue实现裁切图片同时实现放大、缩小、旋转功能
Mar 02 Javascript
浅谈Vue 数据响应式原理
May 07 Javascript
vue单页缓存方案分析及实现
Sep 25 Javascript
Echarts地图添加引导线效果(labelLine)
Sep 30 Javascript
vue动态禁用控件绑定disable的例子
Oct 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
PHPAnalysis中文分词类详解
2014/06/13 PHP
PHP中使用php5-ffmpeg撷取视频图片实例
2015/01/07 PHP
ajaxControlToolkit AutoCompleteExtender的用法
2008/10/30 Javascript
jquery利用event.which方法获取键盘输入值的代码
2011/10/09 Javascript
javascript实用小函数使用介绍
2013/11/11 Javascript
Jquery uploadify图片上传插件无法上传的解决方法
2013/12/16 Javascript
jquery选择器之属性过滤选择器详解
2014/01/27 Javascript
用jquery仿做发微博功能示例
2014/04/18 Javascript
MVVM模式中ViewModel和View、Model有什么区别?
2015/06/19 Javascript
cocos2dx骨骼动画Armature源码剖析(一)
2015/09/08 Javascript
JavaScript使用DeviceOne开发实战(一) 配置和起步
2015/12/01 Javascript
JS控制按钮10秒钟后可用的方法
2015/12/22 Javascript
jQuery插件JWPlayer视频播放器用法实例分析
2017/01/11 Javascript
详解Vue路由History mode模式中页面无法渲染的原因及解决
2017/09/28 Javascript
Spring Boot/VUE中路由传递参数的实现代码
2018/03/02 Javascript
vue项目base64字符串转图片的实现代码
2018/07/13 Javascript
JavaScript数组方法的错误使用例子
2018/09/13 Javascript
微信小程序登录数据解密及状态维持实例详解
2019/05/06 Javascript
基于JS实现快速读取TXT文件
2020/08/25 Javascript
html+vue.js 实现漂亮分页功能可兼容IE
2020/11/07 Javascript
python网页请求urllib2模块简单封装代码
2014/02/07 Python
Python实现的HTTP并发测试完整示例
2020/04/23 Python
python中print的不换行即时输出的快速解决方法
2016/07/20 Python
Python内置函数 next的具体使用方法
2017/11/24 Python
Python实现利用163邮箱远程关电脑脚本
2018/02/22 Python
python实现矩阵打印
2019/03/02 Python
python numpy 矩阵堆叠实例
2020/01/17 Python
Selenium自动化测试工具使用方法汇总
2020/06/12 Python
英国评分最高的女性剃须刀订阅盒:FFS Beauty
2018/01/25 全球购物
华硕新加坡官方网上商店:ASUS Singapore
2020/07/09 全球购物
弘扬雷锋精神活动演讲稿
2014/03/04 职场文书
奥巴马开学演讲稿
2014/05/15 职场文书
初中信息技术教学计划
2015/01/22 职场文书
电台广播稿范文
2015/08/19 职场文书
python中pandas.read_csv()函数的深入讲解
2021/03/29 Python
解决IIS7下无法绑定https主机的问题
2022/04/29 Servers