zoukankan      html  css  js  c++  java
  • [妙味DOM]第五课:事件深入应用

    知识点总结

    鼠标拖拽原理:

    1、鼠标按下后开始移动,鼠标抬起停止移动,即onmousedown中要包括onmousemove和onmouseup

    2、获取位置的计算:获取鼠标的当前位置-鼠标在物体中的位置(当值不变),可通过ev.clientX(鼠标到可视区) - obj.offsetLeft(物体到可视区)来计算

    注意事项:

    1、为了防止鼠标移动的过快,需要onmousemove和onmouseup前面使用document

    2、因为浏览器自带有对文字移动,对你的移动产生的冲突,因此:

      在标准浏览器下,需要阻止浏览器的默认行为,即return false;

      在IE下,在onmousedown中使用setCapture(),获取全局捕获,在onmouseup中使用releaseCapture(),释放全局捕获

      setCapturn和releaseCapture只对IE有获,因此还要判断一下,即:

      if (obj.setCapture) {

        obj.setCapture();

      }

     扩展:

      限制拖拽范围和磁性吸附

    碰撞原理:

      采用九宫格方式,用四角来进行比较判断是否碰撞。

    拖拽改变大小:

    1、设定四个边的位置

    2、鼠标点击判断在哪个边上

    3、在右边或下边,改变宽度或高度,在左边或上边,还需要改变left和top的值,宽度变小,left变大(数值变化是相等的)

      鼠标down下去时,要把鼠标位置、left/top值、width/height的值都保存起来。

      鼠标移动的距离=鼠标当前值 - 鼠标down下去保存起来的值。

      width= 原始的width  +/-  鼠标移动的距离,其他同理,关键是计算鼠标移动的距离。

    滚动条拖拽:

    例子一:控制物体的大小

      

    例子二:控制文字滚动

      

  • 相关阅读:
    UVA 1025 A Spy in the Metro DP水题
    ZOJ 3814 Sawtooth Puzzle BFS
    ZOJ 3816 Generalized Palindromic Number
    UVA 10859 Placing Lampposts 树形DP
    UVA 11825 Hackers' Crackdown 状压DP
    POJ 2887 Big String 线段树 离线处理
    POJ 1635 Subway tree systems Hash法判断有根树是否同构
    BZOJ 3110 k大数查询 & 树套树
    sdoi 2009 & 状态压缩
    来自于2016.2.24的flag
  • 原文地址:https://www.cnblogs.com/joya0411/p/3567215.html
Copyright © 2011-2022 走看看