jQuery实现可拖拽3D万花筒旋转特效


Posted in Javascript onJanuary 03, 2017

这是一个使用了CSS3立体效果的强大特效,本特效使用jQuery跟CSS3 transform来实现在用户鼠标按下拖动时,环形图片墙可以跟随鼠标进行3D旋转动画。

进去后可以上下左右的拖动图片。

本示例中使用到了CSS3的transform-style 属性,该规定如何在 3D 空间中呈现被嵌套的元素。

默认值: flat

继承性: no

版本: CSS3

JavaScript 语法: object.style.transformStyle="preserve-3d"

有2个属性值可选择:

flat 子元素将不保留其 3D 位置。

preserve-3d 子元素将保留其 3D 位置。

示例代码如下:

<!DOCTYPE html>
<html lang="zh">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> 
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>jQuery可拖拽3D万花筒旋转特效 - 何问起</title><base target="_blank" />
<style type="text/css">
 *{margin:0;padding: 0;}
 .hovertree{
 width: 120px;
 height: 180px;
 margin: 150px auto 0;
 position: relative;
 /*transform 旋转元素*/
 transform-style:preserve-3d;
 transform:perspective(800px) rotateX(-10deg) rotateY(0deg);
 }
 body{background-color: #66677c;}
 .hovertree img{
 position: absolute;
 width: 100%;
 height: 100%;
 border-radius: 5px;
 box-shadow: 0px 0px 10px #fff;
 /*倒影的设置*/
 -webkit-box-reflect:below 10px -webkit-linear-gradient(top,rgba(0,0,0,0) 50%,rgba(0,0,0,.5) 100%);
 }
 .hovertree p{
 width: 1200px;
 height: 1200px;
 background: -webkit-radial-gradient(center center,600px 600px,rgba(255,255,255,.5),rgba(0,0,0,0));
 position: absolute;
 top:100%;left:50%;
 margin-top: -600px;
 margin-left: -600px;
 border-radius:600px;
 transform:rotateX(90deg);
 }
 .hewenqi{position:absolute;z-index:99;}
 a{color:blue;}
</style>
</head>
<body>
<div class="hovertree">
 <img src="http://hovertree.com/texiao/css/14/hovertreepic/01.jpg"/>
 <img src="http://hovertree.com/texiao/css/14/hovertreepic/02.jpg" />
 <img src="http://cms.hovertree.com/hvtimg/201511/9rour12a.jpg"/>
 <img src="http://hovertree.com/texiao/css/14/hovertreepic/04.jpg"/>
 <img src="http://hovertree.com/texiao/css/14/hovertreepic/05.jpg"/>
 <img src="http://hovertree.com/texiao/css/14/hovertreepic/06.jpg"/>
 <img src="http://hovertree.com/texiao/css/14/hovertreepic/07.jpg"/>
 <img src="http://hovertree.com/texiao/css/14/hovertreepic/08.jpg"/>
 <img src="http://hovertree.com/hvtimg/201511/6j9j6tk5.png"/>
 <img src="http://cms.hovertree.com/hvtimg/201512/wfevf6yh.jpg"/>
 <p></p>
</div>
<script src="http://down.hovertree.com/jquery/jquery-1.11.0.min.js" type="text/javascript"></script>
<script type="text/javascript">
 $(function(){
var imgL=$(".hovertree img").size();
var deg=360/imgL;
var roY=0,roX=-10;
 var xN=0,yN=0;
 var play=null;
 $(".hovertree img").each(function (i) {
 $(this).css({
 //<!--translateZ 定义2d旋转沿着z轴-->
 "transform":"rotateY("+i*deg+"deg) translateZ(300px)" });
 //<!--防止图片被拖拽-->
 $(this).attr('ondragstart','return false');
 });
 $(document).mousedown(function(ev){
 var x_=ev.clientX;
 var y_=ev.clientY;
 clearInterval(play);
 console.log('我按下了');
 $(this).bind('mousemove',function(ev){
  /*获取当前鼠标的坐标*/
  var x=ev.clientX;
  var y=ev.clientY;
  /*两次坐标之间的距离*/
  xN=x-x_;
  yN=y-y_;
  roY+=xN*0.2;
  roX-=yN*0.1;
  console.log('移动');
  //$('body').append('<div style="width:5px;height:5px;position:absolute;top:'+y+'px;left:'+x+'px;background-color:red"></div>');
  $('.hovertree').css({
   transform:'perspective(800px) rotateX('+roX+'deg) rotateY('+roY+'deg)'
  });
  /*之前的鼠标坐标*/
  x_=ev.clientX;
  y_=ev.clientY;
 });
 }).mouseup(function(){
  $(this).unbind('mousemove');
  var play=setInterval(function(){
  xN*=0.95;
  yN*=0.95
  if(Math.abs(xN)<1 && Math.abs(yN)<1){
  clearInterval(play);
  }
  roY+=xN*0.2;
  roX-=yN*0.1;
  $('.hovertree').css({
   transform:'perspective(800px) rotateX('+roX+'deg) rotateY('+roY+'deg)'
  });
  },30);
 });
});
</script>
<div style="text-align:center;margin:250px 0; font:normal 14px/24px 'MicroSoft YaHei';">
 <p class="hewenqi">来源:<a href="http://hovertree.com/">何问起</a> <a href="http://hovertree.com/h/bjag/5x3kdw0k.htm">说明</a></p>
</div>
</body>
</html>

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持三水点靠木!

Javascript 相关文章推荐
通过判断JavaScript的版本实现执行不同的代码
May 11 Javascript
js动态创建表格,删除行列的小例子
Jul 20 Javascript
JS小游戏之仙剑翻牌源码详解
Sep 25 Javascript
Javascript 多物体运动的实现
Dec 24 Javascript
JAVA中截取字符串substring用法详解
Apr 14 Javascript
Node.js readline模块与util模块的使用
Mar 01 Javascript
详解Vue+axios+Node+express实现文件上传(用户头像上传)
Aug 10 Javascript
vuejs选中当前样式active的实例
Aug 22 Javascript
node错误处理与日志记录的实现
Dec 24 Javascript
vscode配置vue下的es6规范自动格式化详解
Mar 20 Javascript
基于mpvue小程序使用echarts画折线图的方法示例
Apr 24 Javascript
Js on及addEventListener原理用法区别解析
Jul 11 Javascript
详解JavaScript常量定义
Jan 03 #Javascript
两种简单的跨域方法(jsonp、php)
Jan 02 #Javascript
JavaScript实现图片瀑布流和底部刷新
Jan 02 #Javascript
一个例子轻松学会Vue.js
Jan 02 #Javascript
jQuery设置和获取select、checkbox、radio的选中值方法
Jan 01 #Javascript
详解照片瀑布流效果(js,jquery分别实现与知识点总结)
Jan 01 #Javascript
JavaScript cookie详解及简单实例应用
Dec 31 #Javascript
You might like
php公用函数列表[正则]
2007/02/22 PHP
PHP冒泡算法详解(递归实现)
2014/11/10 PHP
如何修改yii2.0自带的user表为其它的表
2017/08/01 PHP
ThinkPHP框架实现的MySQL数据库备份功能示例
2018/05/24 PHP
PHP程序员简单的开展服务治理架构操作详解(二)
2020/05/14 PHP
tp5.1 框架路由操作-URL生成实例分析
2020/05/26 PHP
使用jquery获取网页中图片高度的两种方法
2013/09/26 Javascript
JavaScript Math.ceil() 函数使用介绍
2013/12/11 Javascript
js中string转int把String类型转化成int类型
2014/08/13 Javascript
浅谈被jQuery抛弃的函数及替代函数
2015/05/03 Javascript
JavaScript判断数组是否包含指定元素的方法
2015/07/01 Javascript
js中数组结合字符串实现查找(屏蔽广告判断url等)
2016/03/30 Javascript
AngularJs 60分钟入门基础教程
2016/04/03 Javascript
node.js从数据库获取数据
2016/05/08 Javascript
jQuery实现用户输入自动完成功能
2017/02/13 Javascript
nodejs图片处理工具gm用法小结
2018/12/12 NodeJs
vue+element-ui+axios实现图片上传
2019/08/20 Javascript
HTML+JavaScript实现扫雷小游戏
2019/09/30 Javascript
ng-alain的sf如何自定义部件的流程
2020/06/12 Javascript
Python变量和数据类型详解
2017/02/15 Python
Python基于递归算法实现的走迷宫问题
2017/08/04 Python
python 简单备份文件脚本v1.0的实例
2017/11/06 Python
python并发2之使用asyncio处理并发
2017/12/21 Python
selenium python浏览器多窗口处理代码示例
2018/01/15 Python
PyCharm最新激活码PyCharm2020.2.3有效
2020/11/18 Python
pandas统计重复值次数的方法实现
2021/02/20 Python
美国家居装饰网上商店:Lulu & Georgia
2019/09/14 全球购物
精美的手工家居和生活用品:Nkuku
2019/11/01 全球购物
Linux如何命名文件--使用文件名时应注意
2012/01/22 面试题
表决心的诗句大全
2014/03/11 职场文书
学习雷锋精神心得体会范文
2014/03/12 职场文书
人事行政经理岗位职责
2014/06/18 职场文书
经典演讲稿开场白
2014/08/25 职场文书
经理岗位职责范本
2015/04/15 职场文书
2016年度农村党员干部主题教育活动总结
2016/04/06 职场文书
导游词之安徽九华山
2019/09/18 职场文书