.fadeIn() / fadeOut() on mousemove
.fadeIn() / fadeOut() on mousemove
我在mousemove中遇到了平滑fadeIn和fadeOut的问题。。。我正在做一些关于顶部元素下的内容的计算,基于这些计算,我想使用fadeIn()
或fadeOut()
工具提示。问题是,当移动鼠标时,事件每隔几毫秒就会被拍摄一次。
定位看起来是这样的:
我移动鼠标,工具提示被隐藏。突然鼠标指针出现在应该触发fadeIn()的元素的顶部,但这个元素不是触发器,因为它在其他元素的后面。所以我需要用鼠标移动来拍摄fadeIn()
。但是,当我每隔几毫秒拍摄一次时,它就不起作用,或者说起了一百万次作用。但一般来说,它不会。。。只要我移动鼠标,动画就会停滞,因为fadeIn()会被再次调用。我真的对此感到厌倦,试着修复了大约5个小时,但一无所获。
我试过:
- 在
fadeIn()
/fadeOut()
之前的.stop()
在不同配置中。。。但我得到的唯一可见效果是它看起来像show()
,因为stop(true,true)
只是删除了队列并导致最后一个动画的结束。哇!这是表演。。。怎样eghn。。。很棒:/ - 使用
:visibe
选择器对fadeOut()
和:not(:visible)
对fadeIn()
。。。好当然,这并没有太大变化,stop()
只是留下了半透明的工具提示 - 使用
rel
属性来定义fadeOut()
已经拍摄并且不应该再拍摄。。。更糟糕的想法是,因为它在总fadeOut()
之后根本没有回来 - 为了得到一些重置之类的东西,但当我没有解决这个问题时,我无法休息——这太烦人了
我想知道是否有人读过这篇文章。。。我不会的。
那么,如何将fadeOut()
、fadeIn()
事件限制为每次一个,以便在鼠标移动触发事件时,即使从动画中间也能平滑地淡入淡出?
我可能会得到这个问题的-1000
。。。doooh。
我建议您使用css。你失去了一点兼容性(最明显的是旧的IE),但它更简单,运行也更流畅。
例如,在:hover
伪类中定义opacity
,然后使用您选择的时间定义transition
属性。
编辑:
在这种情况下使用css没有任何用处,因为正如我所说,事件不是由最顶层触发的。。。stop(true,true)的工作原理与show()完全相同,因为它每隔几毫秒调用一次,一次就足以停止渐变效果。
在这种情况下,在事件处理程序内的淡入元素上设置/取消设置一个类。让css为您做这项工作。
例如:
<style>
#tooltip { opacity:0 ; transition:opacity 1s linear }
#tooltip.enabled { opacity:1 }
</style>
<div class="has-tooltip">Foo</div>
<div id="tooltip">Tooltip</div>
<script>
$(".has-tooltip")
.on("mouseenter", function() { $("#tooltip").addClass("enabled") })
.on("mouseleave", function() { $("#tooltip").removeClass("enabled") })
</script>
您可以尝试在FadeIn/fadeOut之前取消绑定事件,并在动画完成后再次绑定(在完整功能中)。
试试这个,在鼠标移动时调用这个函数
TIMER='';
function onmove()
{
if(TIMER)
clearTimeout(TIMER);
else
TIMER = setTimeout(function(){
// use yor code here eg. $('whteverID').fadeIn();
},10)
}
- 使用 jQuery 的 .on 函数如何获取事件的原始元素
- 主体上的addEventListener('mousemove',..)-有多糟糕
- I'我设计了一个下拉菜单,onclick会出现,而on blur会消失
- window.on.scroll事件未启动
- Socket.io on Mozilla Rhino
- CSS中的游标属性似乎不适用于USB On The Go
- jQuery点击ON现在使用.load触发关闭
- JQuery.on(“keydown”)追加到页面时不工作
- 使用.on动态添加jquery/js不知道的html元素
- angularjs$valid-on-dates在firefox中报告错误
- addEventListener on NodeList
- 当我在节点上拖动鼠标时,我如何防止使用d3.ehavior.zoom().on(“缩放”,重绘)
- jQuery 1.7.2:.on()在一个页面上工作;Don’别再干别的了
- Jquery on单击“显示信息”
- 平均值.on(事件[,选择器][,数据],处理程序)
- 多个jQuery.on()事件无法运行xBrowser(取决于顺序)
- 如何使jQuery的“bind”或“on”事件处理程序幂等
- 无法使以下ng on click outside指令在同一页面上的两个元素上工作
- .fadeIn() / fadeOut() on mousemove
- jQuery - don't fire 'click' on 'mousemove