zoukankan      html  css  js  c++  java
  • 利用闭包判断Dom元素和滚动条的方向

    本文收集整理自网上。

    一,判断滚动条的方向,利用闭包首先保存滚动条的位置,然后当滚动时候不断更新滚动初始值,然后通过差指判断方向

     1     function scroll(fn) {
     2         //利用闭包判断滚动条滚动的方向
     3         var beforeScrollTop = document.body.scrollTop,
     4             fn = fn || function() {};
     5         window.addEventListener("scroll", function() {
     6             var afterScrollTop = document.body.scrollTop,
     7                 delta = afterScrollTop - beforeScrollTop;
     8             if (delta === 0) return false;
     9             fn(delta > 0 ? "down" : "up");
    10             beforeScrollTop = afterScrollTop;
    11         }, false);
    12     }
    13     scroll(function(direction) { console.log(direction) });

    二,判断鼠标的移动方向

     1     function direction() {
     2         var lastX = null,
     3             lastY = null;
     4         window.addEventListener("mousemove", function(event) {
     5             var curX = event.clientX,
     6                 curY = event.clientY,
     7                 direction = '';
     8             // console.info(event);
     9             // console.info(event.clientX);
    10             // console.info(event.clientY);
    11             // 初始化坐标
    12             if (lastX == null || lastY == null) {
    13                 lastX = curX;
    14                 lastY = curY;
    15                 return;
    16             }
    17             if (curX > lastX) {
    18                 direction += 'X右,';
    19             } else if (curX < lastX) {
    20                 direction += 'X左,';
    21             }
    22             if (curY > lastY) {
    23                 direction += 'Y下';
    24             } else if (curY < lastY) {
    25                 direction += 'Y上';
    26             }
    27             lastX = curX;
    28             lastY = curY;
    29             //console.info(direction);
    30             document.getElementById("test").innerText = direction;
    31         })
    32     }

    三,判断鼠标进入和出去某Dom元素的方式,这种没有利用闭包原理

     1 var gaga = function(wrap) {
     2         var wrap = document.getElementById(wrap);
     3         var hoverDir = function(e) {
     4             var w = wrap.offsetWidth,
     5                 h = wrap.offsetHeight,
     6                 x = (e.clientX - wrap.offsetLeft - (w / 2)) * (w > h ? (h / w) : 1),
     7                 y = (e.clientY - wrap.offsetTop - (h / 2)) * (h > w ? (w / h) : 1),
     8                 // 上(0) 右(1) 下(2) 左(3)  
     9                 direction = Math.round((((Math.atan2(y, x) * (180 / Math.PI)) + 180) / 90) + 3) % 4,
    10                 eventType = e.type,
    11                 dirName = new Array('上方', '右侧', '下方', '左侧');
    12             if (e.type == 'mouseover' || e.type == 'mouseenter') {
    13                 wrap.innerHTML = dirName[direction] + '进入';
    14             } else {
    15                 wrap.innerHTML = dirName[direction] + '离开';
    16             }
    17         }
    18         if (window.addEventListener) {
    19             wrap.addEventListener('mouseover', hoverDir, false);
    20             wrap.addEventListener('mouseout', hoverDir, false);
    21         } else if (window.attachEvent) {
    22             wrap.attachEvent('onmouseenter', hoverDir);
    23             wrap.attachEvent('onmouseleave', hoverDir);
    24         }
    25     }

    本文结束。

  • 相关阅读:
    asp.net 实现pdf、swf等文档的浏览
    VS NuGet加载本地程序包
    《大型网站技术架构》读书笔记
    全排列组合算法
    GDI+绘制半圆按钮
    oracle dblink 查询 tns:无法解析指定的连接标识符
    最少有多少鸡蛋(求最小公倍数)
    杨辉三角
    Android开发面试题(一)
    2015年11月系统架构设计师案例分析题
  • 原文地址:https://www.cnblogs.com/zhensg123/p/9198793.html
Copyright © 2011-2022 走看看