来源:洛可可用户体验设计
该页面中有一个图片列表,在鼠标的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);
}
});