javascript获取鼠标进入div的方向

来源:洛可可用户体验设计

该页面中有一个图片列表,在鼠标的mouseenter和mouseleave事件中会计算鼠标进入和移出时的方向,通过该方向值可以制作出用户体验更佳的效果。

其主要代码如下:

var moveFun = function() { //文字框移动
                var moveTime = 200;
                var moveIn = function(obj, direction) {
                    switch (direction) {
                        case 0:
                            obj.css({
                                "top": "-330px",
                                "left": "0"
                            });
                            break;
                        case 1:
                            obj.css({
                                "top": "0",
                                "left": "330px"

                            });
                            break;
                        case 2:
                            obj.css({
                                "top": "330px",
                                "left": "0"
                            });
                            break;
                        case 3:
                            obj.css({
                                "top": "0",
                                "left": "-330px"
                            });
                            break;
                    }
                    obj.stop().animate({
                        "top": "0",
                        "left": "0"
                    }, moveTime, 'easeOutSine');
                }
                var moveOut = function(obj, direction) {
                    switch (direction) {
                        case 0:
                            obj.stop().animate({
                                "top": "-330px",
                                "left": "0"
                            }, moveTime, 'easeOutSine');
                            break;
                        case 1:
                            obj.stop().animate({
                                "top": "0",
                                "left": "330px"
                            }, moveTime, 'easeOutSine');
                            break;
                        case 2:
                            obj.stop().animate({
                                "top": "330px",
                                "left": "0"
                            }, moveTime, 'easeOutSine');
                            break;
                        case 3:
                            obj.stop().animate({
                                "top": "0",
                                "left": "-330px"
                            }, moveTime, 'easeOutSine');
                            break;
                    }
                }

                $(".list-case li.item").bind("mouseenter mouseleave", function(e) {
                    var obj = $(this)
                    var objTxt = obj.find(".txt");
                    var w = obj.width();
                    var h = obj.height();
		//获取方向
                    var x = (e.pageX - this.offsetLeft - (w / 2)) * (w > h ? (h / w) : 1);
                    var y = (e.pageY - this.offsetTop - (h / 2)) * (h > w ? (w / h) : 1);
                    var direction = Math.round((((Math.atan2(y, x) * (180 / Math.PI)) + 180) / 90) + 3) % 4;
                    var eventType = e.type;

                    if (e.type == 'mouseenter') {
                        moveIn(objTxt, direction);
                    } else {
                        moveOut(objTxt, direction);
                    }
                });


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值