zoukankan      html  css  js  c++  java
  • DOM理解

    什么是DOM?

    DOM是一个标准(或者说API),允许程序和脚本访问、操作页面的内容、结构和样式,为文档提供了一种结构化的表示方式,以改变文档呈现方式(即用来改变文档呈现方式)。

    DOM标准包括3个不同的部分:

    • 核心DOM(Core DOM):所有文档类型的标准模型

    • XML DOM:XML文档的标准模型

    • HTML DOM:HTML文档的标准模型

    HTM DOM

    HTML DOM 可以获取、添加、删除和修改HTML元素。它定义了HTML元素和属性,并可以访问它们。将HTML 文档呈现为 树结构。

    如何从HTML文档构建网页?

    浏览器将文档转换为可视化页面的过程称为“渲染”,这大致分为俩阶段。

    浏览器解析文档,将HTML文档每个元素映射为一个存在层级关系的节点,皆喜玩城后,生成一个由不同节点组成的树结构,即DOM树。document对象就用来描述

    DOM树的状态和属性,同时也提供操作DOM的API。如下:

     HTML DOM定义了:

    • HTML元素均为节点对象

    • HTML元素的属性

    • 操作HTML元素的方法

    • HTML元素的事件

    通过HTML DOM,JavaScript可以动态地对HTML进行如下操作:

    • 添加、修改和移除页面中HTML元素和属性

    • 修改页面中的CSS样式

    • 实现事件交互

    • 增加新的事件

    DOM树不一定是源html文档

    1.html无效

    <!doctype html>
    <html>
    Hello, world!
    </html>

    这段没有<head>和<body>,但是生成的DOM树依然有,所以不一定是源html文档。

    2.通过JS改变HTML元素

    var newParagraph = document.createElement("p");
    var paragraphContent = document.createTextNode("I'm new!");
    newParagraph.appendChild(paragraphContent);
    document.body.appendChild(newParagraph);

    通过JS新增了元素,会更新DOM树内的节点。但是源html文当内没有,所以不一定是源html文档。

    DOM不是浏览器内看到的可视化页面

    页面内看到的是渲染树,它是DOM和CSSOM结合,因为渲染树只关注了渲染出的东西,剔除了隐藏的内容,但是DOM不同,DOM树内依然还有隐藏的节点内容,如下:

    <!doctype html>
    <html lang="en">
      <head></head>
      <body>
        <h1>Hello, world!</h1>
        <p style="display: none;">How are you?</p>
      </body>
    </html>

    DOM不是DevTools的内容

    F12弹出的DevTool检查器最接近DOM,但是DevTool检查器包含了DOM不包含的一些东西。比如伪元素,像::after和::before这些都是由CSSM渲染的,因为DOM仅仅有HTML文档构建,不包含样式。

    总结

    DOM是文档的API,并允许访问元素和修改元素的方法。如HTML DOM,提供了document,利用JS可以实现对元素的操作。

    虽然与HTML文档相似,但不完全相同

    1.DOM是有效的HTML

    2.可以通过JS修改

    3.不包含伪元素

    4.确实包含隐藏元素

  • 相关阅读:
    D. The Fair Nut and the Best Path 树形dp (终于会了)
    (二)网络流之最大流
    网络流(知识点) 一 终究还是躲不掉
    dp 优化 F2. Pictures with Kittens (hard version)
    da shu mo ban
    AtCoder Regular Contest 090 F
    Codeforces 918D MADMAX 图上dp 组合游戏
    Codeforces 918C The Monster
    AtCoder Regular Contest 090 C D E F
    poj 3623 Best Cow Line, Gold 后缀数组 + 贪心
  • 原文地址:https://www.cnblogs.com/hzozj/p/11017986.html
Copyright © 2011-2022 走看看