$(document).height()与$(window).height()的区别

本文详细解释了JavaScript中$(window).height()与$(document).height()的区别,并介绍了与之相关的scrollTop()和scrollLeft()方法的用途。通过具体示例说明了如何在页面滚动时获取相关尺寸和位置信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这俩个概念对很多人来说都很模糊,包括之前的我,现在来说一说他们的区别:

           $(window).height()代表了当前可见区域的大小;

           $(document).height()则代表了整个文档的高度,可视具体情况使用.(个人理解就是:html里body里面的内容)

  *注意:当浏览器窗口大小改变时(如最大化或拉大窗口后) $(window).height() 随之改变,但是$(document).height()是不变的。

     当写下拉加载上拉刷新时,还有可能遇到下面这几个概念:

           $(document).scrollTop():获取当前滚动的地方的窗口顶端到整个页面顶端的距离,即获取垂直滚动的距离

           $(document).scrollLeft():获取水平滚动条距离页面左端的距离。


下面是我写上拉加载时用到:

               var scrollTop=$(document).scrollTop();//当前可视化网页距离最上方网页的距离
//           scrollTop()方法获取滚动条的垂直距离
                var height=$(document).height();
                var viewHeight=$(window).height();//可视化高度,随窗口大小改变而改变

          



在 Vue.js 中,可以通过 `this.$refs` 访问到 DOM 元素,并利用 `getBoundingClientRect()` 方法获取其位置信息。该方法返回一个 `DOMRect` 对象,包含了元素的 `top`、`right`、`bottom`、`left`、`width` 和 `height` 等属性,可用于获取元素相对于视口的位置[^1]。 例如,可以通过以下方式获取 `this.$refs.table` 元素的位置信息: ```javascript mounted() { this.getTablePosition(); }, methods: { getTablePosition() { const tableElement = this.$refs.table; if (tableElement) { const rect = tableElement.getBoundingClientRect(); console.log('元素的位置信息:', { top: rect.top, right: rect.right, bottom: rect.bottom, left: rect.left, width: rect.width, height: rect.height }); } } } ``` 在上述代码中,`getBoundingClientRect()` 返回的 `rect` 包含了元素的详细位置信息,包括其相对于视口的上、右、下、左边界距离以及宽度和高度。该方法通常在组件挂载后调用,以确保 DOM 元素已经渲染完成[^1]。 需要注意的是,如果页面存在滚动或动态内容加载,建议在合适的生命周期钩子(如 `updated`)中再次调用 `getBoundingClientRect()`,以确保获取到最新的元素位置信息[^1]。 ### 获取元素位置信息的常见应用场景 1. **动态调整布局**:根据元素的位置信息,动态设置其样式或位置,实现响应式设计。 2. **滚动监听**:结合 `window.scroll` 事件,判断元素是否进入可视区域,从而实现懒加载或动画触发。 3. **定位弹窗或提示框**:通过获取目标元素的位置,动态计算弹窗或提示框的显示位置,使其始终跟随目标元素[^1]。 ### 示例:动态调整表格高度 在 Vue 中,可以通过计算元素位置和窗口高度,动态设置表格的高度。例如: ```javascript methods: { setTableHeight() { const tableElement = this.$refs.table; const paginationExists = !!document.getElementsByClassName("el-pagination").length; const paginationHeight = paginationExists ? 55 : 0; if (tableElement) { const rect = tableElement.getBoundingClientRect(); const tableTop = rect.top; const windowHeight = window.innerHeight; this.tableHeight = windowHeight - tableTop - paginationHeight; } } } ``` 在上述代码中,通过 `getBoundingClientRect()` 获取表格元素的 `top` 位置,并结合窗口高度和分页组件的高度,动态计算出表格的高度,从而实现响应式布局。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值