看完就能学会DOM(三)

本文详细探讨了DOM的重绘与回流,浏览器的渲染过程,包括解析HTML、CSS创建DOM树和CSSOM,以及如何形成渲染树。此外,还介绍了如何阻止事件冒泡和默认事件,讲解了鼠标和键盘常见事件,以及表单事件的使用。最后,概述了浏览器地址栏输入URL到页面加载的完整流程,并区分了点击和双击事件的时间间隔要求。
摘要由CSDN通过智能技术生成

重绘与回流

  重绘

    当元素样式的改变不会影响布局时,浏览器将会使用重绘对元素进行更新,此时只需要UI层面的重新像素绘制,所以损耗较少
    常见的重绘操作:
    改变元素的颜色、改变元素的背景颜色等

  回流(重排)

    当元素的尺寸、结构发生改变或者出发某些属性时,浏览器会重新计算渲染页面内,发生回流
    比如让标签隐藏或者改变标签的宽高、还有就是通过js往页面中添加DOM元素以及通过js获取元素的尺寸大小或者偏移量

     重绘不一定会引起回流,但是回流一定会引起重绘

浏览器的渲染过程

  浏览器的渲染过程:
    1.解析html创建DOM树
    2.解析css创建CSSOM (css rule true css规则树)
     3.将DOM树和CSSOM结合,合并成一个Render Tree(渲染树)
     4.根据渲染树,去布局绘制并显示
  DOM    CSSOM    Render Tree

阻止事件冒泡和系统默认事件

  阻止浏览器默认事件
    在事件处理函数中写入

		event.preventDefault()
		IE浏览器兼容处理 ———— event.preventDefault ? event.preventDefault() : event.returnValue = false;

  阻止事件冒泡
    在事件处理函数中写入

        event.stopPropagation();      (阻止事件冒泡)
        IE浏览器兼容处理 ———— event.stopPropagation?event.stopPropagation():event.cancelBubble = true;
        
        event.stopImmediatePropagation();         (阻止事件冒泡,如果同一个标签对象绑定多个处理事件,则阻止后续绑定事件)

  ps:
    多次绑定事件如果以标签对象 . on事件 = 事件处理函数 方式,则只会显示最后一次 (相对于修改属性值)

        document.querySelector('.box').onclick = function(){
   
            console.log("第一次给box绑定click事件");
        }
        document.querySelector('.box').onclick = function(){
   
            console.log("第二次给box绑定click事件");
        }

鼠标常见事件

  鼠标单击事件click

        标签对象 . addEventListener('click',function(){
   
            console.log("鼠标单击事件");
        });

  鼠标双击事件dblclick

        标签对象 . addEventListener('dblclick',function(){
   
            console.log("鼠标双击事件");
        });

  鼠标右键事件contextmenu

        标签对象 . addEventListener('contextmenu',function(){
   
            console.log("鼠标右键事件");
        });

  鼠标按下事件mousedown

        标签对象 . addEventListener('mousedown',function(){
   
            console.log("鼠标按下事件");
        });

  鼠标松开事件mouseup

        标签对象 . addEventListener('mouseup',function(){
   
            console.log("鼠标松开事件"
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值