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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 路由跟踪之tcptraceroute IP延时之tcpping

    路由跟踪之tcptraceroute IP延时之tcpping现代网络广泛使用防火墙,导致传统路由跟踪工具发出的(ICMP应答(ICMPecho)或UDP)数据包都被过滤掉了,所以无法进行完整的路由跟踪。尽管如此,许多情况下,防火墙会准许反向(inbound)TCP数据包通过防火墙到达指定端口,这些端口是主机内防火墙背后的一些程序和外界连接用的。通过发送TCPSYN数据包来代替UDP或者ICMP应答数据包,tcptracerout…

    2022年6月20日
    77
  • densenet121网络结构_resnet网络结构详解

    densenet121网络结构_resnet网络结构详解论文:https://arxiv.org/pdf/1608.06993.pdf参考文献:https://blog.csdn.net/u014380165/article/details/75142664https://blog.csdn.net/qq_14845119/article/details/79272082与残差网络的区别:残差网络是加上跳转链接,非线性映射关…

    2022年9月29日
    0
  • VMware 虚拟机里连不上网的三种解决方案

    VMware 虚拟机里连不上网的三种解决方案运行环境:VMwareWorkstation-kalilinux32位问题:kalilinux虚拟机连不上网解决方案适用范围:VMwareWorkstation安装的所以系统在VMware虚拟机里启用kalilinux时,总是连不上网,ping百度时总出现:未知的名称或服务第一种解决方案是在虚拟机设置里,找到“网络适配器”,右边的网络连接选择“NAT模…

    2022年6月26日
    44
  • idea远程debug weblogic_idea远程调试代码

    idea远程debug weblogic_idea远程调试代码https://blog.csdn.net/u013559614/article/details/123375027Idea远程调试tomcatIdea配置配置remote传输方式,默认为Socket​Socket:macOS及Linux系统使用此种传输方式;​Sharedmemory:Windows系统使用此种传输方式。​调试模式,默认为Attach​Attach:此种模式下,调试服务端(被调试远程运行的机器)启动一个端口等待我们(调试客户端)去连接;​

    2022年9月10日
    0
  • yii2 rbac权限管理学习笔记

    yii2 rbac权限管理学习笔记

    2021年9月15日
    57
  • Scrapy 爬虫完整案例—从小白到大神(银行网点信息为例)

    Scrapy 爬虫完整案例—从小白到大神(银行网点信息为例)采用selenium界面抓取信息,需要渲染界面,并且也是单线程操作,效率极低,一晚上只爬去了一个工行的数据。突然想到了分布式爬虫安装Scrapypip版本过于老旧不能使用,需要升级pip版本,输入python-mpipinstall–upgradepip,升级成功安装scrapy命令:pipinstallScrapy因为scrapy框架基于Twisted,所以先要下载其whl包安装地址:http://www.lfd.uci.edu/~gohlke/pythonl..

    2022年6月26日
    22

发表回复

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

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