2.212 不要被那个 I_do_not_care=... 什么的迷惑,那个是三元表达式,假如你有认真学习 JS语法的话。那样写的目的是兼容。
2.213 在函数体的最前面就声明需要用到的变量是个好习惯,它可以避免你犯很多莫名其妙的错误 - 比如递归的死循环之类的。当然,假如你压根不喜欢这个变量(就像俺那个 I_do_not_care 一样),那么就随它去吧。
2.214 e=window.event?window.event:e; 也是为了兼容。其实这句只是获得 event 对象而已。用 e.clientX 而不用 e.x 也是兼容问题。obj.firstChild.nodeValue 而不是 obj.innerText 同理。<div>I am a div.</div>而不是 <div></div>也是同理。 - 兼容真是个tnnd 问题。
2.215 假如你发现自己还是有些糊涂,回去复习 0.1 和 0.2 节中提到的事件部分
2.22 拖动方块
运行代码框
2.221 编程是件脑力活动,呵呵。首先要先琢磨出来,拖动意味着什么。其实拖动就是判定鼠标位置,然后改变你需要拖动的元素的坐标而已。那么分成两步:判定鼠标位置,改变元素的坐标。这个看起来也不难。前一点 2.21 刚讨论过。后一点,假如你对 JS 操作 CSS 有所了解的话也是轻而易举(不明白的回头去看0.3节)。
2.222 现在俺具体描述下这个过程:
a) 鼠标按下时,判定鼠标的位置。将鼠标坐标和元素坐标的差存在元素的 startX 和 startY 两个自定义的属性里。绑定鼠标移动事件。
b) 鼠标移动时,判定鼠标的位置。将鼠标坐标和 startX / startY 的差值作为新的元素坐标。(你问我为啥这样算?帅哥请回去重修高中数学,呵呵)
c) 鼠标按键抬起,清除鼠标移动事件的相应。(不然你放开了鼠标方块还是跟着你跑)
评论加载中…
![]() |