• client家族属性


    在前面总结了offset家族属性和scroll家族属性,今天来总结一下client家族属性,同前面一样,client家族也包宽高和左上,具体的通过代码来区别这三大家族属性的不同。

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title></title>
        <style>
            #box{
                width: 240px;
                height: 240px;
                background-color: red;
                padding: 40px;
                border: 20px solid #000;
            }
    
            p{
                margin-bottom: 20px;
            }
        </style>
    </head>
    <body>
       <div id="box">
            <p>前端js</p>
            <p>前端js</p>
            <p>前端js</p>
            <p>前端js</p>
            <p>前端js</p>
            <p>前端js</p>
            <p>前端js</p>
            <p>前端js</p>
            <p>前端js</p>
            <p>前端js</p>
            <p>前端js</p>
            <p>前端js</p>
            <p>前端js</p>
            <p>前端js</p>
            <p>前端js</p>
            <p>前端js</p>
            <p>前端js</p>
            <p>前端js</p>
       </div>
    
    <script>
        var box = document.getElementById("box");
        console.log(box.offsetWidth, box.offsetHeight);
        console.log(box.clientWidth, box.clientHeight);
        console.log(box.scrollWidth, box.scrollHeight);
    
        console.log(box.offsetLeft, box.offsetTop);
        console.log(box.clientLeft, box.clientTop);
        console.log(box.scrollLeft, box.scrollTop);
    </script>
    </body>
    </html>

    在上面的例子中,我们定义了一个内容超出,出现滚动的div,并了区分,添加了较大的边框和边距,下面是不同家族的打印结果:

    从上面的打印结果中,我们可以得出结论:

    • offsetWidth 和 offsetHeight:border + padding + 内容的宽度和高度
    • clientWidth 和 clientHeight:padding + 内容的宽度和高度
    • scrollWidth 和 scrollHeight:能够滚动的内容的宽度和高度
    • offsetLeft 和 offsetTop:距离有定位的父元素的左边和上边的距离
    • clientLeft 和 clientTop:左边和上边边框的宽度
    • scrollLeft 和 scrollTop:左边和上边的滚动的长度

    我们还可以通过下面的图更清晰的看出三者之间的差别:

    封装

    在前面总结scroll家族的时候基于标准模式和怪异模式,封装过一次scroll家族属性,同理,为了解决不同浏览器之间的差距,我们也可以封装一个client家族属性的函数,y用于获取屏幕的可是宽度和高度。

    function client() {
        if(window.innerWidth){ // ie9+ 最新的浏览器
            return {
                 window.innerWidth,
                height: window.innerHeight
            }
        }else if(document.compatMode === "CSS1Compat"){ // W3C
            return {
                 document.documentElement.clientWidth,
                height: document.documentElement.clientHeight
            }
        }
    
        return {
             document.body.clientWidth,
            height: document.body.clientHeight
        }
    }
  • 相关阅读:
    【BZOJ2006】[NOI2010] 超级钢琴(堆+RMQ)
    【洛谷1120】小木棍(一道有技巧的dfs)
    【BZOJ1857】传送带(分治经典:三分套三分)
    【BZOJ1045】糖果传递(基于贪心的数学题)
    【CF1000C】Covered Points Count(离散化+差分)
    【洛谷1486】[NOI2004] 郁闷的出纳员(Splay的小运用)
    【洛谷1156】垃圾陷阱(动态规划)
    严格次小生成树学习笔记
    高斯消元入门
    【洛谷4011】孤岛营救问题(状压SPFA)
  • 原文地址:https://www.cnblogs.com/yuyujuan/p/9671208.html
Copyright © 2020-2023  润新知