html节点继承和侧重点知识梳理

116 阅读3分钟
  • 虽然mvvc开发,但不免还是需要和节点信息打交道
  • 这边总结一些操作和兼容性问题。

一、查看html继承关系

二、EventTarget

// 概括:事件继承于此

1、知道有这几个方法就行,在mvvc中组件是靠响应式来触发的,而不是这里的事件
2、但html节点是这里的事件触发,侧重了解一下Event(e)

// 属性
1、Event.target  // 对事件原始目标的引用
2、Event.currentTarget // 当前事件对象
3、Event.type // 事件的类型
4、Event.timeStamp  // 当前时间戳

// 方法
1、event.preventDefault() // 取消默认事件(如果该事件可取消)
2、event.stopPropagation() // 停止冒泡

三、Node

// 概括:节点的基类,主要提供节点基本信息和节点的增删改查
// 派生的其中一个<xx>形式的节点(element节点)
// 我们也可以把它理解为一种tree结构,如ATTRIBUTE_NODE(很多属性其实也是继承node)

// 属性
1、nodeType // 返回一个整数,其代表的是节点类型
// 我们发现Node对象上,定义了很多节点类型常量值
// 如ELEMENT_NODE、TEXT_NODE、COMMENT_NODE、DOCUMENT_NODE、ATTRIBUTE_NODE 
// 使用:ele.nodeType === Node.ELEMENT_NODE
2、nodeName // 返回当前标签名(大写),支持自定义的任意标签名!!!

3、其它是一些node节点的增删改查属性和函数,了解即可

四、Element

// 概括: 元素节点,是Node的一个派生,形式如<xx></xx>
// 主要提供标签上面的一些属性,如id,className,innerHTML等标签属性及相关方法,及标签节点的增删改查
// 派生的有,html/xml/svg等
  • 1、标签属性相关
1、attributes // 返回所有属性,全面但不专业
2、classList  // 专门操作class,支持add、remove、toggle、replace !!!漂亮
  • 2、定位渲染相关
// 先描述下基本概念:
// 一个标签,有content,padding,border,margin
// 实际渲染的时候,则需要考虑以下几点
// 1、从哪里开始渲染(相对于父亲的offsetTop/offsetLeft)
// 2、该元素的整体渲染区域(即offsetWidth/offsetHeight)
// 3、渲染内容从哪里开始(clientTop/clientLeft)
// 4、渲染内容的区域(即clientWidth/clientHeight)
// 5、内容真正的渲染长度是多少呢?因为有滚动,所以(scroll系列)

1、offset系列:整体渲染区域尺寸
// content + padding + border(有滚动条也一样,下面会描述)

2、client系列:渲染内容区域尺寸(考虑有滚动条怎么渲染就好理解)
// 理解:如果某div出现滚动条,则是不是给他content+padding区域内
// 一部分用于展示滚动条,剩余部分装真正的内容(内容有padding和content)
// 剩余部分用于展示的区域的width/height:就是clientWidth/clientHeight
// 如果该方向没有滚动条,可以发现长度就是content+padding
// 默认pc端滚动条宽度17px。

// clientLeft: 左边border宽度
// clientTop: 顶部border宽度
// clientHeight: 可视区(content + padding - 滚动条width)
// clientWidth:可视区(content + padding - 滚动条width)

3、scroll系列:内容真正尺寸
// scrollTop:头部卷起来的部分长度(滚上去了多少)
// scrollHeight:真正内容的长度
// scrollWidth:
// 如果没有滚动条,长度就是clientHeight/clientWidth

Element.getBoundingClientRect() 方法返回元素的大小及其相对于视口的位置
// 相当于视窗
// width和height值等同于offsetWdith和offsetHeiht(但要更精确)
scrollTo() // 容器绝对滚动
scrollBy() // 容器相对滚动
scrollIntoView() // 节点滚动
  • 3、增删改查相关
// 标签节点相关的增删改查,略

五、HTMLElement

增加html节点相关的一些属性和方法(html环境,比如会有点击,等)