一个比较有意思的特效
<--html部分代码-->
- 图片一
- 图片二
- 图片三
- 图片四
- 图片五
- 图片六
- 图片七
- 图片八
- 图片九
- 图片十
- 图片七
- 图片八
<--CSS部分代码-->
<--
body,ul,li,img{margin: 0;padding: 0}
body{background: #f8f8f8}
.wrap{width: 720px;margin: 30px auto;padding: 10px;}
.list{float: left;height: auto;background: #fff;border: 1px solid #ccc;width: 100%}
.list li{cursor: pointer;margin:10px;position: relative;list-style-type: none;float: left;overflow: hidden;}
.list li img{float: left;}
.list li div{position: absolute;background:#F2528E;opacity: 0.8;filter:alpha(opacity:80);color:#fff;font-size:28px;text-align:center;line-height:150px;top:150px }
.list img,.list div{height: 150px;width: 220px;}
-->
<--JS部分代码-->
//引入JQ
var timer = null;
$('li').mouseenter(function(e) {
var oDiv = $(this).find('div');
oDiv.css({left: 0, top: 0});
var iDirection = mousemovedirection(this, e);
switch(iDirection) {
case 0 : oDiv.css('top', '-150px'); break;
case 1: oDiv.css('left', '220px'); break;
case 2: oDiv.css('top', '150px'); break;
default: oDiv.css('left', '-220px')
}
timer = setTimeout(function() {
oDiv.animate({left: 0, top: 0}, 200)
}, 100)
}).mouseleave(function(e) {
clearTimeout(timer);
var oDiv = $(this).find('div');
var iDirection = mousemovedirection(this, e);
switch(iDirection) {
case 0 : oDiv.animate({top: -150}, 200); break;
case 1: oDiv.animate({left: 220}, 200); break;
case 2: oDiv.animate({top: 150}, 200); break;
default: oDiv.animate({left: -220}, 200)
}
});
function mousemovedirection(o, e) { //这里是判断鼠标移入方向的方法,返回的数字可能是0, 1, 2, 3 分别对应表示的是 上, 右, 下, 左这几个方向。
- var w = o.offsetWidth;
- var h = o.offsetHeight;
- var x = (e.pageX - o.offsetLeft - (w/2)) * (w > h ? (h/w) : 1);
- var y = (e.pageY - o.offsetTop - (h/2)) * (h > w ? (w/h) : 1);
- var direction = Math.round((((Math.atan2(y, x) * (180/Math.PI)) + 180) / 90) + 3) % 4;
- var evenType = e.type;
- return direction;
}