盗汗,web前端入门:什么是DOM?怎么构建web页面,undefined

文档方针模型,或“DOM”,是web页面的接口。它本质上是页面的API,答应程序读取和操作页面的内容、结构和款式。让咱们分化一下。

怎样构建web页面?

浏盗汗,web前端入门:什么是DOM?怎样构建web页面,undefined览器怎样从一个源HTML文档到在视图中显现一个京东网款式化的交互式页盗汗,web前端入门:什么是DOM?怎样构建web页面,undefined面被称为“要害出现途径盗汗,web前端入门:什么是DOM?怎样构建web页面,undefined”。尽管这个进程能够分化为几个过程,但正如我有理气象预报解要害出现途径的文章中所述,这些过程大致能够分为两个阶段。第一个阶段触及阅读器解析文档以确认终究在页面上出现什么,第二个阶段触及阅读器履行出现。

第一阶段的结果是所谓的“烘托树”。烘托树是将在页面上出现的HTML元素及我是路人甲插曲其相关款式的表明。为了构建这个树,阅读器需求两件事:

1.C盗汗,web前端入门:什么是DOM?怎样构建web页面,undefinedSSOM,与元素相关的款式的表明

2.DOM,元素的表明

怎样创立DOM?

DOM是源序列号查询HTML文档的根据方针的表明。正如咱们将在下面看到的,它有一些不同之处,但它本质上是企图将HTML文档的结构和内容转换为可由各种程序运用的方针模型。

DOM的方针结构由所谓的“节点树”表明。之所以这样叫它,是由于它能够被认为是一棵树,它有一个单白素贞一的父茎,它能够分出几个子枝,每个子枝都可能有叶子。在本例中,父“茎”是根元素,子“分支”是嵌套的元素,而“叶”是元素中的内容。

咱们以此HTML文档为例







Hello, world!


How are you?




本文档能够表明为以下节点树:

DOM不是什么?

在我上面给出的示例中,DOM似乎是源HTML文档或您所看到的DevTools的一对一映射。可是,正如我所说到的,有一些差异。为了彻底了解DOM是什么,咱们需求了解它不是什盗汗,web前端入门:什么是DOM?怎样构建web页面,undefined么。

DOM不是源HTML

尽管DOM是从源HTML文档创立的,但它并不总是彻底相同。在两个实例中,DOM能够与源HTML不同。

  1. 当HTML无效时

DOM是有用HTML文档的接口。在创立DO分手by千十九M的进程中,阅读器可能会纠正HTML代码中的一些过错。

让咱们以这个HTML文档为例:



Hello, world!

文档短少一个和元素,这是有用HTML的一个要求。假如咱们查看生成的DOM树,就会发现这现已得到了纠正:

  1. 当DOM被Javascript修正时

除了作为查看HTML文档内容的接口之外,还能够修正DOM,使其成为一种活动资源。 例如,咱们能够运用Javascript为DOM创立额定的节点。

var newParagraph = document金华市.createElement("p");
var paragraphContent = document.农门继妃之错嫁离王府createTextNode("I'm new!");盗汗,web前端入门:什么是DOM?怎样构建web页面,undefined
newParagraph.appe僵尸道长2ndChild(par盗汗,web前端入门:什么是DOM?怎样构建web页面,undefinedagraphContent);
document.body.appendChild(newPara巨蚁之灾graph);

这将会更新DOM,但当然柳永哲不会更新HTML文档。

DOM不是在阅读器中看到的(即,烘托树)

你在阅读器视图雪莉直播虐猫中看到的是烘托树,如前所述,它是DOM和CSSOM的组合。DOM与烘托树的真实差异在于,后者只包括终究将在屏幕上制作的内容。

由于烘托树只重视烘托的内容,它排除了视觉上躲藏的元素。例如,具有与display: none款式相关联的元素。





Hello, world!


How are you?




DOM将包括

元素:

可是,烘托树,以及在视图中看到的内容,将不包括该元素。

DOM不是DevTools功夫小子中的DOM

这种差异有点小,由于DevTools元素查看器供给了与阅读器中DOM最接近的近似。可是,DevTools查看器包括了不在DOM中的其他稂怎样读信息。

最好的比如是CSS伪元素。运用::before和::after选择器创立的伪元素构成CSSOM和烘托树的一部分,但在技术上不是DOM的一部分。这是由于DOM是独自从源HTML文档构建的,不包括应用于元素的款式。

尽管伪元素不是DOM的一部分,可是它们在咱们的devtools元素查看器中。

这便是Javascript不能以伪元素为方针的原因,由于它们不是DOM的一部分。

总结

DOM是HTML文档的接口。阅读器运用它作为决定在视图中出现什么内容的第一步,并经过Javascript程亟待序修正页面的内容、结构或款式。

尽管与源HTML文档的其他方式野渡博客相似,DOM在许多方面是不同的:

  • 它总是有用的HTML
  • 它是一个活生生的模型,能够由Javascript修正
  • 它不包括伪元素(例如,::after)玄关鞋柜
  • 它的确包括躲藏元素(例如,display: none)

十五年悍夫猎妻编程经历,本年1月整理了一批2019年最新WEB前端教育视频,不论是零根底想要学习前端仍是学完在作业想要提高自己,这些材料都会给你带来协助,从HTM病态倒戈L到各种结构,协助一切想要学好前端的同学,学习规划、学习道路、学习材料、问题解答。只需重视我的头条号,后台私信我【前端】两个字,即可免费获取。