zoukankan      html  css  js  c++  java
  • 鼠标经过(hover)事件的延时处理

    关于鼠标hover事件及延时

      鼠标经过事件为web页面上最常见的事件之一。简单的hover可以用CSS :hover伪类实现,复杂点的用js。

      一般情况下,我们是不对鼠标hover事件进行延时处理。但是,有时候,为了避免不必要的干扰,常会对鼠标hover事件进行延时处理。所谓干扰,就是当用户鼠标不经意划过摸个链接,选项卡,或是其他区域时,本没有显示隐藏层,或是选项卡切换,但是由于这些元素上绑定了hover事件(或是mouseover事件),且无延时,这些时间就会立即触发,反而会对用户进行干扰。

    比较适用于类似场景:

    像腾讯首页,此处选项卡:对鼠标经过事件进行了延时处理

     下面贴出实现代码

    (function ($) {
        'use strict'
        $.fn.hoverdelay = function (options) {
            if (typeof options == 'string') {
                options = { feedback: options };
            }
    
        var settings = $.extend($.fn.hoverdelay.defaults, options || {});
        var hoverTimer, outTimer;
        return this.each(function () {
                var $own = $(this);
                $own.hover(function () {
                    clearTimeout(outTimer);
                    hoverTimer = setTimeout(function () {
                        settings.mouseover($own);
                    }, settings.hoverdelay);
                },
                function () {
                    clearTimeout(hoverTimer);
                    outTimer = setTimeout(function () {
                        settings.mouseout($own);
                    }, settings.hoverremove);
                });
            });
        };
    
        $.fn.hoverdelay.defaults = {
            hoverdelay: 3000,
            hoverremove: 50,
            mouseover: function (selector) { },
            mouseout: function (selector) { }
        };
    
    })(jQuery);

    以上代码收集自:海丁网。  张鑫旭 博客详细介绍了此种情况,也给出了实现方式,二者代码没什么差别,个人只是更习惯海丁网参数的命名方式。

    我可是最爱用的 Camel 啊,这不科学...

  • 相关阅读:
    科学开源项目 : 建立一个 新的 光衍射 模型
    光不是电磁波 摩擦力不是电磁力
    收录一篇 贝尔不等式 的 文章
    数学家 程序员 哲学家 艺术家
    论 数学 的 工具性
    数学 怎么用?
    随便说说 广义相对论 的 时间膨胀
    逻辑物理学 : 光子 有 质量 吗 ?
    我对 “光子有质量 , 引力对光子有作用” 存疑
    收录一些 高等数学 的 文章
  • 原文地址:https://www.cnblogs.com/v10258/p/3259735.html
Copyright © 2011-2022 走看看