今天看到一篇文章浏览器渲染原理 很不错
为什么我会去注意这篇东西呢!因为我昨天在修复朋友们提交的一个小bug后,发现自己的前端有点糟糕,可能是以前我对于前端的处理方式都是交给我的朋友的。原本在我的前端理解中,对于css的控制,我一直希望使用id和css,原因是我觉得够简单和直接,没有复杂的递归关系,不需要一层一层向下看,但是呢这要求很高的文档规范和命名规则,否则名字实在太多了。
通过阅读上述文章,我知道了如下东西:
1,html 会被解析成dom结构
2,css也会被解析成一个dom 这里的dom其实我就理解成一个树图,数据结构里面的树图
3,当css被赋予在html上时,他们两者会被关联
4,浏览器在处理css的变化时有reflow/repaint
5,1)不要一条一条地修改DOM的样式。与其这样,还不如预先定义好css的class,然后修改DOM的className。 这条很棒
6,2)把DOM离线后修改。如:
- 使用documentFragment 对象在内存里操作DOM
- 先把DOM给display:none(有一次reflow),然后你想怎么改就怎么改。比如修改100次,然后再把他显示出来。
- clone一个DOM结点到内存里,然后想怎么改就怎么改,改完后,和在线的那个的交换一下。
- 对于这的理解,我认为就是在js中把dom,赋值给一个变量,然后对这个变量做操作,最后在赋值给页面的html元素,而不是直接在获取。
- 举例:var a=$("#id").val();然后你需要对这个a做样式的改动,这时a的变化不会和html有关联,但是如果你直接$("#id").css('')这里你css了很多,可能就会造成浏览器一直在reflow或者repaint
7,3)不要把DOM结点的属性值放在一个循环里当成循环里的变量。不然这会导致大量地读写这个结点的属性。
这条我的理解是 for循环中如果你在不停的获取$("#id").val()是一个不可取的行为
4)尽可能的修改层级比较低的DOM。当然,改变层级比较底的DOM有可能会造成大面积的reflow,但是也可能影响范围很小。
这里的意思我这么理解,你修改的子节点越接近树梢可能影响的范围越小,但是如果你n个子节点用的是同一个css的id或者class可能就是要大面积reflow了。
5)为动画的HTML元件使用fixed或abslout的position,那么修改他们的CSS是不会reflow的。
fixed和abstlout的定位就是匹配尺寸的和绝对位置的,相对于relative和float:left来说,我理解是前两者的z-index比一般的div+1层,所以才会不影响周边的div而独立的存在。其他几个布局模式,都是需要牵制于周围的div的,也就会引发reflow了
6)千万不要使用table布局。因为可能很小的一个小改动会造成整个table的重新布局。
再相信的信息去看那篇帖子吧!我后续把他提到的文章看下。做个小翻译。
相关推荐
"domtoimage使用HTML5canvas从DOM节点生成图像" 这个标题提到了一个名为 "domtoimage" 的工具,它利用HTML5的Canvas API将DOM(文档对象模型)中的节点转换为图像。这个过程通常用于网页截图或者在网页中保存和分享...
在本章“第06章 DOM节点操作(上)”中,我们将深入探讨Document Object Model(DOM)在JavaScript中的应用,以及如何通过DOM接口来操纵HTML或XML文档的结构、内容和样式。DOM是一种标准,它允许编程语言与网页内容...
**Jsoup库解析HTML、XML或URL链接中的DOM节点** Jsoup是一款强大的Java库,它设计用于处理实际世界中的HTML,使得开发者可以方便地提取和操作数据。在Web开发中,有时我们需要从网页中获取特定信息,比如文章内容、...
总结,DOM节点操作是Web开发中不可或缺的一部分,熟练掌握这些方法和概念将使你能够有效地操控页面元素,实现丰富的交互效果。无论是添加、删除还是修改元素,或者处理事件,都需要对DOM有深入的理解。通过不断地...
2. DOM(Document Object Model):理解DOM结构,如何通过JavaScript操作DOM节点,如添加、删除、修改元素。 3. 事件处理:绑定和解绑事件,以及常见的页面和元素事件,如click、mouseover等。 4. 动态内容更新:...
DOM是HTML和XML文档的编程接口,它将网页结构表示为一个节点树,允许开发者通过JavaScript或其它语言操纵网页内容、结构和样式。例如,你可以添加、删除或修改元素,实现动态交互效果。 **CSS(Cascading Style ...
在树型结构中,每个节点都可以被视为一个DOM对象,通过JavaScript我们可以对这些对象进行操作,如查找、修改、添加或删除。 3. XML(Extensible Markup Language):这是一种用于存储和传输结构化数据的标准格式。...
HTML DOM(Document Object Model)是HTML和XML文档的编程接口,它将文档表示为树形结构,每个元素都是一个节点。HTML DOM参考手册解释了如何通过JavaScript访问和修改这个结构,例如,添加、删除或改变元素、属性和...
还有许多其他CSS属性和DOM属性,如`display`(控制元素的可见性),`margin`和`padding`(控制元素边距和内填充),`fontSize`(设置字体大小),以及`value`(获取或设置表单元素的值)等,都是开发者日常工作中不...
本文将深入探讨XML开发中的四个关键概念:DTD(Document Type Definition)、CSS(Cascading Style Sheets)、XSLT(Extensible Stylesheet Language Transformations)以及DOM和SAX解析器。 1. DTD(Document Type...
标题中的“JQ CSS 和 DOM”指的是JavaScript库jQuery(简称JQ)、层叠样式表(CSS)以及文档对象模型(DOM)这三种在Web开发中至关重要的技术。它们共同构成了前端开发的基础,使得开发者能够创建交互式、动态且美观...
本教程将深入探讨几个核心的前端技术:JavaScript(JS)、HTML、CSS、AJAX、XML以及DOM,这些都是构建高效、动态和交互式Web界面的基础。 1. **HTML(超文本标记语言)**: HTML是网页内容的基础结构,它定义了...
DOM文档则会深入解析DOM结构,如何使用JavaScript操作DOM节点。 学习这些技术,可以帮助开发者更好地理解和创建动态、响应式的网页应用。JavaScript提供了动态编程的能力,CSS负责视觉呈现,HTML构建基础结构,而...
标题 "使用Javascript和DOM Interfaces来处理HTML" 涉及的核心技术是JavaScript和DOM(Document Object Model)接口在网页交互中的应用。JavaScript是一种广泛用于Web开发的脚本语言,而DOM则是HTML和XML文档的一种...
它将文档拆分为一系列的节点,如元素节点、文本节点、属性节点等,每个节点都具有相应的属性和方法。通过DOM,开发者可以轻松地找到、修改或添加文档的任何部分。 在描述中提到,这个插件可以用于爬取网页信息,...
在"jQuery DOM节点操作源码"中,我们可以深入理解jQuery是如何优雅地处理DOM(Document Object Model)节点的。以下是关于jQuery DOM操作的一些关键知识点: 1. **选择器**:jQuery 的核心功能之一就是强大的选择器...
DOM文档对象中文手册.chm应该包含了关于节点操作、事件处理、遍历和搜索DOM树等核心概念的详细解释。 【JavaScript】 JavaScript是一种轻量级的解释型编程语言,常用于网页开发,实现客户端的交互功能。JavaScript...
在手册中,你会学到如何查找、修改、添加或删除DOM节点,以及如何利用DOM事件提升用户体验。 通过这份参考手册,无论是初学者还是经验丰富的开发者,都能深入理解这些技术的内在原理和实际应用。在学习过程中,可以...
总的来说,使用HTML5的canvas和SVG结合JavaScript库,可以从DOM节点生成可打印的分页PDF,这一过程涉及DOM操作、图形转换、布局计算和PDF生成等多个环节。通过熟练掌握这些技术,开发者可以为用户提供更加灵活和强大...
《CSS DOM JavaScript大全》是一个非常实用的资源集合,包含了这三个重要技术领域的中文API参考文档,以CHM...所以,无论是初学者还是资深开发者,都将从《CSS DOM JavaScript大全》中获得宝贵的知识和实践经验。