Я пытаюсь имитировать эффект, когда я нахожу изображение, наложенное полупрозрачное изображение будет исчезать с того направления, откуда появилась ваша мышь. И наоборот, когда ваша мышь покидает изображение (fadeout + удаляется)jQuery анимация для зависания с «направлением мыши»
Для этого я подготовил test page. Идите дальше и проверьте это, он разъяснит, каков желаемый эффект.
Я определил HTML структуру для этого:
<div class="overlayLink">
<img src="assets/work/thumbnails/kreatude.jpg" alt="Kreatude" />
<div class="overlayLink_overlay_bg"> </div>
<div class="overlayLink_overlay_fg">
<span class="overlayLink_overlay_link"><a href="#">View Case Study</a></span>
<div class="top"> </div>
<div class="left"> </div>
<div class="right"> </div>
<div class="bottom"> </div>
</div>
</div>
и следующий JS (я использую JQuery):
jQuery(document).ready(function() {
ourWork();
});
function ourWork(){
var inHandler = function(){
var blue_bg = jQuery(this).find('.overlayLink_overlay_bg');
var divClass = inClass;
blue_bg.stop(true,true).fadeIn();
var ml,mt;
if(divClass == 'left'){
ml = -260;
mt = 0;
}
else if(divClass == 'right'){
ml = 260;
mt = 0;
}
else if(divClass == 'top'){
ml = 0;
mt = -140;
}
else if(divClass == 'bottom'){
ml = 0;
mt = 140;
}
//positioning
jQuery(this).find('a').css({
'marginLeft': ml + 'px',
'marginTop' : mt + 'px'
});
//animation
jQuery(this).find('a').stop(true,true).animate({
"marginLeft": "0px",
"marginTop": "0px"
}, "slow");
}
var outHandler = function(){
var blue_bg = jQuery(this).find('.overlayLink_overlay_bg');
var divClass = outClass;
blue_bg.stop(true,true).fadeOut();
var ml,mt;
if(divClass == 'left'){
ml = -260;
mt = 0;
}
else if(divClass == 'right'){
ml = 260;
mt = 0;
}
else if(divClass == 'top'){
ml = 0;
mt = -140;
}
else if(divClass == 'bottom'){
ml = 0;
mt = 140;
}
//animation
jQuery(this).find('a').stop(true,true).animate({
"marginLeft": ml + "px",
"marginTop": mt + "px"
}, "slow");
}
var inClass, outClass;
jQuery('.overlayLink_overlay_fg div').hover(function(){
inClass = jQuery(this).attr('class');
},function(){
outClass = jQuery(this).attr('class');
});
jQuery('.overlayLink').mouseenter(inHandler).mouseleave(outHandler);
}
объяснение:
В принципе у меня есть четыре абсолютных позиционированных div на вершине изображения, чтобы знать направление (левое, верхнее, нижнее, правое), когда я наводил курсор на один из этих 4 div (.overlayLink_o verlay_fg div) Я поместил имя класса зависающего div в переменную (var inClass и var outclass)
Как только я накрою div, который покрывает область изображения (.overlayLink) Я запрашиваю направление от inClass или фора переменные и выполнять анимацию (inHandler, outHandler)
однако все это, кажется, работает, это немного Glitchy, когда вы перемещаете мышь очень быстро, теперь я спрашиваю, что проблема (это в результате чего глюки) и как это может быть исправлено с моим текущим кодом.
Заранее спасибо
Theres много глюков на странице, которую вы указали выше - это ваше право? Если я спускаюсь с вершины, он работает. Затем налево он работает. Затем, если я спускаюсь с верха, он работает, но выходящий влево снова делает накладку вверх. Тогда, если я пойду слева, после этого наложение происходит сверху. Неважно, как быстро я это делаю. –
Вы правы, не понимал, что это было так глючно. И да, это моя страница. Однако должна быть какая-то логическая причина, почему это происходит. Если я просмотрю свой код, я не вижу в нем логической ошибки, которая беспокоит меня совсем немного. – Ayrton
Просто нет. Это нечестно для сенсорных пользователей. –