1 2 // javascript 文档对象模型 document object model
3
4 // 一: Document 对象
5 // 1. 返回当前获取焦点的元素
6 document.activeElement
7
8 // 2. 给文档添加事件监听,eventType:事件类型,callback:事件回调,boolean:true=>事件在捕获执行,false=>事件在冒泡执行
9 document.addEventListener("eventType","callback","boolean")
10
11 // 3. 返回当前文档的绝对基础url
12 document.baseURI
13
14 // 4. 返回文档body元素
15 document.body
16
17 // 5.创建节点元素,节点类型为1;如div,span
18 document.createElement("标签")
19
20 // 6.创建虚拟节点元素(文档碎片节点),节点类型为11,,没有具体的标签,不属于dom树
21 document.createDocumentFragment()
22
23 // 7.创建属性节点:如class, style,,要使用setAttributeNode()插入
24 document.createAttribute
25
26 //8.创建文本节点,使用appendChild() 插入
27 document.createTextNode("这是文本节点")
28
29 // 10.返回当前文档的form表单节点集合
30 document.forms
31
32 // 11.获取文档中指定class名的元素集合,返回的是nodeList集合
33 document.getElementsByClassName("className")
34
35 // 12.获取文档中指定id名的元素
36 document.getElementById("idName")
37
38 // 13. 返回文档指定name 名称的元素集合
39 document.getElementsByName()
40
41 // 14.返回文档指定标签的元素集合
42 document.getElementsByTagName();
43
44 // 15.返回文档中所有的img 集合对象
45 document.images
46
47 // 16. 返回对文档中所有 Area 和 Link 对象引用
48 document.links
49
50 // 17. 删除空文本节点
51 document.normalize()
52
53 // 18. 获取文档中匹配指定的CSS选择器的第一元素
54 document.querySelector()
55
56 // 19. 获取文档中匹配指定css 选择器的元素集合
57 document.querySelectorAll()
58
59 // 20. 返回所有脚本集合
60 document.scripts
61
62 // 21. 返回/设置当前文档的标题
63 documen.title
64
65 // 22. 向文档写入html 或者script 脚本
66 document.write()
67
68 //23. 返回文档根节点 html
69 document.documentElement
70 // 23.1 获取页面(html 节点)当前滚动的距离顶部高度
71 document.documentElement.scrollTop
72 // 23.1 获取页面(html 节点)当前滚动的距离左边的高度
73 document.documentElement.scrollLeft
74 //23.1 获取页面(html 节点)的可视宽度(不会因为内容多大而撑开)
75 document.documentElement.clientWidth
76 //23.1 获取页面(html 节点)的可视高度(不会因为内容多大而撑开)
77 document.documentElement.clientHeight
78
79 //23. 获取页面(html 节点)的宽度(最小值为页面可视宽度),如果页面内容大于页面可视宽度,就是内容body的clientWidth
80 document.documentElement.scrollWidth
81
82 //23. 获取页面(html 节点)的高度(最小值为页面可视高度),如果页面内容大于页面可视高度,就是内容body的clientHeight
83 document.documentElement.scrollHeight
84
85 //23. 获取页面(html 节点)的上外边框到下外边框的距离
86 document.documentElement.offsetHeight
87 document.documentElement.offsetWidth
// JavaScript文档对象模型--Dom对象
var element = document.getElementById("element")
// 1. 给指定元素添加事件句柄
element.addEventListener("click",function(){},false)
// 2. 给指定元素element 的子节点列表的末尾添加一个子节点(元素节点,文本节点....)
element.appendChild()
//3. 返回指定元素element 的属性数组
element.attributes
// 4. 返回指定元素element 的子标签节点集合(只有标签节点)
element.children
// 5. 返回指定元素element 的子节点集合(标签节点,文本节点)
element.childNodes
// 6.克隆指定element节点,参数如果为true,则克隆包含它的子孙节点,否则只是克隆当前节点
element.cloneNode(true)
// 7. 返回指定元素类名,作为DOMTokenList 对象,包含这add(),remove(),contains(),toggle() 方法
element.classList
// 8. 返回/设置指定元素类名,字符串类型
element.className
// 9. 获取element 上内边框到下内边框的距离,width+padding(不包含boder)
element.clientHeight
// 10. 获取element 左内边框到右内边框的距离,width+padding
element.clientWidth
// 11. 获取左边框(border-left-width)的宽度,没有为0
element.clientLeft
// 12. 获取上边框(border-left-width)的宽度,没有为0
element.clientTop
// 13. 获取element元素外上边框到外下边框的距离(width+padding+border)
element.offsetHeight
// 13. 获取element元素外左边框到外右边框的距离(height+padding+border)
element.offsetWidth
// 14.获取element元素外左边框到相对offsetParent元素(即相对定位,默认为body元素)的左内边框的距离
element.offsetLeft
// 15.获取element元素外上边框到相对offsetParent元素(即相对定位,默认body元素)的上内边框的距离
element.offsetTop
// 16. 返回element相对偏移的元素(默认为body,如果没设置定位)
element.offsetParent
// 17. 返回element 的height+padding ,如果出现滚动,实际返回的是内容宽度+padding
element.scrollHeight
// 18. 返回element 的width+padding,如果出现滚动,实际返回的是内容高度+padding
element.scrollWidth
// 19. 获取元素element 的位置属性方法
element.getBoundingClientRect()
// 20. 获取元素的绝对位置(指当前元素的左上角相对于整张网页左上角的坐标)
var let1 = element.getBoundingClientRect().left
var top1 = element.getBoundingClientRect().top
// 21. 获取元素的相对位置(指当前元素的左上角相对与窗口左上角的坐标)
element.getBoundingClientRect().top+document.documentElement.scrollTop
element.getBoundingClientRect().left+document.documentElement.scrollLeft
// 22. 判断元素是否在可视区域
function isView(ele){
if(ele&&ele.nodeType!==1){
ele = document.querySelector(ele)
}
if(!ele) return
let res = ele.getBoundingClientRect();
let isleft =res.left< window.innerWidth&& res.right >0
let isTop = res.top < window.innerHeight && res.bottom >0
return isTop && isleft;
}
//事件委托处理封装
function onEven(eventType,parntNode,childNode,fn,bool){
//没有委托
let trifn;
if(typeof childNode=='function'){
bool = fn;
trifn = childNode
}else{
//有委托
trifn = function(e){
let target = e.target
if(target.matches(childNode)){
target['mapTarget'] = this;
typeof fn=="function"&&fn.apply(target,arguments)
}
}
}
document.querySelectorAll(parntNode).forEach(function(itme){
itme.addEventListener(eventType,trifn,bool||false)
})
}
function getStyle(el,Property){
return el.currentStyle ? el.currentStyle[Property] : getComputedStyle(el)[Property];
}
1 let dom = document.getElementById(id);
2 3
4 console.log("offsetParent ",dom['offsetParent']);//相对定位父节点,如果没有就默认body
5 console.log("offsetTop ",dom['offsetTop']);// 距离相对定位父节点的上边位移
6 console.log("offsetLeft ",dom['offsetLeft']) // 距离相对定位父节点的左边位移
7
8 //节点的实际宽度高度(即盒子模型的大小),不包含滚动条(不管是否存在)
9 //标准w3c模型:offsetWidth = boder+padding+content(width=content)
10 //iE:offsetWidth = width(border+padding+content)
11 console.log("offsetWidth ",dom['offsetWidth'])
12 console.log("offsetHeight ",dom['offsetHeight'])
13
14 //当前dom 滚动的位移
15 console.log("scrollTop ",dom['scrollTop'])
16 console.log("scrollLeft ",dom['scrollLeft'])
17
18 //如果不出现滚动(纵横)
19 //scrollWidth = clientWidth(根据盒子模型决定)
20 //scrollHeight = clientHeight(根据盒子模型决定)
21
22 //如果出现滚动 scrollWidth>clientWidth
23 // scrollWidth/scrollHeight 为实际内容的宽度高度
24 console.log("scrollWidth ",dom['scrollWidth'])
25 console.log("scrollHeight ",dom['scrollHeight'])
26 //边框的宽度高度
27 console.log("clientTop ",dom['clientTop'])
28 console.log("clientLeft ",dom['clientLeft'])
29
30 //可视内容的宽度高度( 根据盒子模型决定);
31 //IE:clientWidth = width-border-滚动条宽度(如果存在);100-20-17=63
32 //非IE:clientWidth = width+padding-滚动条宽度(如果存在) 100+20-17=103
33 console.log("clientWidth ",dom['clientWidth'])
34 console.log("clientHeight ",dom['clientHeight'])
35
36
37 //真实内容的宽度
38 //IE:content = width-border-padding-滚动条宽度(如果存在)
39 //非IE: content =width - 滚动条宽度(如果存在)
40 console.log(dom.getBoundingClientRect())