1.事件

事件,就是用户和浏览器之间的交互行为,比如:点击按钮,鼠标移动、关闭窗口。
image.png

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="UTF-8">
  5. <title></title>
  6. </head>
  7. <body>
  8. <!--
  9. 我们可以在事件对应的属性中设置一些js代码,
  10. 这样当事件被触发时,这些代码将会执行
  11. 这种写法我们称为结构和行为耦合,不方便维护,不推荐使用
  12. -->
  13. <!--<button id="btn" onmousemove="alert('讨厌,你点我干嘛!');">我是一个按钮</button>-->
  14. <button id="btn">我是一个按钮</button>
  15. <script type="text/javascript">
  16. /*
  17. * 事件,就是用户和浏览器之间的交互行为,
  18. * 比如:点击按钮,鼠标移动、关闭窗口。。。
  19. */
  20. //获取按钮对象
  21. var btn = document.getElementById("btn");
  22. /*
  23. * 可以为按钮的对应事件绑定处理函数的形式来响应事件
  24. * 这样当事件被触发时,其对应的函数将会被调用
  25. */
  26. //绑定一个单击事件
  27. //像这种为单击事件绑定的函数,我们称为单击响应函数
  28. btn.onclick = function(){
  29. alert("你还点~~~");
  30. };
  31. </script>
  32. </body>
  33. </html>

2.事件对象

事件对象
- 当事件的响应函数被触发时,浏览器每次都会将一个事件对象作为实参传递进响应函数,
在事件对象中封装了当前事件相关的一切信息,比如:鼠标的坐标 键盘哪个按键被按下 鼠标滚轮滚动的方向。。

  1. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  2. <html>
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  5. <title>Insert title here</title>
  6. <style type="text/css">
  7. *{
  8. margin: 0px;
  9. padding: 0px;
  10. }
  11. #areaDiv {
  12. border: 1px solid black;
  13. width: 300px;
  14. height: 50px;
  15. margin-bottom: 10px;
  16. }
  17. #showMsg {
  18. border: 1px solid black;
  19. width: 300px;
  20. height: 20px;
  21. }
  22. </style>
  23. <script type="text/javascript">
  24. window.onload = function(){
  25. /*
  26. * 当鼠标在areaDiv中移动时,在showMsg中来显示鼠标的坐标
  27. */
  28. //获取两个div
  29. var areaDiv = document.getElementById("areaDiv");
  30. var showMsg = document.getElementById("showMsg");
  31. /*
  32. * onmousemove
  33. * - 该事件将会在鼠标在元素中移动时被触发
  34. *
  35. * 事件对象
  36. * - 当事件的响应函数被触发时,浏览器每次都会将一个事件对象作为实参传递进响应函数,
  37. * 在事件对象中封装了当前事件相关的一切信息,比如:鼠标的坐标 键盘哪个按键被按下 鼠标滚轮滚动的方向。。。
  38. */
  39. areaDiv.onclick = function(event){
  40. /*
  41. * 在IE8中,响应函数被处罚时,浏览器不会传递事件对象,
  42. * 在IE8及以下的浏览器中,是将事件对象作为window对象的属性保存的
  43. */
  44. /*if(!event){
  45. event = window.event;
  46. }*/
  47. //解决事件对象的兼容性问题
  48. event = event || window.event;
  49. /*
  50. * clientX可以获取鼠标指针的水平坐标
  51. * cilentY可以获取鼠标指针的垂直坐标
  52. */
  53. var x = event.clientX;
  54. var y = event.clientY;
  55. //alert("x = "+x + " , y = "+y);
  56. //在showMsg中显示鼠标的坐标
  57. showMsg.innerHTML = "x = "+x + " , y = "+y;
  58. };
  59. };
  60. </script>
  61. </head>
  62. <body>
  63. <div id="areaDiv"></div>
  64. <div id="showMsg"></div>
  65. </body>
  66. </html>

3.使div可以跟随鼠标移动

html对应document.documentElement;
body对应document.body

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="UTF-8">
  5. <title></title>
  6. <style type="text/css">
  7. #box1{
  8. width: 100px;
  9. height: 100px;
  10. background-color: red;
  11. /*
  12. * 开启box1的绝对定位
  13. */
  14. position: absolute;
  15. }
  16. </style>
  17. <script type="text/javascript">
  18. window.onload = function(){
  19. /*
  20. * 使div可以跟随鼠标移动
  21. */
  22. //获取box1
  23. var box1 = document.getElementById("box1");
  24. //绑定鼠标移动事件
  25. document.onmousemove = function(event){
  26. //解决兼容问题
  27. event = event || window.event;
  28. //获取滚动条滚动的距离
  29. /*
  30. * chrome认为浏览器的滚动条是body的,可以通过body.scrollTop来获取
  31. * 火狐等浏览器认为浏览器的滚动条是html的,
  32. */
  33. var st = document.body.scrollTop || document.documentElement.scrollTop;
  34. var sl = document.body.scrollLeft || document.documentElement.scrollLeft;
  35. //var st = document.documentElement.scrollTop;
  36. //获取到鼠标的坐标
  37. /*
  38. * clientX和clientY
  39. * 用于获取鼠标在当前的可见窗口的坐标
  40. * div的偏移量,是相对于整个页面的
  41. *
  42. * pageX和pageY可以获取鼠标相对于当前页面的坐标
  43. var left = event.pageX;
  44. var top = event.pageY;
  45. * 但是这个两个属性在IE8中不支持,所以如果需要兼容IE8,则不要使用
  46. */
  47. var left = event.clientX;
  48. var top = event.clientY;
  49. //设置div的偏移量
  50. box1.style.left = left + sl + "px";
  51. box1.style.top = top + st + "px";
  52. };
  53. };
  54. </script>
  55. </head>
  56. <body style="height: 1000px;width: 2000px;">
  57. <div id="box1"></div>
  58. </body>
  59. </html>