js:client、scroll(client与scroll)

一、client

1、概念

client翻译过来就是客户端,我们使用client系列的相关属性来获取可视区的相关信息,通过client系列的相关属性,可以动态的得到该元素的边框大小,元素大小等

2、client不包含边框,但是包含padding

(1)不定义边框

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8" />
        <title></title>
        <style>
            div{
                 300px;
                height: 200px;
                background-color: darkred;
            }
        </style>
      <script>
             
      </script>
    </head>
    <body>
         <div></div>
         <script>
             var div=document.querySelector("div");
             console.log(div.clientWidth);
         </script>
    </body>
</html>

 (2)定义边框

<style>
            div{
                 300px;
                height: 200px;
                background-color: darkred;
                border: 10px solid red;
            }
        </style>

与offset不同,client的宽度不包括边框,但是包含padding

(3)返回边框的上/左边框大小

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8" />
        <title></title>
        <style>
            div{
                 300px;
                height: 200px;
                background-color: darkred;
                border: 20px solid red;
            }
        </style>
      <script>
             
      </script>
    </head>
    <body>
         <div></div>
         <script>
             var div=document.querySelector("div");
             console.log(div.clientTop);
             console.log(div.clientLeft)
         </script>
    </body>
</html>

二、scroll

1、不包含边框,但是包含padding

(1)不包含边框

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8" />
        <title></title>
        <style>
            div{
                 300px;
                height: 200px;
                background-color: darkred;
                border: 20px solid red;
            }
        </style>
    </head>
    <body>
         <div></div>
         <script>
             var div=document.querySelector("div");
             console.log(div.scrollHeight);
         </script>
    </body>
</html>

 (2)返回的是内容的宽度或高度

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8" />
        <title></title>
        <style>
            div{
                 30px;
                height: 20px;
                background-color: darkred;
                border: 2px solid red;
            }
        </style>
    </head>
    <body>
         <div>床前明月光床前明月光床前明月光</div>
         <script>
             var div=document.querySelector("div");
             console.log(div.scrollHeight);
             console.log(div.scrollWidth);
         </script>
    </body>
</html>

(3)添加滚动条

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8" />
        <title></title>
        <style>
            div{
                 60px;
                height: 30px;
                background-color: darkred;
                border: 2px solid red;
                overflow: auto;
            }
        </style>
    </head>
    <body>
         <div>床前明月光床前明月光床前明月光</div>
         <script>
             var div=document.querySelector("div");
             console.log(div.scrollHeight);
             console.log(div.scrollWidth);
         </script>
    </body>
</html>
<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8" />
        <title></title>
        <style>
            div{
                 60px;
                height: 30px;
                background-color: darkred;
                border: 2px solid red;
                overflow: auto;
            }
        </style>
    </head>
    <body>
         <div>床前明月光床前明月光床前明月光</div>
         <script>
             var div=document.querySelector("div");
             console.log(div.scrollHeight);
             console.log(div.scrollWidth);
         </script>
    </body>
</html>

 (4)为滚动条添加事件,计算top

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8" />
        <title></title>
        <style>
            div{
                 60px;
                height: 30px;
                background-color: darkred;
                border: 2px solid red;
                overflow: auto;
            }
        </style>
    </head>
    <body>
         <div>床前明月光床前明月光床前明月光</div>
         <script>
             var div=document.querySelector("div");
             console.log(div.scrollHeight);
             console.log(div.scrollWidth);
             div.addEventListener("scroll",function(){
                 console.log(div.scrollTop);
             })
         </script>
    </body>
</html>

 2、offset、client与scroll的对比

offset:返回自身包含padding、边框、内容区的宽度,返回值无单位,常用于获取元素的位置

client:返回自身包含padding、内容区的宽度、不含边框,返回值无单位,常用于获取元素的大小

scroll:返回自身实际的宽度,不含边框,返回值无单位,常用于获取滚动距离

原文地址:https://www.cnblogs.com/zhai1997/p/13424299.html