JS--Day11(事件对象+阻止冒泡)

文章介绍了JavaScript中的DOM操作,如insertBefore用于插入节点,以及onscroll事件处理浏览器滚动高度的兼容写法。此外,详细讲解了事件的三要素,事件对象的获取,鼠标事件对象中的page、client和offset坐标,以及事件流的概念,包括事件冒泡和事件捕获。还提到了如何阻止事件冒泡和取消浏览器默认行为,并给出了实际应用示例,如小老虎跳动和图片跟随鼠标移动的效果。
摘要由CSDN通过智能技术生成

一.insertBefore

父元素.insertBefore(目标节点,参照节点):将目标节点添加至参照节点之前

二.onscroll

浏览器高度的兼容写法:document.body.scrollTop || document.documentElement.scrollTop

三.事件

①事件的三要素

1.事件源:操作事件的元素

2. 事件类型:事件属于哪种类型,鼠标事件类型,键盘看事件类型,onclick,ondblclick,onmouseout...

3.事件对象: 必须得有事件触发,它携带者相关事件类型的属性和方法,是非必须的

②事件对象获取的兼容写法: var e = evt || event;

四.鼠标事件对象

鼠标事件对象,通常和坐标有关(通过鼠标事件对象获取点击的各种坐标)

①page:相对于整个文档顶部和左侧的坐标,常用

console.log("page:",e.pageX,e.pageY);

②client:相对于可视窗口顶部和左侧的坐标,用的不多

console.log("client:",e.clientX,e.clientY);

③offset:相对于自身最近的父元素顶部和左侧的坐标,常用于拖拽

console.log("offset:",e.offsetX,e.offsetY);

五.事件流

事件流:事件是可以传递的,当父子元素同时绑定相同的事件类型时,父元素和子元素会相互影响

事件冒泡:子--->父(常见),onload,onblur,onfocus不会触发冒泡

事件捕获:父--->子 (一辈子见不到)

六.阻止事件冒泡

阻止事件冒泡:添加在子元素中

阻止事件冒泡兼容性写法: e.stopPropagation?e.stopPropagation():e.cancelBubble = true;

七.取消浏览器的默认行为

取消浏览器的默认行为兼容性写法:e.preventDefault?e.preventDefault():e.returnValue = false;

  //取消浏览器的默认行为
    oA.onclick = function(evt){
        console.log("heihei");
        var e = evt || event;
        // e.preventDefault();
        // e.returnValue = false;
        // e.preventDefault?e.preventDefault():e.returnValue = false;
       return false;
    }

//a标签默认行为
 <!-- 只要跳转就会刷新页面 --> <a href="">跳转</a>
 默认行为;oncontextmenu鼠标右键

课堂案例

//1.小老虎跳一跳
 var oTiger = document.querySelector("#tiger");

    document.onclick = function(){
        oTiger.style.top = oTiger.offsetTop - 100 + "px";
        setTimeout(function(){
            oTiger.style.top = "500px";  
        },3000);
    }

//2.图片跟随鼠标移动
  var oTiger = document.querySelector("#tiger");

    document.onmousemove = function(evt){
        //元素的位移本质就是改变其left和top
        var e = evt || event;
        oTiger.style.left = e.pageX - oTiger.offsetWidth/2 + "px";
        oTiger.style.top = e.pageY - oTiger.offsetHeight/2 + "px";
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值