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中SQL语句的应用实现
May 04 Javascript
jQuery学习笔记 操作jQuery对象 文档处理
Sep 19 Javascript
jQuery实现用方向键控制层的上下左右移动
Jan 13 Javascript
jquery animate实现鼠标放上去显示离开隐藏效果
Jul 21 Javascript
Jquery 切换不同图片示例代码
Dec 05 Javascript
jQuery实现复选框成对选择及对应取消的方法
Mar 03 Javascript
原生JS实现LOADING效果
Mar 16 Javascript
微信小程序链接传参并跳转新页面
Nov 29 Javascript
vue开发环境配置跨域的方法步骤
Jan 16 Javascript
详解小程序设置缓存并且不覆盖原有数据
Apr 15 Javascript
微信小程序实现搜索功能并跳转搜索结果页面
May 18 Javascript
微信小程序iOS下拉白屏晃动问题解决方案
Oct 12 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 和 MySQL 基础教程(一)
2006/10/09 PHP
域名查询代码公布
2006/10/09 PHP
简体中文转换为繁体中文的PHP函数
2006/10/09 PHP
phpExcel导出大量数据出现内存溢出错误的解决方法
2013/02/28 PHP
PHP rawurlencode与urlencode函数的深入分析
2013/06/08 PHP
浅析HTTP消息头网页缓存控制以及header常用指令介绍
2013/06/28 PHP
php搜索文件程序分享
2015/10/30 PHP
Yii2.0高级框架数据库增删改查的一些操作
2015/11/16 PHP
php session 写入数据库
2016/02/13 PHP
php利用ffmpeg提取视频中音频与视频画面的方法详解
2017/06/07 PHP
php生出随机字符串
2017/07/06 PHP
详解PHP中的外观模式facade pattern
2018/02/05 PHP
Yii2.0建立公共方法简单示例
2019/01/29 PHP
jQuery Validate 验证,校验规则写在控件中的具体实例
2014/02/27 Javascript
laytpl 精致巧妙的JavaScript模板引擎
2014/08/29 Javascript
dreamweaver 8实现Jquery自动提示
2014/12/04 Javascript
node.js实现BigPipe详解
2014/12/05 Javascript
Nodejs 发送Post请求功能(发短信验证码例子)
2017/02/09 NodeJs
jQuery使用JSONP实现跨域获取数据的三种方法详解
2017/05/04 jQuery
js实现同一个页面,多个enter事件绑定的示例
2018/10/10 Javascript
vue项目每30秒刷新1次接口的实现方法
2018/12/04 Javascript
微信小程序实现页面分享onShareAppMessage
2019/08/12 Javascript
js的新生代垃圾回收知识点总结
2019/08/22 Javascript
微信小程序实现选项卡滑动切换
2020/10/22 Javascript
Python实现登录接口的示例代码
2017/07/21 Python
使用python图形模块turtle库绘制樱花、玫瑰、圣诞树代码实例
2020/03/16 Python
CSS3 渐变(Gradients)之CSS3 线性渐变
2016/07/08 HTML / CSS
详解HTML5 Canvas标签及基本使用
2020/01/10 HTML / CSS
Envie de Fraise意大利:法国网上推出的孕妇装品牌
2020/10/18 全球购物
2014领导干部学习焦裕禄同志先进事迹思想汇报
2014/09/19 职场文书
学校总务处领导干部个人对照检查材料思想汇报
2014/10/06 职场文书
大学辅导员述职报告
2015/01/10 职场文书
少年犯观后感
2015/06/11 职场文书
观看禁毒宣传片后的感想
2015/08/11 职场文书
Python实现8种常用抽样方法
2021/06/27 Python
手把手带你彻底卸载MySQL数据库
2022/06/14 MySQL