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实现原理的模拟代码 -6 代码下载
Aug 16 Javascript
在浏览器窗口上添加遮罩层的方法
Nov 12 Javascript
javascript制作loading动画效果 loading效果
Jan 14 Javascript
seajs中模块的解析规则详解和模块使用总结
Mar 12 Javascript
jquery获取复选框被选中的值
Mar 22 Javascript
Extjs根据条件设置表格某行背景色示例
Jul 23 Javascript
移动端JQ插件hammer使用详解
Jul 03 Javascript
JS简单实现获取元素的封装操作示例
Apr 07 Javascript
Js利用console计算代码运行时间的方法示例
Sep 24 Javascript
详解微信JS-SDK选择图片遇到的坑
Aug 15 Javascript
vue.js 双层嵌套for遍历的方法详解, 类似php foreach()
Sep 07 Javascript
vue项目或网页上实现文字转换成语音播放功能
Jun 09 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
再说下636单管机
2021/03/02 无线电
德生9700DX电路分析
2021/03/02 无线电
PHP学习资料汇总与网址
2007/03/16 PHP
兼容firefox,chrome的网页灰度效果
2011/08/08 PHP
使用PHP求两个文件的相对路径
2013/06/20 PHP
php读取目录及子目录下所有文件名的方法
2014/10/20 PHP
PHP实现仿百度文库,豆丁在线文档效果(word,excel,ppt转flash)
2016/03/10 PHP
ThinkPHP6.0如何利用自定义验证规则规范的实现登陆
2020/12/16 PHP
深入理解Javascript闭包 新手版
2010/12/28 Javascript
jQuery表格行换色的三种实现方法
2011/06/27 Javascript
jQuery中setTimeout的几种使用方法小结
2013/04/07 Javascript
js实现精确到秒的倒计时效果
2016/05/29 Javascript
Node.js Mongodb 密码特殊字符 @的解决方法
2017/04/11 Javascript
Vue学习笔记之表单输入控件绑定
2017/09/05 Javascript
Vue2.0 给Tab标签页和页面切换过渡添加样式的方法
2018/03/13 Javascript
Vue之mixin全局的用法详解
2018/08/22 Javascript
Angular6 发送手机验证码按钮倒计时效果实现方法
2019/01/08 Javascript
JavaScript语句错误throw、try及catch实例解析
2020/08/18 Javascript
10个易被忽视但应掌握的Python基本用法
2015/04/01 Python
基于python时间处理方法(详解)
2017/08/14 Python
使用Python和xlwt向Excel文件中写入中文的实例
2018/04/21 Python
Python机器学习之scikit-learn库中KNN算法的封装与使用方法
2018/12/14 Python
PyCharm 2019.3发布增加了新功能一览
2019/12/08 Python
如何向scrapy中的spider传递参数的几种方法
2020/11/18 Python
python 简单的调用有道翻译
2020/11/25 Python
澳大利亚优质葡萄酒专家:Vintage Cellars
2019/01/08 全球购物
神话般的珠宝:Ross-Simons
2020/07/13 全球购物
database面试题
2013/03/28 面试题
艺术系应届生的自我评价
2013/10/19 职场文书
网络营销策划方案
2014/06/04 职场文书
路政管理求职信
2014/06/18 职场文书
2015年元旦文艺晚会总结(学院)
2014/11/28 职场文书
刮痧观后感
2015/06/05 职场文书
关于JavaScript轮播图的实现
2021/11/20 Javascript
Vue3如何理解ref toRef和toRefs的区别
2022/02/18 Vue.js
Mysql 文件配置解析介绍
2022/05/06 MySQL