DOM第二天

DOM第二天

一、事件对象

概述:任意节点树上的节点(标签),都可以绑定一个或者多个事件。当用户触发事件的时候,系统会自动给事件处理函数传递实参,而这个参数即为事件对象(事件对象给我们传递很多信息)。

<script type="text/javascript">
 //获取节点
 var div = document.querySelector("div");
 div.onclick = function(event){
   //对于高级浏览器:谷歌、IE8以上的浏览器---->event
   //对于低级浏览器:IE8以下的,事件对象作为BOM对象属性
   var e = event||window.event;
   console.log(e);
 }
</script>
  • 当事件处理函数执行的时候,系统会自动注入实参,我们用形参接受【事件对象】

  • 在不同浏览器中事件对象是有兼容问题。使用短路语句进行兼容。

1.1获取鼠标位置

概述:当用户触发事件的时候,系统会自动给事件处理函数注入实参【事件处理函数】,

它给我们提供很多信息,可以获取鼠标位置。

1.1.1screenX||screenY

概述:他们两者是事件对象属性,主要可以获取鼠标位置。获取鼠标位置零零点在电脑屏幕左上角。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UAPpf8oM-1658047043000)(file:///C:/Users/romantic/AppData/Local/Packages/oice_16_974fa576_32c1d314_33a5/AC/Temp/msohtmlclip1/01/clip_image004.jpg)]

<script type="text/javascript">
  //获取节点
var inn = document.querySelector('.inner');
//鼠标在整个网页当中移动
document.onmousemove = function(event){//短路语法进行兼容var e = event||window.event;
​     inn.innerHTML = "screenX:"+ e.screenX + "screenY"+e.screenY;
}
</script>

1.1.2pageX||pageY

概述:他们两者也是事件对象属性,主要作用也是获取鼠标位置。是网页主题部分左上角为零零点。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qSFpQNvM-1658047043001)(file:///C:/Users/romantic/AppData/Local/Packages/oice_16_974fa576_32c1d314_33a5/AC/Temp/msohtmlclip1/01/clip_image006.jpg)]

<script type="text/javascript">
      //获取节点
  var inn = document.querySelector('.inner');
  //鼠标在整个网页当中移动
  document.onmousemove = function(event){//短路语法进行兼容var e = event||window.event;
​     inn.innerHTML = "screenX:"+ e.screenX + "screenY"+e.screenY+"<br/>";
​     inn.innerHTML += "pageX:"+e.pageX +"pageY:"+e.pageY;
  }
</script>

1.1.3clientX||clinetY

概述:他们两者也是事件对象属性,主要作用是获取鼠标位置。但是他的零零点是按照可视区域左上角为零零点。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Yd2P7W8x-1658047043002)(file:///C:/Users/romantic/AppData/Local/Packages/oice_16_974fa576_32c1d314_33a5/AC/Temp/msohtmlclip1/01/clip_image008.jpg)]

1.1.4offsetX||offsetY

概述:他们两者也是事件对象属性,他们两者主要的作用也是获取鼠标位置。

获取数据类似pageX||pageY。但是这个获取数据零零点,会收到子元素坐标体系影响。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YKtWoFtk-1658047043004)(file:///C:/Users/romantic/AppData/Local/Packages/oice_16_974fa576_32c1d314_33a5/AC/Temp/msohtmlclip1/01/clip_image010.jpg)]

<script type="text/javascript">
//获取节点
var inn = document.querySelector('.inner');
//鼠标在整个网页当中移动
document.onmousemove = function(event){//短路语法进行兼容var e = event||window.event;
​     inn.innerHTML = "screenX:"+ e.screenX + "screenY"+e.screenY+"<br/>";
​     inn.innerHTML += "pageX:"+e.pageX +"pageY:"+e.pageY+"<br/>";
​     inn.innerHTML +="clientX"+e.clientX +"clinetY"+e.clientY+"<br/ >";
​     inn.innerHTML +="offsetX"+e.offsetX +"offsetY"+e.offsetY;
}
</script>

1.2原生JS实现拖拽效果

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1SzKhCnZ-1658047043006)(file:///C:/Users/romantic/AppData/Local/Packages/oice_16_974fa576_32c1d314_33a5/AC/Temp/msohtmlclip1/01/clip_image012.jpg)]

概述:在前端领域当中拖拽是一个非常常见效果。拖拽三板斧鼠标按下=>鼠标移动=>鼠标抬起。

<script type="text/javascript">
    //移除事情
 var div = document.querySelector('.cur');
 //鼠标按下
 div.onmousedown = function(event){
   //短路语法兼容事件对象
   var e = event||window.event;
   //获取鼠标距离元素左侧顶部数据
   var startX = e.offsetX;
   var startY = e.offsetY;
   //鼠标在整个网页中移动
   document.onmousemove = function(event1){//短路语法兼容事件对象var e1 = event1||window.event;//元素进行拖拽
​     div.style.left = e1.clientX - startX +"px";
​     div.style.top = e1.clientY - startY +"px";
   }
 }
 //鼠标抬起事情----将鼠标移动事件移除
 document.onmouseup =function(){
​    document.onmousemove = null;
 }
</script>
  • 可以将元素事件移除:就是给这个元素绑定多次事件。让后者覆盖前者。

1.3淘宝放大镜

<script type="text/javascript">
    //获取节点
  var slider = document.querySelector('.slider');
  var small = document.querySelector('.small');
  //鼠标按下
  slider.onmousedown = function(event){//短路语法进行兼容var e = event||window.event;var startX = e.offsetX;var startY = e.offsetY;//鼠标移动
​    document.onmousemove = function(event){var e1 = event||window.event;//计算出元素left数值var l = e1.clientX - startX ;var t = e1.clientY - startY;//因为滑块只能在父盒子中进行移动----进行条件约束if(l <= 0) l = 0;if(l >=300) l = 300;if(t <=0) t = 0;if(t >=200) t = 200;
​      slider.style.left = l +"px";
​      slider.style.top = t +'px';//修改小图背景图定位
​      small.style.backgroundPosition="-" + l +"px -" + t +"px";}
  }
  //鼠标抬起
  document.onmouseup = function(){//将鼠标移动的事件移除
​      document.onmousemove = null;
  }
</script>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值