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

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

大家好,又见面了,我是全栈君,今天给大家准备了Idea注册码。

这是一个使用了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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/120272.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长

相关推荐

  • 消息队列:生产者/消费者模式

    1.什么是生产者消费者模式生产者消费者模式是通过一个容器来解决生产者和消费者的强耦合问题。生产者和消费者彼此之间不直接通讯,而通过阻塞队列来进行通讯,所以生产者生产完数据之后不用等待消费者处理,直接扔给阻塞队列,消费者不找生产者要数据,而是直接从阻塞队列里取,阻塞队列就相当于一个缓冲区,平衡了生产者和消费者的处理能力。这个阻塞队列就是用来给生产者和消费者解耦的。…

    2022年4月4日
  • JS后退一页, JS返回上一页代码,

    JS后退一页, JS返回上一页代码,Javascript返回上一页: 1.history.go(-1),返回两个页面:history.go(-2); 2.history.back(). 3.window.history.forward()返回下一页 4.window.history.go(返回第几页,也可以使用访问过的URL) 例: &lt;ahref="java…

    2022年7月25日
  • windows下CMD常用命令[通俗易懂]

    windows下CMD常用命令[通俗易懂]作为一个开发者,我们用的最多的就是windows,但是对于cmd,我不知道大家熟不熟,反正我是一直不怎么熟悉。平时操作linux比较多,反而忽视了cmd相关命令,这里大致总结一些常用的命令,作为记录。一、常用命令1、进入某个盘//进入d盘D://进入F盘F:这里我经常弄混,老是用cd命令,结果回回进不去。。Linux和windows果然不一样。2、查看目录文件//查看当前目录下的文件,类似于l

    2022年9月22日
  • 启动马达接线实物图_软启动器怎么接线?一张电路图一张实物图供大家参考

    启动马达接线实物图_软启动器怎么接线?一张电路图一张实物图供大家参考朋友们大家好,我是大俵哥,今天我们来聊一下软启动。很多大型动力设备在启动的时候,启动电流都是比较大的,对整个电网有冲击性,所以不能直接启动,具体原因有以下两点。一,有的电机启动电流为额定电流的4--7倍,直接启动会影响同一电网内的其他用电设备。二,直接启动产生较高的峰值转矩,不仅对驱动电机有冲击性,而且易损坏机械装置。软启动相比星三角降压启动、自耦变压器启动等效果要好一些,启动更加平稳,保护也更加…

    2022年6月6日
  • pytest的assert_java单元测试断言

    pytest的assert_java单元测试断言前言断言是写自动化测试基本最重要的一步,一个用例没有断言,就失去了自动化测试的意义了。什么是断言呢?简单来讲就是实际结果和期望结果去对比,符合预期那就测试pass,不符合预期那就测试failed

    2022年7月29日
  • SSTI完全学习[通俗易懂]

    一、什么是SSTISSTI就是服务器端模板注入(Server-SideTemplateInjection),也给出了一个注入的概念。常见的注入有:SQL注入,XSS注入,XPATH注入,XML注入,代码注入,命令注入等等。sql注入已经出世很多年了,对于sql注入的概念和原理很多人应该是相当清楚了,SSTI也是注入类的漏洞,其成因其实是可以类比于sql注入的。sql注入是从用户获…

    2022年4月5日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号