• 1.offsetParent,offsetLeft,offsetTop


    offsetParent

    <!doctype html>
    <html>
    <head>
    <meta charset="utf-8">
    <title>document</title>
    <style>
    div{ padding:40px 50px;}
    #div1 { background:red;}
    #div2 { background:blue; position:relative;}
    #div3 { background:orange;}
    </style>
    <script type="text/javascript">
        
        window.onload = function() {
            
            var oDiv3 = document.getElementById('div3');
            //parentNode
            //alert(oDiv3.parentNode);
            
            //元素.offsetParent 只读属性 离当前元素最近的有定位的父节点
            //如果没有定位父级,默认是body
            //ie7以下,如果当前元素下有定位,默认是body,ie7下如果有定位则是html
            //ie7以下,如果当前元素的某个父级触发了layout,那么offsetParent就会被指向的触发了layout特性的节点
            alert(oDiv3.offsetParent.id);
            
        }
        
    </script>
    </head>
    
    <body id="body">
        <div id="div1">
            <div id="div2">
                <div id="div3">
                
                </div>
            </div>
        </div>
    </body>
    </html>

    offsetLeft,offsetTop在各浏览器中的表现差异

    <!doctype html>
    <html>
    <head>
    <meta charset="utf-8">
    <title>document</title>
    <style>
    div{ padding:40px 50px;}
    #div1 { background:red;}
    #div2 { background:blue; position:relative;}
    #div3 { background:orange;}
    </style>
    <script type="text/javascript">
        
        window.onload = function() {
            
            var oDiv3 = document.getElementById('div3');
            /*
                offsetLeft:只读属性 当前 元素以定位父级的距离(偏移值)
                    到当前元素的offsetParent的距离
                    如果没有定位父级
                        offsetParent -> body
                        offsetLeft[html] -> html
                    
                    如果有定位父级
                        
                        ie7:如果自己没有定位,那么offsetLeft[Top]是到body的距离
                            如果自己有定位,那么就是到定位父级的距离
                        其它:到定位父级的距离
            */
            alert(oDiv3.offsetLeft);
        }
        
    </script>
    </head>
    
    <body id="body">
        <div id="div1">
            <div id="div2">
                <div id="div3">
                
                </div>
            </div>
        </div>
    </body>
    </html>

    获取元素结点到页面的绝对距离的方式

    <!doctype html>
    <html>
    <head>
    <meta charset="utf-8">
    <title>document</title>
    <style>
    div{ padding:40px 50px;}
    #div1 { background:red;}
    #div2 { background:blue; position:relative;}
    #div3 { background:orange;}
    </style>
    <script type="text/javascript">
        
        window.onload = function() {
            
            var oDiv3 = document.getElementById('div3');
            //alert(oDiv3.offsetLeft);
            /*var iTop = 0;
            var obj = oDiv3;
            while(obj) {
                alert(obj.id + ':' + obj.offsetTop);
                iTop += obj.offsetTop;
                obj = obj.offsetParent;
                alert(obj + obj.id);
            }*/
            //alert(iTop);
            var p = getPos(oDiv3);
            alert(p.left);
            //获取元素结点到页面的绝对距离的方式
            function getPos(obj) {
                
                var pos = {left:0,top:0};
                
                while(obj) {
                    pos.left += obj.offsetLeft;
                    pos.top += obj.offsetTop;
                    obj = obj.offsetParent;
                }
                return pos;
            }
            
        }
        
    </script>
    </head>
    
    <body id="body">
        <div id="div1">
            <div id="div2">
                <div id="div3">
                
                </div>
            </div>
        </div>
    </body>
    </html>
  • 相关阅读:
    手写编译器之词法分析器一
    手写编译器之前
    PAT(A) 1005. Spell It Right (20)
    PAT(A) 1001. A+B Format (20)
    PAT(A) 1073. Scientific Notation (20)
    PAT(A) 1061. Dating (20)
    PAT(A) 1058. A+B in Hogwarts (20)
    PAT(A) 1027. Colors in Mars (20)
    PAT(A) 1019. General Palindromic Number (20)
    PAT(A) 1031. Hello World for U (20)
  • 原文地址:https://www.cnblogs.com/lilixing/p/4680127.html
Copyright © 2020-2023  润新知