[JavaScript]页面的回流与重绘

var oItem = document.querySelector(“.item”);

var oTitle = oItem.querySelector(“h3”);

var itemChild = oItem.children;//获取当前对象的所有子元素,并且以集合的形式返回

console.log(itemChild);

console.log(oItem.childNodes);//获取元素内的节点列表,注意,换行符也会被当做是一个文本节点

console.log(oItem.firstChild);//获取元素第一个子(节点:标签和文本)

console.log(oItem.firstElementChild);//获取元素第一个子元素(只指代标签 不包括文本节点)

console.log(oItem.lastChild);//获取元素最后一个子(节点:标签和文本)

console.log(oItem.lastElementChild);//获取元素最后一个子元素(只指代标签 不包括文本节点)

//Node节点 Element元素

console.log(oTitle.parentElement);//获取元素父元素

console.log(oTitle.parentNode);//也是获取父元素

console.log(oTitle.nextElementSibling);//下一个兄弟元素

console.log(oTitle.nextSibling);//下一个兄弟节点(包含文本节点)

console.log(oTitle.previousElementSibling);//上一个兄弟元素

console.log(oTitle.previousSibling);//上一个兄弟节点(包含文本节点)

增加节点API

回流与重绘


CSS的书写顺序影响

示例:

span {

width: 200px;

height: 200px;

margin: 10px;

border: 2px solid red;

background-color: #368;

}

如上的css代码,在HTML页面中span标签不会被渲染出来,这是因为span标签是行级元素,不能设定width和height值,如果我们在最下面写一行position: absolute;,这就会导致浏览器切换计算模式。

浏览器在读css代码时是从上而下一行一行代码读的,在没有读到这行代码时浏览器先是用的行级元素的计算模式来阅读这段css代码,当读到position: absolute;这行代码时

浏览器隐式的将span的display展示模式更改为block,自然也将计算模式切换成块级元素的计算模式,然后再从头读这段css代码,渲染。

节点渲染优化

一个html页面是一个整体,当这个整体中的某一个部分发生改变,那么这个页面整体会重新进行渲染,而如果我们采用添加标签的方式,每次添加一个标签,就会让每一次页面都重新渲染,性能急剧下降

解决方法是:使用Fragment临时容器

示例:

drawDom(3000, ‘div’);

function drawDom(num, tagName) {

var vDom;

for (var i = 0; i < num; i++) {

vDom = document.createElement(tagName);

document.body.appendChild(vDom); //重复N次 每次渲染一个标签

}

}

如上述代码,当我们一个一个渲染3000个标签的时候,在本地的页面打开都需要一秒多,如果是线上的,那性能更加差

所以我们要使用Fragement临时容器,如果说页面渲染相当于货架上的商品,那么appendChild方法就相当于每一次从工厂生产商品立刻送到商店摆上货架,每一次都需要重新编排商品。

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数前端工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:前端)

最后

正值金三银四招聘旺季,很多小伙伴都询问我有没有前端方面的面试题,特地整理出来赠送给大家!

资料领取方式:点击这里前往免费获取

且会持续更新!**

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:前端)

[外链图片转存中…(img-4vYOJPdQ-1713607998162)]

最后

正值金三银四招聘旺季,很多小伙伴都询问我有没有前端方面的面试题,特地整理出来赠送给大家!

资料领取方式:点击这里前往免费获取

前端资料图.PNG

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值