当客户将鼠标悬停在产品上时,希望创建一个快速查看选项卡。
我差点把它排序但我的问题是你的鼠标移动到快速查看div按钮后,按钮开始消失,因为它在技术上移动了触发器div。我该怎么做呢?
继承人使用
进行jquery $("#cat_product").hover(
function () {
$(".quickview").fadeIn();
},
function () {
$(".quickview").fadeOut();
}
);
这是我用来测试的小提琴 - https://jsfiddle.net/a0j96wyc/
答案 0 :(得分:1)
我建议为.quickview
添加悬停事件。当您将#cat_product
悬停在.quickview
之上时,.quickview
的悬停事件会接管并阻止该按钮淡出。
由于该按钮完全由#cat_product
包含,我没有为.quickview
添加“悬停”事件。如果不悬停在#cat_product
上,您将永远不会悬停在按钮上。
另外,我正在使用stop()
清除动画队列并防止淡入淡出。
$("#cat_product").hover(
function () {$(".quickview").stop(true,true).fadeIn();},
function () {$(".quickview").fadeOut();}
);
$(".quickview").hover(
function () {$(this).stop(true, true).show(0);}
);
.quickview {
display: block;
}
.hidden {
display: none;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<a href="http://www.mayfieldfurniture.co.uk/Bedroom+Furniture/Chest+of+Drawers/1567493/ViewProduct/" class="normal_text" style="text-decoration:none">
<div id="cat_product" style="width:250px; border:1px solid #000">
<div class="options_overlay_cat">
<div style='text-align:center'>
<div style="height:170px">
<img class="lazy" src="//cdn.mayfieldfurniture.co.uk/images/?src=img-1567493.jpg&w=170" data-original="//cdn.mayfieldfurniture.co.uk/images/?src=img-1567493.jpg&w=170" title="Mark Webster MWG017 Geo 6 Drawer Tallboy" border="0" style="display: inline;">
<noscript><img src="//cdn.mayfieldfurniture.co.uk/images/?src=img-1567493.jpg&w=170"></noscript>
</div>
<div style="text-align:left; padding:20px 8px 20px 8px"><b><font style="font-size:14px; color:#00CC00">Geo</font></b>
<br><font style="font-size:13px">6 Drawer Tallboy</font>
<br>
<div style="padding-top:8px;">
<div style="float:left"><font class="small_black_text">Was <strike>£579</strike></font>
<br><font style=" color:#C50132" class="product_price_18">£489</font>
</div>
<div style="padding:5px; background-color:#C50132; margin-top:5px; color:white; float:right"><b>SAVE £90<b></b></b>
</div>
<div style="clear:both"></div>
</div>
<div style="height:20px;padding-top:10px;">
<div>
<div style="float:left; width:14px; height:14px; border:1px solid #999999; margin-left:3px;">
<img src="//cdn.mayfieldfurniture.co.uk/images/finishes/?src=geo_lacquered.jpg&w=14" title="Lacquered" border="0">
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div id='quick' class='quickview hidden' style="position:absolute; margin: -270px 0px 0px 80px; height:48px; width:108px">
<a href="//www.mayfieldfurniture.co.uk/modules/quickview/index.php?id='.$row[0].'" class="fancybox fancybox.iframe">
<img src="//cdn.mayfieldfurniture.co.uk/images/quickview_button.png" height="48" />
</a>
</div>
</a>
CSS解决方案
通过对HTML结构进行微调,您可以使用CSS transitions设置不透明度动画,并避免完全使用JavaScript。示例如下:
.quickview {
opacity: 0;
-webkit-transition: opacity .2s ease-in-out 0s;
transition: opacity .2s ease-in-out 0s;
}
div#cat_product:hover div.quickview {
opacity: 1;
}
<a href="http://www.mayfieldfurniture.co.uk/Bedroom+Furniture/Chest+of+Drawers/1567493/ViewProduct/" class="normal_text" style="text-decoration:none">
<div id="cat_product" style="width:250px; border:1px solid #000">
<div class="options_overlay_cat">
<div style='text-align:center'>
<div style="height:170px">
<img class="lazy" src="//cdn.mayfieldfurniture.co.uk/images/?src=img-1567493.jpg&w=170" data-original="//cdn.mayfieldfurniture.co.uk/images/?src=img-1567493.jpg&w=170" title="Mark Webster MWG017 Geo 6 Drawer Tallboy" border="0" style="display: inline;">
<noscript><img src="//cdn.mayfieldfurniture.co.uk/images/?src=img-1567493.jpg&w=170"></noscript>
</div>
<div style="text-align:left; padding:20px 8px 20px 8px"><b><font style="font-size:14px; color:#00CC00">Geo</font></b>
<br><font style="font-size:13px">6 Drawer Tallboy</font>
<br>
<div style="padding-top:8px;">
<div style="float:left"><font class="small_black_text">Was <strike>£579</strike></font>
<br><font style=" color:#C50132" class="product_price_18">£489</font>
</div>
<div style="padding:5px; background-color:#C50132; margin-top:5px; color:white; float:right"><b>SAVE £90<b></b></b>
</div>
<div style="clear:both"></div>
</div>
<div style="height:20px;padding-top:10px;">
<div>
<div style="float:left; width:14px; height:14px; border:1px solid #999999; margin-left:3px;">
<img src="//cdn.mayfieldfurniture.co.uk/images/finishes/?src=geo_lacquered.jpg&w=14" title="Lacquered" border="0">
</div>
</div>
</div>
</div>
</div>
</div>
<div id='quick' class='quickview hidden' style="position:absolute; margin: -270px 0px 0px 80px; height:48px; width:108px">
<a href="//www.mayfieldfurniture.co.uk/modules/quickview/index.php?id='.$row[0].'" class="fancybox fancybox.iframe">
<img src="//cdn.mayfieldfurniture.co.uk/images/quickview_button.png" height="48" />
</a>
</div>
</div>
</a>
答案 1 :(得分:0)
这是另一种解决方案。我使用了setTimeout()
并修改了动画的css。
CSS:
.quickview{
display: block;
opacity: 0;
transition: opacity .2s linear;
}
JS:
var $quickView = $(".quickview");
var timeout = null;
$("#cat_product").on({
mouseenter: function () {
$quickView.css("opacity", 1);
},
mouseleave: function () {
timeout = setTimeout(function() {
$quickView.css("opacity", 0);
}, 50);
}
});
$('.quickview').on({
mouseenter: function() {
clearTimeout(timeout);
}
});
Here是演示。
编辑:Here是版本,没有jQuery 。