首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在纯JavaScript中获得不包括滚动条的视区大小?

在纯JavaScript中获取不包括滚动条的视区大小,可以通过以下几种方法实现:

基础概念

  • 视区(Viewport):浏览器窗口中用于显示网页内容的区域。
  • 滚动条:当页面内容超出视区时,浏览器会显示滚动条以便用户滚动查看内容。

获取视区大小的方法

方法一:使用 window.innerWidthwindow.innerHeight

window.innerWidthwindow.innerHeight 属性返回浏览器窗口的内部宽度和高度,包括滚动条。

代码语言:txt
复制
const viewportWidth = window.innerWidth;
const viewportHeight = window.innerHeight;
console.log(`Viewport Width: ${viewportWidth}, Height: ${viewportHeight}`);

方法二:使用 document.documentElement.clientWidthdocument.documentElement.clientHeight

document.documentElement.clientWidthdocument.documentElement.clientHeight 属性返回文档元素的可见部分的宽度和高度,不包括滚动条。

代码语言:txt
复制
const viewportWidth = document.documentElement.clientWidth;
const viewportHeight = document.documentElement.clientHeight;
console.log(`Viewport Width: ${viewportWidth}, Height: ${viewportHeight}`);

方法三:使用 document.body.clientWidthdocument.body.clientHeight

在某些情况下,特别是当文档类型声明为 HTML5 时,可以使用 document.body.clientWidthdocument.body.clientHeight

代码语言:txt
复制
const viewportWidth = document.body.clientWidth;
const viewportHeight = document.body.clientHeight;
console.log(`Viewport Width: ${viewportWidth}, Height: ${viewportHeight}`);

应用场景

  • 响应式设计:在开发响应式网页时,需要动态获取视区大小以调整布局。
  • 动画效果:某些动画效果需要根据视区大小进行适配。
  • 弹窗定位:弹窗或提示框需要根据视区大小进行定位,确保不会超出视区范围。

可能遇到的问题及解决方法

问题:在不同浏览器中获取的值不一致

原因:不同浏览器对视区大小的计算方式可能略有不同。 解决方法:使用上述多种方法获取视区大小,并取最小值以确保兼容性。

代码语言:txt
复制
const viewportWidth = Math.min(
  window.innerWidth,
  document.documentElement.clientWidth,
  document.body.clientWidth
);
const viewportHeight = Math.min(
  window.innerHeight,
  document.documentElement.clientHeight,
  document.body.clientHeight
);
console.log(`Viewport Width: ${viewportWidth}, Height: ${viewportHeight}`);

问题:在页面加载时获取的值不准确

原因:页面加载时,DOM元素可能还未完全渲染。 解决方法:将获取视区大小的代码放在 window.onloadDOMContentLoaded 事件中执行。

代码语言:txt
复制
window.addEventListener('DOMContentLoaded', () => {
  const viewportWidth = document.documentElement.clientWidth;
  const viewportHeight = document.documentElement.clientHeight;
  console.log(`Viewport Width: ${viewportWidth}, Height: ${viewportHeight}`);
});

通过以上方法,可以准确获取不包括滚动条的视区大小,并在不同场景下灵活应用。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

vw, vh视窗宽高单位的使用

这类限制的实现,在当下,需要获得图片的原始大小,以及浏览器内部尺寸,算大小,算比例等,算是比较折腾的。...六、视区覆盖以及边界定位 既然vw, vh是视区相关单位,我就想到是不是可以利用这个特性实现精确的视区大小覆盖以及视区边界的定位。...您可以狠狠地点击这里:vw, vh视区完全覆盖与纯CSS弹框 ? ?...拖动range控件,可以看到图片尺寸无论怎样变,弹框总是居中的——纯CSS实现,没有JavaScript的计算与定位,您有兴趣可以研究研究的~~ 正如上面所提到的,某些情况下,vw, vh所产生的效果与百分比...然后各个浏览器测试发现,效果是一模一样的(不支持position: fixed的IE6就当它不存在吧),固定在视区底部,不随滚动条滚动的空白工具栏: 说实话,原本第一眼看到单位vw, vh的时候,觉得这个单位

2.5K10

再谈BOM和DOM(6):dom对象及event对象位值计算—如offsetXTop,clentX

event对象位置信息获取 先总结下区别: event.clientX、event.clientY 鼠标相对于浏览器窗口可视区域的X,Y坐标(窗口坐标),可视区域不包括工具栏和滚动条。...不包括overflow被折叠起来的部分,不包括滚动条、border,包括padding     obj.clientWidth = (width + padding)   //获取元素的宽度——对象可见的宽度...因为滚动条不会出现在顶部或者左侧 offset 指偏移,包括这个元素在文档中占用的所有显示宽度。比client 多了border。     ...scroll指滚动,包括这个元素没显示出来的实际宽度,包括padding,不包括滚动条、border     scrollWidth 获取对象的滚动宽度,对象的实际宽度;     scrollHeight...js中getBoundingClientRect 当滚动位置发生了改变,top和left属性值就会随之立即发生变化(因此,它们的值是相对于视口的,而不是绝对的)。

1.5K20
  • 一文彻底搞懂js中的位置计算

    其实MouseEvent.clientX/Y也就是相对于当前视口(浏览器可视区)进行位置计算。...我们来看看这张图: 计算元素距离 body 的偏移量 当我们需要获得元素距离 body 的距离时,但是又无法确定父元素是否存在定位元素时(大多数时候在组件开发中,并不清楚父节点是否存在定位)。...Element.getBoundingClientRect 用法讲解 Element.getBoundingClientRect() 方法返回元素的大小及其相对于视口的位置。...除了 width 和 height 以外的属性是相对于视图窗口的左上角来计算的。 width和height是计算元素的大小,其他属性都是相对于视口左上角来说的。...计算元素是否出现在视口内 利用的还是元素距离视口的位置小于视口的大小。 注意即便变成了负值,那么也表示元素曾经出现过在屏幕中只是现在不显示了而已。

    3.9K10

    动手练一练,手写一个价格对比、固定表头滚动的表格

    虽然有不少相关插件提供了类似的功能,比如 ScrollMagic.js,但是今天的实例,我们将用纯原生的方式进行实现,当滚动条滚动至表格位置,固定表头位置,表格内容查看完后,取消固定表头的功能。...今天我们将通过一个界面十分漂亮功能价格对比的表格,展示固定表头的功能,实例操作展示如视频所示,当滚动条滚动至表格位置,添加表头固定样式,当滚动至表格底部,移除固定表头样式。...对于inline的元素这个属性一直是0,单位px,只读元素。 offsetHeight:包括padding、border、水平滚动条,但不包括margin的元素的高度。...imweb.io/topic/57c5409e808fd2fb204eef52 作者:IMWeb 吴浩麟 3、getBoundingClientRect getBoundingClientRect 用于获得页面中某个元素的左...由于窗口大小并非固定,我们会经常会拖动或调整窗口的大小,因此相关元素的宽度和视口高度都要重新计算,这里我们需要添加 resize 事件进行监听,示例代码如下: window.addEventListener

    3.2K31

    JavaScript与jQuery获取元素的宽、高和位置

    今天汇总整理了 JavaScript 和 jQuery 获取元素宽高和位置的方法,比较全面,方便自己和需要并搜到此文章的朋友们查看。...中: 获取坐标 getBoundingClientRect() :获取元素相对于浏览器视口的的坐标,返回一个Object对象,有6个属性:top | left | right | bottom | width...可视宽高 clientHeight :元素的可视高度(包括内边距,不包括边框、外边距或滚动条) clientWidth :元素的可视宽度(包括内边距,不包括边框、外边距或滚动条) 自身宽高 offsetHeight...:是该元素的显示(可见)的内容与该元素实际的内容的距离(滚动条滚去的高度) jQuery中: ?...() :获得包括内边距(padding)的元素宽度,不包括边框 innerHeight() :获得包括内边距(padding)的元素高度,不包括边框 outerWidth() :获得包括内边距(padding

    3.1K00

    JS-元素大小深入学习-offset、client、scroll等学习研究笔记

    一些属性和方法,在dom中没有规定如何确定页面中元素大小的情况下诞生。。。 1.偏移量(offset dimension)  测试代码: 1 滚动条是默认在宽度中的。...2.客户区大小(client dimension) 指的是元素内容及其内边距所占据的空间大小,从字面上看,客户区大小就是元素内部的空间大小,因此滚动条占用的空间不计算在内【js高级程序设计文摘】 测试offsetWidth...即使加了box-sizing=border-box也不包括border, 几种情况—— //加了box-sizing:   clientWidth值就是  =  style中的宽度 - border宽度...//有滚动条情况:clientWidth值  =  (style中的宽度 + padding左右值)- 17px(滚动条的宽度值); //滚动条加box-sizing情况:  clientWidth值

    89680

    【Scratch入门到精通】blocks 积木区风格定制

    一,前言 本文主要讲解,怎么定制 scratch-blocks 的积木区风格,如主题色,滚动条,积木工作区边界限制等。并深入源码,探究其根本。...(不包括被积木分类菜单遮住的部分),随着滚动条的滚动,可视工作区中的内容在变化,但是可视工作区整体的宽度/高度是不变的。...内容矩形 当前角色所有工作区中的积木的边界组成的一个矩形的区域。...滚动条位置 示例中把积木区垂直滚动条移动到了工作区左侧,其主要实现方式为重写scratch-blocks/scrollbar.js中的方法,重写后的方法如下。...工作区大小限制 通过重新方法点击查看getContentDimensionsBounded_使用,实现思路:把工作区的上/左边界设置为0,当积木块拖动到可是工作区的上/左边界附近时,不会自动扩大工作区大小

    2.5K20

    关于移动端适配,你必须要知道的

    四、视口 视口( viewport)代表当前可见的计算机图形区域。在 Web浏览器术语中,通常与浏览器窗口相同,但不包括浏览器的 UI, 菜单栏等——即指你正在浏览的文档的那一部分。...所以,布局视口是网页布局的基准窗口,在 PC浏览器上,布局视口就等于当前浏览器的窗口大小(不包括 borders 、 margins、滚动条)。...视觉视口( visual viewport):用户通过屏幕真实看到的区域。 视觉视口默认等于当前浏览器的窗口大小(包括滚动条宽度)。...4.5 移动端适配 为了在移动端让页面获得更好的显示效果,我们必须让布局视口、视觉视口都尽可能等于理想视口。...document.documentElement.clientHeight:获取浏览器布局视口高度,包括内边距,但不包括垂直滚动条、边框和外边距。

    1.9K41

    关于移动端适配,你必须要知道的

    四、视口 视口( viewport)代表当前可见的计算机图形区域。在 Web浏览器术语中,通常与浏览器窗口相同,但不包括浏览器的 UI, 菜单栏等——即指你正在浏览的文档的那一部分。...所以,布局视口是网页布局的基准窗口,在 PC浏览器上,布局视口就等于当前浏览器的窗口大小(不包括 borders 、 margins、滚动条)。...视觉视口( visual viewport):用户通过屏幕真实看到的区域。 视觉视口默认等于当前浏览器的窗口大小(包括滚动条宽度)。...4.5 移动端适配 为了在移动端让页面获得更好的显示效果,我们必须让布局视口、视觉视口都尽可能等于理想视口。...document.documentElement.clientHeight:获取浏览器布局视口高度,包括内边距,但不包括垂直滚动条、边框和外边距。

    2K20

    关于移动端适配,你必须要知道的

    四、视口 视口( viewport)代表当前可见的计算机图形区域。在 Web浏览器术语中,通常与浏览器窗口相同,但不包括浏览器的 UI, 菜单栏等——即指你正在浏览的文档的那一部分。...所以,布局视口是网页布局的基准窗口,在 PC浏览器上,布局视口就等于当前浏览器的窗口大小(不包括 borders 、 margins、滚动条)。...视觉视口( visual viewport):用户通过屏幕真实看到的区域。 视觉视口默认等于当前浏览器的窗口大小(包括滚动条宽度)。...4.5 移动端适配 为了在移动端让页面获得更好的显示效果,我们必须让布局视口、视觉视口都尽可能等于理想视口。...document.documentElement.clientHeight:获取浏览器布局视口高度,包括内边距,但不包括垂直滚动条、边框和外边距。

    2.1K10

    JavaScript代码获取浏览器的可视高、文档滚动高和滚动距离

    JavaScript 代码中,获取的滚动距离( scrollTop )和文档高度( scrollHeight )都是以像素为单位的值。...如果测试时,发现页面有滚动条,但是获取的滚动高度和可视高度一样,要注意看滚动条是不是 iframe 内嵌框架里的,上面可以进行切换,默认的 top 是默认最外层的框架。...下面的表格展示了文档中用到的几种属性含义和用法: 属性 含义 示例 document.documentElement.clientHeight 文档根元素的视口高度,不包括滚动条、边框和外边距。...,不包括滚动条、边框和外边距。...var clientHeight = document.body.clientHeight; window.innerHeight 浏览器窗口的视口高度,不包括浏览器的工具栏、菜单栏等。

    40500

    用Javascript获取页面元素的位置

    制作网页的过程中,你有时候需要知道某个元素在网页上的确切位置。 下面的教程总结了Javascript在网页定位方面的相关知识。 一、网页的大小和浏览器窗口的大小 首先,要明确两个基本概念。...一张网页的全部面积,就是它的大小。通常情况下,网页的大小由内容和CSS样式表决定。 浏览器窗口的大小,则是指在浏览器窗口中看到的那部分网页面积,又叫做viewport(视口)。...很显然,如果网页的内容能够在浏览器窗口中全部显示(也就是不出现滚动条),那么网页的大小和浏览器窗口的大小是相等的。如果不能全部显示,则滚动浏览器窗口,可以显示出网页的各个部分。...这两个属性指元素的内容部分再加上padding的所占据的视觉面积,不包括border和滚动条占用的空间。...五、获取网页元素的相对位置 网页元素的相对位置,指该元素左上角相对于浏览器窗口左上角的坐标。 有了绝对位置以后,获得相对位置就很容易了,只要将绝对坐标减去页面的滚动条滚动的距离就可以了。

    3.3K70

    jquery 与javascript 获取元素尺寸大小的对比

    jquery获取尺寸的方法 width() 方法设置或返回元素的宽度(不包括内边距、边框或外边距)。 height() 方法设置或返回元素的高度(不包括内边距、边框或外边距)。...innerWidth() 方法返回元素的宽度(包括内边距)。 innerHeight() 方法返回元素的高度(包括内边距)。 outerWidth() 方法返回元素的宽度(包括内边距和边框)。...outerHeight() 方法返回元素的高度(包括内边距和边框)。 js获取尺寸的方法 clientWidth 是对象可见的宽度,不包滚动条等边线,会随窗口的显示大小改变。...offsetWidth 是对象的可见宽度,包滚动条等边线,会随窗口的显示大小改变。 Window 尺寸 有三种方法能够确定浏览器窗口的尺寸(浏览器的视口,不包括工具栏和滚动条)。...,如电脑的大小是1920*1080,屏幕高度就是1080) clientWidth = width + padding offsetWidth = width + padding + border 1.

    1.8K30

    【愚公系列】《AIGC辅助软件开发》031-AI辅助解决各种疑难杂症:警惕小众场景下的误导性回答

    例如,使用 `RenderTexture` 绘制的帧缓冲区可能会影响纹理坐标的范围,使其不再是标准的 0 到 1 范围。 ### 3....**视口或画布比例(Viewport or Canvas Scaling)** Pixi.js 渲染时可能会对纹理应用缩放,特别是在视口、画布大小与纹理尺寸不一致的情况下。...然而,在测试阶段,我发现部分品牌(如 vivo 和一加)的安卓浏览器中禁止滚动的效果失效了。 为什么 body.style.overflow = 'hidden' 会在部分安卓浏览器中失效?...**页面高度与视口高度不匹配**: 在一些浏览器中,页面高度可能与视口高度不匹配。...如果 `` 的高度设置为小于视口高度,`overflow: hidden` 将无法阻止滚动,因为页面没有足够的内容生成滚动条。

    11600

    JavaScript 允许自定义对象分析

    JavaScript 中的所有事物都是对象:字符串、数值、数组、函数... 此外,JavaScript 允许自定义对象。...JavaScript 提供多个内建对象,比如 String、Date、Array 等等。 对象只是带有属性和方法的特殊数据类型。 Number 对象 JavaScript 只有一种数字类型。...所有 JavaScript 全局对象、函数以及变量均自动成为 window 对象的成员。 全局变量是 window 对象的属性。 全局函数是 window 对象的方法。...("header"); Window 尺寸 浏览器窗口的尺寸(浏览器的视口,不包括工具栏和滚动条) window.innerHeight - 浏览器窗口的内部高度 window.innerWidth...一些属性: screen.availWidth - 可用的屏幕宽度 screen.availHeight - 可用的屏幕高度 Window Location window.location 对象用于获得当前页面的地址

    38200

    详解各种获取元素宽高及位置的属性

    clientHeight Element.clientWidth 是一个只读属性,对于没有定义 CSS 或者内联布局盒子的元素为0,同时它是元素内部的高度(单位像素),包含内边距,但不包括水平滚动条、边框和外边距...如果元素的文本方向是从右向左(RTL, right-to-left),并且由于内容溢出导致左边出现了一个垂直滚动条,则该属性包括滚动条的宽度。clientLeft 不包括左外边距和左内边距。...innerWidth window.innerWidth 是一个只读属性,表示浏览器视口(viewport)宽度(单位:像素),如果存在垂直滚动条则包括它。...此时,当你从右到左拖动滚动条时,scrollLeft会从0变为负数(这个特性在chrome浏览器中不存在)。...没有垂直滚动条的情况下,scrollHeight值与元素视图填充所有内容所需要的最小值clientHeight相同。包括元素的padding,但不包括元素的border和margin。

    4K80

    DOM 和 BOM 中的各种宽高属性

    先区分一下 window 对象和 document 对象: window 对象表示浏览器中打开的窗口,而 document 对象表示整个 html 文档,它是 window 对象的一部分。...不包括开发者工具、顶部栏、侧边栏、滚动条、边框等不由 HTML 控制的部分 window.outerHeight/window.outerWidth: 返回表示窗口的外部高度/宽度的数字。...宽度,且不包括滚动条。...image.png 例如,上图中的红框是固定的屏幕可视区,而网页视为可以上下拖动的文档,当滚动条下拉的时候,实际上是文档向上拖动,而这个拖动的距离就是 element.scrollTop 2.4 返回对象系列...ev.clientX/ev.clientY: 事件发生时,鼠标点击位置相对于浏览器可视区(不包括滚动条和工具栏)左上角(该点为原点)的坐标。

    1.9K10

    面试官问:如何判断一个元素是否在可视区域?

    通过元素的位置信息和滚动条滚动的高度 在这里,我们先介绍几个元素的位置信息和大小: Element.clientWidth Element.clientWidth 属性表示元素的内部高度,以像素计。...该属性包括内边距 padding,但不包括边框 border、外边距 margin 和水平滚动条(如果有的话)。...❞ window.innerHeight window.innerHeight 属性表示浏览器窗口的视口(viewport)高度(以像素为单位);如果有水平滚动条,也包括滚动条高度。...通过getBoundingClientRect方法来获取元素的位置信息 Element.getBoundingClientRect() 方法返回一个 DOMRect 对象,其提供了元素的大小及其相对于视口的位置...DOMRect 可以理解为将元素看出一个矩形,该对象包含了该矩形的位置、大小信息,可以获得页面中元素的左,上,右和下分别相对浏览器视窗的位置。

    3.2K22

    如何用JavaScript获取网页文档高度?

    今天,我们就结合一个实际业务场景,来看一下如何用JavaScript获取整个文档的高度。 场景介绍 假设你在开发一个电商网站,需要在用户滚动到底部时自动加载更多商品。...offsetHeight:元素的高度,包括内边距和边框。 clientHeight:元素的内部高度(像素),包括内边距但不包括边框、外边距和水平滚动条。...这种方法返回一个包含元素尺寸及其相对于视口位置的对象。...,了解了如何用JavaScript获取整个文档的高度。...希望这些技术能帮助你在日常开发中更加得心应手! 如果你觉得这篇文章对你有帮助,记得点赞、收藏哦~ 你的支持是我继续分享干货的动力!如果你有任何疑问或想了解更多,欢迎在评论区留言,我们一起讨论交流!

    13400
    领券