在悬停事件中创建一次性操作
Creating a one time action within a hover event
我有一个菜单,我想在页面加载时以全宽显示,然后在几秒钟后收缩。我已经成功地通过为我的timer
变量分配一个setTimeout
函数来做到这一点:
var timer = setTimeout(function() {
$('nav').animate({width: '100p'}, 600, 'swing');
}, 1500);
我还想在悬停事件上对div 的宽度进行动画处理,如下所示:
$('nav').hover(function() {
clearTimeout(timer);
$(this).stop().animate({width: '100'}, 400, 'swing');
}, function() {
$(this).stop().animate({width: '30"}, 400, 'swing');
});
我关心的是整体优化。显然,一旦计时器完成,它将永远不会重置,但基本上用户每次鼠标进入该div时都会调用该clearTimeout
函数。我最初想到使用该方法,one()
但不想在我现在设置的hover()
事件之外创建一个全新的操作。有什么解决方法吗?
我会用css解决方案解决这个问题。请注意,过渡动画会出现旧版浏览器问题。
nav{
width:30px;
}
nav.initial-expand, nav:hover{
width:100px;
-webkit-transition: width .4s; /* Safari */
transition: width .4s;
}
删除.initial-expand
var timer = setTimeout(function() {
$('nav').removeClass('.initial-expand')
}, 1500);
由于.initial-expand
或:hover
触发展开的外观,因此删除类是否悬停无关紧要。
此外,我建议使用左/右位置而不是宽度在屏幕上/屏幕外制作动画,因为使其变窄会导致文本换行奇怪。
相关文章:
- 如何使jQuery插件函数可调用以供独立使用,而不在集合上操作
- Jquery菜单操作不稳定,定位不正确,存在一般错误
- 如何确定javascript已经完成了某些操作.ios上的
- 防止Alt+Shift默认操作或检测多种操作系统语言的Javascript
- 从JavaScript访问struts操作中的属性
- Angular:更新一次性绑定的数据
- fluxxor向一个flux实例添加一组以上的操作
- Jquery表单验证插件-如果选中复选框,如何在提交时执行某些操作
- 操作放置在画布上的元素之间的连接
- 使用“+="操作人员
- Rails操作只调用一次,但我在ajax中每秒钟都调用一次
- Jquery未定义函数正在停止其他操作
- 如何操作iframe之外的元素
- javascript对象操作:根据指定条件选择属性
- jQuery:暂停按钮可以暂停所有其他操作
- 用于选择/文本框操作的JavaScript
- Google 脚本:用于创建日历活动的脚本运行时不会出错,但不会执行任何操作
- 通过javascript操作图像,非常简单
- 在悬停事件中创建一次性操作
- 如何将操作函数添加到从可观察量订阅返回的一次性