一款基于TweenMax跟随鼠标单击移动的div

今天给大家分享一款基于TweenMax跟随鼠标单击移动的div。在这款实例中你可以单击任意位置,div会移动到你单击的位置。效果图如下:

在线预览   源码下载

实现的代码。

html代码:

 <html ng-app="app" ng-click="moveblock($event)">
    <body>
        <block class="block">Where Do You Want Me?<br />Click Anywhere On The Page<br /> To Direct Me</block>
    </body>
    <!--Doesn‘t properly work with touch; working on a fix for that and will update if/when I get it right.. !-->
    <script src=‘angular.min.js‘></script>
    <script src=‘TweenMax.min.js‘></script>
    <script src=‘angular-animate.min.js‘></script>
    <script>        //cue : highlight mouse click position
        (function () {
            var cue = document.createElement(‘div‘),
  pressed = false;
            cue.id = ‘cue‘;
            document.body.appendChild(cue);
            var offset = cue.offsetWidth / 2;
            document.addEventListener(‘mousedown‘, function (ev) {
                document.body.classList.add(‘down‘);
                pressed = true;
                movecue(ev.pageX, ev.pageY);
            }, false);
            document.addEventListener(‘mouseup‘, function (ev) {
                document.body.classList.remove(‘down‘);
                pressed = false;
            }, false);
            function movecue(x, y) {
                cue.style.left = x - offset + ‘px‘;
                cue.style.top = y - offset + ‘px‘;
            }
            document.addEventListener(‘mousemove‘, function (ev) {
                if (pressed) { movecue(ev.pageX, ev.pageY); }
            }, false);
        })();
        //********************
        //app directive
        angular
  .module("app", ["ngAnimate"])
  .directive("block", blockDirective)
  .animation(".block", blockAnimation);

        //  Move Block
        function blockDirective($animate) {

            return {
                restrict: "EA",
                link: function (scope, element, attrs) {

                    var radius = element[0].offsetWidth / 2;

                    TweenMax.set(element, {
                        x: window.innerWidth / 2 - radius,
                        y: window.innerHeight / 2 - radius
                    });

                    scope.moveblock = function ($event) {

                        $animate.animate(element, {}, {
                            x: $event.pageX - radius,
                            y: $event.pageY - radius
                        });
                    };
                }
            };
        }
        function blockAnimation() {

            return {
                animate: function (element, className, from, to, done) {

                    TweenMax.to(element, 0.5, {
                        x: to.x,
                        y: to.y,
                        ease: Back.easeOut,
                        force3D: true,
                        onStart: done
                    });
                }
            };
        }
        //@ sourceURL=pen.js
    </script>

css代码:

        html
        {
            cursor: pointer;
        }
        body
        {
            font-family: ‘Lato‘ , sans-serif;
            font-size: 1em;
            margin: 0;
            background: radial-gradient(black 15%,
  transparent 16%) 0 0, radial-gradient(black 15%,
  transparent 16%) 8px 8px, radial-gradient(rgba(255,255,255,.1)
  15%, transparent 20%) 0 1px, radial-gradient(rgba(255,255,255,.1)
  15%, transparent 20%) 8px 9px;
            background-color: #282828;
            background-size: 16px 16px;
            overflow: hidden;
        }

        .block
        {
            width: 250px;
            color: #F7F6F2;
            text-align: center;
            padding-top: 1.5em;
            height: 100px;
            position: absolute;
            background: #000;
            opacity: 0.7;
            border-radius: 2px;
            border: none;
            -moz-box-sizing: border-box;
            -webkit-box-sizing: border-box;
            box-sizing: border-box;
            box-shadow: 4px 4px 4px 4px rgba(0,0,0,0.4);
            -moz-shadow: 4px 4px 4px 4px rgba(0,0,0,0.4);
            -webkit-shadow: 4px 4px 4px 4px rgba(0,0,0,0.4);
            box-shadow: -4px 4px -4px 4px rgba(0,0,0,0.4);
            -moz-shadow: -4px 4px -4px 4px rgba(0,0,0,0.4);
            -webkit-shadow: -4px 4px -4px 4px rgba(0,0,0,0.4);
        }
        #cue
        {
            background: rgba(255, 255, 10, 0.5 );
            width: 100px;
            height: 100px;
            position: absolute;
            border-radius: 100px;
            -webkit-transition: -webkit-transform 1s;
            -moz-transition: -moz-transform 1s;
            -ms-transition: -ms-transform 1s;
            -o-transition: -o-transform 1s;
            transition: transform 1s;
            -webkit-transform: scale( 0,0 );
            -moz-transform: scale( 0,0 );
            -ms-transform: scale( 0,0 );
            -o-transform: scale( 0,0 );
            transform: scale( 0,0 );
        }
        .down #cue
        {
            -webkit-transform: scale( 1, 1 );
            -moz-transform: scale( 1, 1 );
            -ms-transform: scale( 1, 1 );
            -o-transform: scale( 1, 1 );
            transform: scale( 1, 1 );
        }

时间: 2024-10-20 19:02:14

一款基于TweenMax跟随鼠标单击移动的div的相关文章

跟随鼠标单击移动的div

<html ng-app="app" ng-click="moveblock($event)"> <body> <block class="block">Where Do You Want Me?<br />Click Anywhere On The Page<br /> To Direct Me</block> </body> <!--Doesn't pr

一款基于jquery ui漂亮的可拖动div实例

今天要给大家带来一款基于jquery ui漂亮的可拖动div实例.这款实例用了图片当背景,div层采用了幽灵透明效果.div拖动是基于jquery ui的.界面非常漂亮.一起看下效果图: 在线预览   源码下载 实现的代码. html代码: <div id="box1" class="box blurred-bg tinted"> <h1> Blurred Background</h1> <h2> By <a h

跟随鼠标指针跑的div拖拽效果

<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <title></title> <style> #div1 { height:100px; w

10款基于jQuery打造的大屏带导航焦点图

1.纯CSS3实现3D效果iPhone 6动画 iPhone 6刚发布不久,今天我们就用纯CSS3来把iPhone 6的外观简单地绘制出来,记得是用纯CSS3实现的哦,没有用一张图片.由于CSS3特性的运用,整个iPhone 6手机边框带有阴影,很有立体3D的视觉效果. 在线演示 源码下载 2.纯CSS3天气动画图标 这是一款基于纯CSS3的天气动画图标,利用CSS3特性,我们在这里绘制了7个关于天气的图标,并且每一个图标都有一套代表当前天气的动画特效,比如下雨天气,就会有下雨的动画,下雪也是如

一款基于jquery实现的鼠标单击出现水波特效

今天要为大家绍一款由jquery实现的鼠标单击出现水波特效.用鼠标猛点击页面,你可以看到页面不断出面水波纹效果.然后水波纹渐渐消失.效果非常不错.我们一起看下效果图: 在线预览   源码下载 实现的代码. html代码: <div id="container"> <h1> Click or Touch the Screen.</h1> <p> Click as fast as you can. <em>Try it on a

一款基于css3非常实用的鼠标悬停特效

今天给大家带来一款基于css3非常实用的鼠标悬停特效.这款特效,当鼠标经过时候一个半透明的遮罩层倒下来.效果很好,而且是纯css3实现的,代码很少,非常实用. 效果如下: 在线预览   源码下载 实现的代码: html代码: <div align="center" style="position: relative;"> <div class="contener"> <div class="txt_init

10款基于jQuery实现的鼠标悬停九宫格图片延伸效果

<p><b>1.jQuery多张图片上下叠加切换插件</b></p><p>之前我们已经向大家分享过一款jQuery/CSS3洗牌效果的图片叠加切换应用,本文介绍的这款jQuery多张图片上下叠加切换插件也类似,我们可以将预先加载好的图片按不同的角度叠加起来,点击上下切换按钮时即可将图片上下切换至其他图片后面,效果非常不错.</p><p><img src="http://www.html5tricks.com

一款基于css3鼠标经过圆形旋转特效

今天给大家分享一款基于css3鼠标经过圆形旋转特效.当鼠标经过的时候图片边框颜色旋转,图片显示详情.该实例适用浏览器:IE8.360.FireFox.Chrome.Safari.Opera.傲游.搜狗.世界之窗.效果图如下: 在线预览   源码下载 实现的代码. html代码: <div class="case-content"> <div class="case-item"> <div class="ih-item circ

10款基于jquery的web前端动画特效

1.jQuery横向手风琴图片切换动画 之前我们为大家分享过很多款基于jQuery和CSS3的手风琴菜单和手风琴焦点图插件,比如CSS3响应式垂直手风琴菜单和jQuery横向手风琴图片展示插件.今天要介绍的也是一款基于jQuery的横向手风琴图片切换动画,鼠标滑过图片时即可展开,并且图片上方有文字标题,非常实用. 在线演示 源码下载 2.jQuery/CSS3渐变颜色拾取器 之前我们向大家分享过一款功能十分强大的jQuery颜色拾取器,支持透明度的选取.今天要为大家介绍的同样是一款基于jQuer