zoukankan      html  css  js  c++  java
  • Dom关于位置和尺寸的api

    parentNode    直接父级//和offsetParent不同

    inner2.parentNode
    <!DOCTYPE html>
    <html id="html">
        <head>
            <meta charset="UTF-8">
            <title></title>
            <style type="text/css">
                #inner2{
                    position: absolute;
                }
                #wrap{
                    position: relative;
                }
            </style>
        </head>
        <body id="body">
            <div id="wrap">wrap
                <div id="inner1">inner1
                    <div id="inner2">inner2</div>
                </div>
            </div>
        </body>
        <script type="text/javascript">
            //hmtl css js
            window.onload=function(){
                //parentNode 直接父级
                var inner2 = document.querySelector("#inner2");
                console.log(inner2.parentNode.id);
            }
            
            
        </script>
    </html>
    View Code

    offsetParent

    a.有点类型于css中包含块(css中的概念)的概念
    b.offsetLeft 和 offsetTop都是参照于offsetParent的内边距边界
    c.规则(html和body之间的margin被清除)

    本身定位为fiexd,不管你父级有没有定位

    存在兼容性问题
    火狐的offsetParent --> body


    非火狐offsetParent --> null

    <!DOCTYPE html>
    <html id="html">
        <head>
            <meta charset="UTF-8">
            <title></title>
            <style type="text/css">
                #wrap{position: absolute;}
                #inner1{position: fixed;}
                #inner2{position: relative;}
                #inner3{position: fixed;}
                
            </style>
        </head>
        <body id="body">
            <div id="wrap">wrap
                <div id="inner1">inner1
                    <div id="inner2">inner2
                        <div id="inner3">3</div>
                    </div>
                </div>
            </div>
        </body>
        <script type="text/javascript">
            /*
            ev||event
            鼠标滚轮
            事件绑定
            offsetParent
                1.父级是否有定位(4种)
                2.本身是否有定位(4种)
                3.浏览器不一样(5大pc浏览器+老祖宗(ie 6 7 8))
                
                4*4*8 = 128
                
                本身定位为fixed
                        ==> offsetParent:null(不是火狐)
                        ==> offsetParent:body(火狐)
                
                本身定位不为fixed
                        父级没有定位
                            ==> offsetParent:body
                        父级有定位
                            ==> offsetParent:定位父级
            */
            
            window.onload=function(){
                console.log(inner3.offsetParent)
            }
        </script>
    </html>
    测试代码

    非fixed
    父级没有定位
    offsetParent --> body
    父级有定位
    offsetParent --> 定位父级

    fixed 不管你有没有定位都根据body

        <meta charset="UTF-8">
            <title></title>
            <style type="text/css">
                #wrap{position: absolute;}
                #inner1{position: fixed;}
                #inner2{position: relative;}
                #inner3{position: fixed;}
                
            </style>
        </head>
        <body id="body">
            <div id="wrap">wrap
                <div id="inner1">inner1
                    <div id="inner2">inner2
                        <div id="inner3"></div>
                    </div>
                </div>
            </div>
        </body>
        <script type="text/javascript">
            /*
            ev||event
            鼠标滚轮
            事件绑定
            offsetParent
                1.父级是否有定位(4种)
                2.本身是否有定位(4种)
                3.浏览器不一样(5大pc浏览器+老祖宗(ie 6 7 8))
                
                4*4*8 = 128
                
                本身定位为fixed
                        ==> offsetParent:null(不是火狐)
                        ==> offsetParent:body(火狐)
                
                本身定位不为fixed
                        父级没有定位
                            ==> offsetParent:body
                        父级有定位
                            ==> offsetParent:定位父级
            */
            
            window.onload=function(){
                console.log(inner3.offsetParent)
            }
        </script>
    </html>
    View Code
    <!DOCTYPE html>
    <html id="html">
        <head>
            <meta charset="UTF-8">
            <title></title>
            <style type="text/css">
            
                html,body{
                    height: 100%;
                    overflow: hidden;
                }
            
            
                #wrap{position: absolute;background: pink;left: 100px;top: 50px;}
                #inner1{position: fixed;background: deeppink;left: 50px;top: 150px;}
                #inner2{position: relative;background: hotpink;left: 80px;top: 70px;}
                #inner3{position: fixed;background: yellow;left: 60px;top: 30px;}
                div{
                     200px;
                    height: 200px;
                    padding: 50px;
                    border: 10px solid;
                }
            </style>
        </head>
        <body id="body">
            <div id="wrap">wrap
                <div id="inner1">inner1
                    <div id="inner2">inner2
                        <div id="inner3">inner3</div>
                    </div>
                </div>
            </div>
        </body>
        <script type="text/javascript">
            /*
             * 
            ev||event
            鼠标滚轮
            事件绑定
            offsetParent
                1.父级是否有定位(4种)
                2.本身是否有定位(4种)
                3.浏览器不一样(5大pc浏览器+老祖宗(ie 6 7 8))
                
                4*4*8 = 128
                
                本身定位为fixed
                        ==> offsetParent:null(不是火狐)
                                offsetTop和offsetLeft也是参照于body的
                        ==> offsetParent:body(火狐)
                
                本身定位不为fixed
                        父级没有定位
                            ==> offsetParent:body
                        父级有定位
                            ==> offsetParent:定位父级
            */
            
            window.onload=function(){
                console.log(inner3.offsetTop,inner3.offsetLeft)
            }
        </script>
    </html>
    View Code
  • 相关阅读:
    解决 git 同步时 Everything up-to-date
    vs2019 git Authentication failed for xxx
    vs2015发布项目到虚拟主机组策略阻止csc.exe程序问题
    vs2017 使用 reportviewer
    var,dynamic的用法
    水晶报表报无法在资源中找到报表,请重新创建项目 错误
    css隐藏元素的方法
    css-浮动与清除浮动的原理详解(清除浮动的原理你知道吗)
    正则并不适合严格查找子串
    浏览器加载、渲染过程总结
  • 原文地址:https://www.cnblogs.com/hack-ing/p/11861069.html
Copyright © 2011-2022 走看看