我正在尝试使用JQuery来实现悬停淡出效果。目前,我有一个被“ hov”类攻击的元素,如果没有javascript,css只会在:hover上更改其颜色。使用JQuery。
这个想法是在元素被翻转时克隆它,并将其直接放置在最前面,将其从“ hov”类中剥离出来,因此它只是静态的。然后我将其淡出,以创建过渡效果。
不过,在从克隆中删除“ hov”类之后,我遇到了麻烦,它仍然保持运行状态。我可以将鼠标悬停在克隆上,即使它不能通过hov定位。有什么想法/提示吗?
<a href="#" class="hov rounded-50 action-button">Fade Me Out< /a>
$(".hov").mouseover(function() {
// Clone the current element, remove the "hov" class so it won't trigger same behavior
// finally layer it infront of current element
var $overlay = $(this).clone(true).removeClass("hov").insertAfter($(this));
// Push it to the side just for testing purposes - fade it out
$overlay.css({left:'300px'}).fadeOut({duration:500, ease:'easeOutQuad'});
});
最佳答案
无需克隆元素,只需淡化原始元素即可:
$('.hov').mouseenter(function() {
$(this).fadeOut();
});
// Optionally:
$('.hov').mouseleave(function() {
$(this).stop(true, true).show();
});
您还可以使用悬停功能:
$('.hov').hover(function(){
$(this).fadeOut();
},
function(){
$(this).stop(true, true).show();
});
如果只希望它部分褪色,则可以设置opacity属性的动画:
$('.hov').mouseenter(function() {
$(this).animate({'opacity': 0.5});
});
如果只想使其脉动,则返回正常的不透明度:
$('.hov').mouseenter(function() {
$this = $(this);
$this.animate({'opacity': 0.5}, {
'complete': function(){
$this.animate({'opacity': 1});
}
});
});
最后,如果您愿意放弃对旧版浏览器的支持,则可以使用CSS来完成所有操作:
.hov {
-webkit-transition: opacity 0.3s ease-in;
-moz-transition: opacity 0.3s ease-in;
}
.hov:hover {
opacity: 0.5;
}