首页 > 编程语言 > 详细

javascript中的位置相关 offsetwidth,offsetheight等

时间:2019-07-14 01:07:05      阅读:124      评论:0      收藏:0      [点我收藏+]

在最近的移动端学习中,常常要计算移动位置,之前一直不太明白这些都表示什么意思。所以今天特地来总结,以备不时之需。这些是目前日常用的,还有没写的边用边补充。

 

元素位置相关

-----------------------------------------------------------------------------------------------------------------------------------------

offsetWidth :返回的是该元素的宽度(只包括内容区,内边距和边框),也就是border-box的宽度;
 
offsetHeight :返回的是该元素的高度(只包括内容区,内边距和边框),也就是border-box的高度;
 
clientWidth :返回的是该元素的宽度 (只包括内容区,内边距),也就是padding-box的宽度;
 
clientHeight :返回的是该元素的高度 (只包括内容区,内边距),也就是padding-box的高度;
 
scrollWidth返回元素的宽度(只包括元素宽度、内边距和溢出尺寸),无溢出情况时,与clientWidth相同
 
scrollHeigh返回元素的高度(只包括元素高度、内边距和溢出尺寸),无溢出情况时,与clientHeight相同
 
style.Width:设置或返回元素的宽度。只在块级元素或绝对/固定位置的元素发挥作用。溢出内容可以被 overflow 属性限制。
 
style.Height:设置或返回元素的高度。只在块级元素或绝对/固定位置的元素发挥作用。溢出内容可以被 overflow 属性限制。
 
offsetTop:如上层父元素开启了定位(position:absolute/fixed/relative),则返回当前子元素border-box(只包括内容区,上内边距和上边框)到外层定位父元素padding-box(只包括内容区和内边距)的距离;如上层父元素没有开启定位,则返回当前子元素border-box(只包括内容区,上内边距和上边框)到文档内壁的距离。
 
offsetLeft:如上层父元素开启了定位(position:absolute/fixed/relative),则返回当前子元素border-box(只包括内容区,左侧内边距和左边框)到外层定位父元素padding-box(只包括内容区和内边距)的距离;如上层父元素没有开启定位,则返回当前子元素border-box(只包括内容区,左侧内边距和左侧边框)到文档内壁的距离。
 
 
注意:

1. style.width 返回的是字符串,如28px,offsetWidth返回的是数值28。

2. style.width/style.height与scrollWidth/scrollHeight是可读写的属性,clientWidth/clientHeight与offsetWidth/offsetHeight是只读属性。

3. style.width的值需要事先定义,否则取到的值为空。而且必须要定义在html里(内联样式),如果定义在css里,style.height的值仍然为空,但元素偏移有效;而offsetWidth则仍能取到。

 

鼠标事件相关

-----------------------------------------------------------------------------------------------------------------------------------------

Event.clientX:事件被触发时,鼠标指针相对于浏览器页面(或客户区)的X轴的坐标。不论页面是否有水平滚动条,当点击客户端区域的左上角时,鼠标事件的clientX值都将为 0 ,也不会随滚动条的滚动而发生改变。它是只读属性。返回值是一个数字,代表坐标位置。以像素为单位。
 
Event.clientY:事件被触发时,鼠标指针相对于浏览器页面(或客户区)的Y轴的坐标。不论页面是否有垂直滚动条,当点击客户端区域的左上角时,鼠标事件的clientY值都将为 0 ,也不会随滚动条的滚动而发生改变。它是只读属性。返回值是一个数字,代表坐标位置。以像素为单位。
 
Event.pageX:事件被触发时,鼠标指针相对于浏览器页面(或客户区)的X轴的坐标。如果出现水平滚动条,这个坐标位置将会随着滚动条的滚动而发生改变。举个例子,如果页面向右滚动 200px 并出现了滚动条,这部分在窗口之外,然后鼠标点击距离窗口左边 100px 的位置,pageX 所返回的值将是 300。它是只读属性。返回值是一个数字,代表坐标位置。以像素为单位。
 
Event.pageY:事件被触发时,鼠标指针相对于浏览器页面(或客户区)的Y轴的坐标。如果出现垂直滚动条,这个坐标位置将会随着滚动条的滚动而发生改变。该属性会考虑到页面滚动条的高度。它是只读属性。返回值是一个数字,代表坐标位置。以像素为单位。
 
Event.screenX:事件发生时,鼠标指针相对于显示器屏幕左上角X轴的坐标。这个坐标位置会随着浏览器的变化而变化(例如:浏览器的缩放,移动等)。 它是只读属性。返回值是一个数字,代表坐标位置。以像素为单位。
 
Event.screenY:事件发生时,鼠标指针相对于显示器屏幕左上角Y轴的坐标。这个坐标位置会随着浏览器的变化而变化(例如:浏览器的缩放,移动等)。 它是只读属性。返回值是一个数字,代表坐标位置。以像素为单位。
 
Event.offsetX:相对容器的水平坐标 。

Event.offsetY:相对容器的垂直坐标。
 
 
-----------------------------------------------------------------------------------------------------------------------------------------
网页可见区域宽: document.body.clientWidth;
网页可见区域高: document.body.clientHeight;
网页可见区域宽: document.body.offsetWidth (包括边线的宽);
网页可见区域高: document.body.offsetHeight (包括边线的宽);
网页正文全文宽: document.body.scrollWidth;
网页正文全文高: document.body.scrollHeight;
网页被卷去的高: document.body.scrollTop;
网页被卷去的左: document.body.scrollLeft;
网页正文部分上: window.screenTop;
网页正文部分左: window.screenLeft;
屏幕分辨率的高: window.screen.height;
屏幕分辨率的宽: window.screen.width;
屏幕可用工作区高度: window.screen.availHeight;
屏幕可用工作区宽度:window.screen.availWidth;
 
 
 
 
技术分享图片
 
<!DOCTYPE html>
<html lang="ch">
<head>
    <meta charset="UTF-8">
    <title>页面位置相关</title>
    <style>
        *{
            padding: 0;
            margin: 0;
        }
        body{
            width: 2000px;
            height: 1000px;

        }
       #app{
            height: 300px;
            width: 300px;
            background: pink;
            border: 10px solid #000;
            padding: 100px;
            position: relative;
            margin: 50px auto;
        } 
        #wraper{
            position: absolute;
            top: 0;
            left: 0;
            right: 0;
            bottom: 0;
            margin: auto;

            height: 150px;
            width: 150px;
            padding: 50px;
            background: green;
            border: 10px solid #000;
        }
    </style>
</head>
<body>
    <div id="app">
         <div id="wraper"></div>
    </div>
</body>
<script>
    (function(){
        //获取相关元素
        var appNode = document.getElementById(‘app‘);
        var wraperNode = document.getElementById(‘wraper‘);
            console.log(wraperNode.offsetWidth,wraperNode.offsetHeight);    //此时页面返回宽/高度:270px,是border-box的宽/高度;
          console.log(wraperNode.clientWidth,wraperNode.clientHeight);  //此时页面返回宽/高度:250px,是padding-box的宽/高度;
            console.log(wraperNode.scrollWidth,wraperNode.scrollHeight );
            console.log(wraperNode.offsetTop,wraperNode.offsetLeft);  //上层父元素有定位,返回:115px;上层父元素无定位:参照视口
                

        /*****************************************************/
        
        document.addEventListener(‘click‘,function(){
            console.log(event.clientX,event.clientY);   //鼠标指针相对于浏览器可视区域X轴和Y轴的坐标; 
            console.log(event.pageX,event.pageY);  //鼠标指针相对于浏览器可视区域X轴和Y轴的坐标(会随着滚动条的滚动而发生变化);
            console.log(event.screenX,event.screenY);  //鼠标指针相对于整个显示器左上角X轴和Y轴的坐标位置,会随着浏览器的变化导致鼠标指针的位置发生变化(例如:浏览器的缩放等);
            
        });


    })();
</script>
</html>

 

 

 

javascript中的位置相关 offsetwidth,offsetheight等

原文:https://www.cnblogs.com/Zh-J/p/11182732.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!