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 相关文章推荐
基于jQuery的简单的列表导航菜单
Mar 02 Javascript
jquery触发a标签跳转事件示例代码
Jul 21 Javascript
js中return false(阻止)的用法
Aug 14 Javascript
你可能不知道的JavaScript的new Function()方法
Apr 17 Javascript
jQuery学习笔记之基础中的基础
Jan 19 Javascript
浅谈被jQuery抛弃的函数及替代函数
May 03 Javascript
Bootstrap模仿起筷首页效果
May 09 Javascript
详解VueJS应用中管理用户权限
Feb 02 Javascript
vue根据进入的路由进行原路返回的方法
Sep 26 Javascript
node.JS二进制操作模块buffer对象使用方法详解
Feb 06 Javascript
vue项目使用高德地图的定位及关键字搜索功能的实例代码(踩坑经验)
Mar 07 Javascript
原生js+css实现tab切换功能
Sep 17 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数据库开发知多少
2006/10/09 PHP
PHP错误处理函数
2016/04/03 PHP
Yii2验证器(Validator)用法分析
2016/07/23 PHP
PHP判断是手机端还是PC端 PHP判断是否是微信浏览器
2017/03/15 PHP
PHP实现的Redis多库选择功能单例类
2017/07/27 PHP
解决FLASH需要点击激活的代码
2006/12/20 Javascript
Knockout visible绑定使用方法
2013/11/15 Javascript
解析JavaScript中的不可见数据类型
2013/12/02 Javascript
JavaScript学习笔记之基础语法
2015/01/22 Javascript
JavaScript学习笔记之定时器
2015/01/22 Javascript
JavaScript 正则表达式中global模式的特性
2016/02/25 Javascript
js仿支付宝填写支付密码效果实现多方框输入密码
2016/03/09 Javascript
AngularJS基础 ng-open 指令简单实例
2016/08/02 Javascript
jQuery插件HighCharts绘制2D饼图效果示例【附demo源码下载】
2017/03/21 jQuery
vue-router重定向不刷新问题的解决
2018/06/25 Javascript
Vue 中使用 typescript的方法详解
2020/02/17 Javascript
vue实现购物车案例
2020/05/30 Javascript
Vue两种组件类型:递归组件和动态组件的用法
2020/08/06 Javascript
vue登录页实现使用cookie记住7天密码功能的方法
2021/02/18 Vue.js
[06:07]辉夜杯现场观众互动 “比谁远送显示器”
2015/12/26 DOTA
Python内置函数bin() oct()等实现进制转换
2012/12/30 Python
python多线程threading.Lock锁用法实例
2014/11/01 Python
在Python的Django框架中编写错误提示页面
2015/07/22 Python
python如何通过实例方法名字调用方法
2018/03/21 Python
利用Python将每日一句定时推送至微信的实现方法
2018/08/13 Python
Python 生成VOC格式的标签实例
2020/03/10 Python
python中实现词云图的示例
2020/12/19 Python
HTML5之SVG 2D入门6—视窗坐标系与用户坐标系及变换概述
2013/01/30 HTML / CSS
英国最大的女士服装零售商:Bonmarché
2017/08/17 全球购物
C语言开发工程师测试题
2016/12/20 面试题
网络维护管理员的自我评价分享
2013/11/11 职场文书
先进集体事迹材料
2014/02/17 职场文书
本科生导师推荐信范文
2014/05/18 职场文书
亮剑观后感300字
2015/06/05 职场文书
考试后的感想
2015/08/07 职场文书
MySQL Shell的介绍以及安装
2021/04/24 MySQL