javascript 文档模型api总结

 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())

 

posted @ 2022-04-09 16:40  天高任鸟飞吧  阅读(79)  评论(0编辑  收藏  举报