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)
上一篇 2022年7月22日 下午4:16
下一篇 2022年7月22日 下午4:16


相关推荐

  • 什么叫侧面指纹识别_侧面指纹识别方案还有哪些问题没有解决?

    什么叫侧面指纹识别_侧面指纹识别方案还有哪些问题没有解决?当我们回首手机圈不难发现两个关键词——金属机身以及指纹识别。虽然指纹识别功能并不是直到今年才出现在智能手机之上,在这一年中,各大手机厂商先是采用了与iPhone相同的正面指纹识别方案,然而没过多久便有厂商提出,指纹识别功能放在机身背面更好用(成本低才是真相);一时间,关于“内裤到底该正着穿,还是反着穿?”的争论,成为各大手机发布会必谈的话题之一。直到侧面指纹识别方案的出现,广大的手机用户才发现,原…

    2022年8月10日
    7
  • MySQL默认事物隔离级别_sqlserver事务隔离级别

    MySQL默认事物隔离级别_sqlserver事务隔离级别mysql数据库事务的隔离级别有4个,而默认的事务处理级别就是【REPEATABLE-READ】,也就是可重复读。下面本篇文章就来带大家了解一下mysql的这4种事务的隔离级别,希望对大家有所帮助。SQL标准定义了4类隔离级别,包括了一些具体规则,用来限定事务内外的哪些改变是可见的,哪些是不可见的。低级别的隔离级一般支持更高的并发处理,并拥有更低的系统开销。mysql的4种事务隔离级别,如下所示:…

    2025年10月27日
    4
  • 硅基流动+Deepseek本地部署教程,手把手教你丝滑使用

    硅基流动+Deepseek本地部署教程,手把手教你丝滑使用

    2026年3月16日
    4
  • sourceinsight激活码3.5_pdf注册码及序列号

    sourceinsight激活码3.5_pdf注册码及序列号SI3US-032434-64929

    2026年4月16日
    8
  • 【Android 应用开发】GitHub 优秀的 Android 开源项目

    【Android 应用开发】GitHub 优秀的 Android 开源项目文章转载自: http://blog.csdn.net/zhixiang2010/article/details/18032871 作者: Elysee2014主要介绍那些不错个性化的View,包括ListView、ActionBar、Menu、ViewPager、Gallery、GridView、ImageView、ProgressBar及其他如Dialog、Toast、Ed

    2025年5月28日
    5
  • QCustomPlot系列(5)-实时动态曲线[通俗易懂]

    QCustomPlot系列(5)-实时动态曲线[通俗易懂]先来个动图看看效果:支持鼠标平移、滚轮缩放、框选放大、取消框选、一键全显、单击显示xy坐标值。。等平移功能是QCustomPlot自带的功能,参见我的该系列前面的博文。框选放大、全显等功能在另一篇博文中也讲到了。这里只讲2个知识点:1、显示鼠标指向的点坐标,2、实时滚动1、箭头指向要显示的坐标点,代码步骤:(1)添加新类,继承QCustomPlot添加private成员变…

    2022年10月16日
    8

发表回复

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

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