关于亚马逊的左侧菜单延迟,之前一直不知道它的实现原理。梦神提到了z三角,我也不知道这是什么东西。13号那天很有空,等领导们签字完我就可以走了。下午的时候,找到了一篇博客:http://jayuh.com/amazon-site-navigation/

它提到亚马逊左侧菜单的秘密在于它有一个三角形的缓冲延迟区域。

当鼠标在这个蓝色范围内移动时,会有延迟,所以右侧的二级菜单才不会马上变化。

顺着博客在github找到了这个插件:https://github.com/jayuh/jQuery-menu-aim

来看下源码:

插件的结构很简单,在jquery原型上扩展了menuAim方法,而menuAim在内部是通过call调用了init方法。

具体就来看init方法中都写了些什么?

现在我们来看possiblyActivate方法:

activationDelay方法是整个插件中最重要的,就是它来决定左侧菜单是延迟还是立即响应、我们分段来看,首先四个坐标点:

画一个图来表示tolerance的作用:

if (lastDelayLoc &&
loc.x == lastDelayLoc.x && loc.y == lastDelayLoc.y) {
console.log(11);
return 0;
}

如图所示:

用一张图来表示上面代码干了些什么:色三角形表示根据当前坐标画出来的三角形范围,色三角形表示根据之前坐标画出来的三角形范围:

需要注意的一点是, decreasingSlope和prevDecreasingSlope它们计算出来的结果是负值。因为decreasingCorner是在右上角,y值最小。

在init方法的最底部,是添加的一些事件绑定:

到此为止。这是我对这个插件的理解,不过梦神也提到亚马逊的z三角实现的过于麻烦了,我不知道他的实现方法是怎么样子的,等问到了再补充^^

最新文章

  1. android selector 开始自定义样式
  2. 对OnOutOfMemoryError的运维处理
  3. C语言 电梯函数
  4. 基于Cocos2dx开发卡牌游戏_松开,这三个国家
  5. ios系统 ipa文件 打包流程详解 及 常见问题处理
  6. 走近webpack(4)--css相关拓展
  7. Java基础学习笔记二 Java基础语法
  8. 图像检索(2):均值聚类-构建BoF
  9. 说说不知道的Golang中参数传递
  10. 【并发编程】【JDK源码】JDK的(J.U.C)java.util.concurrent包结构
  11. angular.isObject()
  12. ecstore-自定义app里增加对应的wap的模板
  13. 清空git默认的用户名和密码,
  14. Codeforces710
  15. .htaccess文件
  16. quartus ii工程文件的分析
  17. nginx+tomcat多节点部署
  18. iOS编译集成linux开源c库的一些记录
  19. plSql添加快捷键设置
  20. mysql学习第三天笔记

热门文章

  1. Spring Boot 访问静态资源
  2. vue-router-h5-history
  3. bootstrap中的less
  4. 域名ip自动跳转 跳转指定页面的js
  5. js实现域名判断后跳转到指定网址
  6. maven实战(5)-- settings.xml的配置
  7. HihoCoder1084: 扩展KMP(二分+hash,求T串中S串的数量,可以失配一定次数)
  8. module+standard library.py
  9. maven(一)创建一个maven的web项目
  10. Watir 能够为你做什么?