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

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

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

效果体验:
http://hovertree.com/texiao/jquery/92/

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

本示例中使用到了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>

转自:http://hovertree.com/h/bjag/5x3kdw0k.htm

相似:http://hovertree.com/h/bjaf/a6598spx.htm

更多特效:http://www.cnblogs.com/roucheng/p/texiao.html

时间: 2024-10-10 23:24:41

jQuery可拖拽3D万花筒旋转特效的相关文章

基于css3的3D立方体旋转特效

今天给大家分享一款基于css3的3D立方体旋转特效.这款特效适用浏览器:360.FireFox.Chrome.Safari.Opera.傲游.搜狗.世界之窗. 不支持IE8及以下浏览器.效果图如下 : 在线预览   源码下载 实现的代码. html代码: <div class="wrap"> <div class="box1 box"> 1</div> <div class="box2 box">

超炫HTML5 SVG聊天框拖拽弹性摇摆动画特效

这是一款很有创意的HTML5 SVG聊天框拖拽弹性摇摆动画特效. 用户能够用鼠标点击或用手滑动聊天框上的指定区域,该区域会以很有弹性的弹簧效果拉开聊天用户列表.点击一个用户头像后.又以同样的弹性特效切换到聊天界面,而且用户头像会移动到聊天界面的右上角.整个动画弹性十足,效果很震撼. 效果演示:http://www.htmleaf.com/Demo/201506031963.html 下载地址:http://www.htmleaf.com/html5/SVG/201506031962.html

jquery实现拖拽的效果

上篇讲的是原生js实现拖拽的效果,本篇是jquery实现拖拽的效果. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta charset="utf-8"/> <title> New Documen

SpringMvc+jQuery 文件拖拽上传、选择上传

最近做了个简易的文件上传功能,jsp版本的,后续会完善更多的功能,不过现在已经能用了,需要的小伙伴,直接引用下面的文件内容直接copy到自己的项目中就ok了,效果如图: fileupload.css: .fileupload_box { position:relative; width: 100%; height: 100%; border: 3px dashed #E5E5E5; text-align: center; z-index: 2000; cursor: pointer; margi

jquery自定义控件拖拽框dragbox

概述: 在做项目的过程中遇到了拖拽框的使用,虽然网上有很多类似的插件,但总归不如自己的好使,于是就自己写了一个,在此总结下来,以便后用. 效果: 提供方法: setTitle(title):设置标题: setContent(content):设置内容: setsize(width, height):设置大小: hide():隐藏: show():显示: 使用方法: 创建对象 var dragbox = $("#dragbox").DragBox({ title:"拖拽的框子&

JQuery之拖拽插件

一直以来,都对JS获取元素的位置感到非常的困惑:一会client.一会offset.一会scroll. 再加上各大浏览器之间的不兼容,唉,搞得哥晕晕乎乎的. 而很多页面效果都要用到这些位置.不得已,得练练,得记记. 下面就来说说这个基于 JQuery的简易拖拽插件吧. 按惯例,先说说拖拽的原理,以及搞这么一个东东的步骤: 那什么是拖拽呢? 看名字就知道了:就是把一个东东拖来拽去的. 放到我们的DOM上,就是改变它的位置. 它只有两个难点:1.如何知道是在拖? 2.如何知道从哪拖,拖到哪? 其实,

jQuery 鼠标拖拽排序

<!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>测试的拖拽功能</title> <style type="text/css"> body, div { margin: 0; paading: 0; f

jquery鼠标拖拽效果分享

//html代码部分 <!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> <script src="../js/jquery-1.11.1.js"></script> </head> <style> body

jquery gridster 拖拽功能 中文文档

先上git连接 http://git.oschina.net/alexgaoyh/Draging/blob/master/src/main/webapp/gridster/adding-widgets-dynamically.html 效果截图: 1)动态添加模块(http://gridster.net/demos/adding-widgets-dynamically.html):使用add_widget方法,通过数组创建一个gridster实例,产生的模块自动排列,无需指定相对位置. (2)自