js中clientWidth、scrollLeft、offsetX等宽高度和位置的用法

js中clientWidth、scrollLeft、offsetX等宽高度和位置的用法文章目录前言一、clientWidth/clientHeight二、clientLeft/clientTop三、clientX/clientY四、scrollWidth/scrollHeight五、scrollLeft/scrollTop六、offsetWidth/offsetHeight七、offsetLeft/offsetTop八、offsetX/offsetY总结前言前端学习中会遇到的一些宽高度,位置的计算提示:以下是本篇文章正文内容,下面案例可供参考.b.

大家好,又见面了,我是你们的朋友全栈君。


前言

前端学习中会遇到的一些宽高度,位置的计算


提示:以下是本篇文章正文内容,下面案例可供参考

.box { 
   
      width: 100px;
      height: 100px;
      border: 20px solid #333;
      padding: 20px;
      margin: 20px;
}

一、clientWidth / clientHeight

是内容区域的宽高,不包括边框宽高度。

console.log(oBox.clientWidth) // 120

对于浏览器窗口或body:
则是可视宽高

console.log(document.documentElement.clientWidth);
console.log(document.body.clientWidth);

值会根据浏览器窗口大小的变化而变化

二、clientLeft / clientTop

取决于元素的左边框、上边框的值

console.log(oBox.clientTop);  // 20

三、clientX / clientY

鼠标位置距离当前浏览器窗口可视区域的x,y坐标

document.documentElement.onclick = function(e) { 
   
    console.log('clientX:' + e.clientX);
    console.log('clientY:' + e.clientY);
}

在这里插入图片描述

四、scrollWidth / scrollHeight

内容的实际宽高,包括有滚动条隐藏的部分

<style>
	body { 
   
            width: 2000px;
            height: 2000px;
        }
</style>
<script>
	console.log(document.documentElement.scrollWidth);
    console.log(document.documentElement.scrollHeight)
</script>

在这里插入图片描述
对于普通元素,scrollWidth、scrollHeight就是内容的实际宽高,不包括边框

console.log(oBox.scrollWidth);  // 140
console.log(oBox.scrollHeight)  // 140

五、scrollLeft / scrollTop

页面被卷去的宽度、高度,实际就是元素有滚动条的情况下滚动的大小

<style>
	body { 
   
            width: 2000px;
            height: 2000px;
        }
</style>
<script>
	window.onscroll = function() { 
   
        console.log(document.documentElement.scrollLeft);
        console.log(document.documentElement.scrollTop);
    }
</script>

可读,可写

六、offsetWidth / offsetHeight

元素的宽高,包含内边距和边框

console.log(oBox.offsetWidth)  // 180

七、offsetLeft / offsetTop

距离最近的具有参照物的元素左边和上边的距离
给oBox加个父级参照物oBig:

<style>
.box { 
   
      width: 100px;
      height: 100px;
      border-top: 40px solid #333;
      border-left: 20px solid #333;
      padding-top: 40px;
      padding-left: 20px;
      margin-top: 40px;
      margin-left: 20px;
      position: absolute;
      left: 0;
      top: 0;
}
        
.big { 
   
      width: 500px;
      height: 300px;
      position: relative;
      margin-top: 40px;
      margin-left: 20px;
      border-top: 40px solid #333;
      border-left: 20px solid #333;
 }
</style>
<script>
	window.onscroll = function() { 
   
        console.log('left:' + oBox.offsetLeft);
    	console.log('top:' + oBox.offsetTop);
    }
</script>

在这里插入图片描述

八、offsetX / offsetY

鼠标位置相对于事件源的X、Y坐标

<style>
.box{ 
   
   width: 200px;
   height: 200px;
   margin: 100px;
   background-color: #f00;
}
</style>
<script>
oBox.onmousemove = function(e){ 
    
   console.log(e.offsetX)
}
</script>

在这里插入图片描述

九、pageX / pageY

鼠标相对于文档的X、Y坐标,这2个属性不是标准属性,但得到了广泛的支持
与clientX、clientY有所不同:

document.documentElement.onclick = function(e) { 
   
    console.log('clientX: ' + e.clientX);
    console.log('pageX: ' + e.pageX)
}

2021/02/02
注意,这里页面有横向滚动条,clientX是距离窗口可视的距离,而pageX是距离文档的距离

总结

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/163052.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • NVIDIA Jetson TX1介绍(一)

    NVIDIA Jetson TX1介绍(一)NVIDIAJetsonTX1概述NVIDIAJetsonTX1是计算机视觉系统的SoM(system-on-module)解决方案。它组合了最新的NVIDIAMaxwellGPU架构,其具有ARMCortex-A57MPCore(Quad-Core)CPU族,实现性能与电源功耗的最大优化,满足下一代产品的工业视觉计算的要求。JetsonTX1SoM设计满足低功耗环境…

    2022年6月16日
    97
  • vlan的原理和作用_生态因子作用的基本原理

    vlan的原理和作用_生态因子作用的基本原理相关名词:VirtualLocalAreaNetwork—VLAN、VirtualPrivateNetwork—VPN、VirtualRedundancyProtocol—VRRP等。一。VLAN的作用1.把一个广播帧所能到达的整个范围称为二层广播域,简称广播域。显然,一个交换网络其实就是一个广播域。在该网络中,假定PC0向PC10发送一个单播帧Y…

    2022年8月10日
    10
  • 关于异步FIFO设计,这7点你必须要搞清楚「建议收藏」

    关于异步FIFO设计,这7点你必须要搞清楚「建议收藏」这篇文章可能帮助您:了解异步FIFO设计中的7个要点。

    2022年8月13日
    15
  • QTreeView使用总结1,一个简单示例

    QTreeView使用总结1,一个简单示例1,简介本文为一个最简单的QTreeView初始化过程的示例。除去了一切操作响应等细节,只是展示使QTreeView显示出带层次结构的数据,至少需要哪些代码。只附带了一点点常用设置项。2,效果3,代码一个QTreeView插入三层数据的最简单代码示例:voidMainWindow::InitTree(){//1,构造Model,这里示例具有3层关系的model构造过程QSt…

    2022年6月13日
    56
  • Oracle函数详解:regexp_replace[通俗易懂]

    Oracle函数详解:regexp_replace[通俗易懂]regexp_replace:官方内容:官方语法:官方说明:https://docs.oracle.com/cd/B19306_01/server.102/b14200/functions130.htmregexp_replace函数是replace函数的扩展函数,用于通过正则表达式来进行匹配替换,默认情况下,每次匹配到的正则,都替换为replace_string,返回的字符串与…

    2022年4月29日
    1.0K
  • 怎么防止sql注入攻击_网络安全的威胁

    怎么防止sql注入攻击_网络安全的威胁SQL注入,就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。个人理解:用户通过浏览器访问网站,基本上很多的网站的数据都是保留在数据库中的,客户通过输入特定的数据特征利用网站开发者设计好的SQL查询语句进行对数据库中的数据进行查询,从而返回用户需要的数据,通过浏览器显示呈现到用户,达成整个的交付过程。而SQL攻击就是在用户输入数…

    2025年7月21日
    4

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号