【问题标题】:Viewport vs Window Vs Document视口 vs 窗口 vs 文档
【发布时间】:2016-02-19 15:03:28
【问题描述】:

在下面的代码中,

document.documentElement.clientWidth
   1349
document.documentElement.clientHeight
   363
window.innerWidth
   1366
window.innerHeight
   363
window.screen.height
   768
window.screen.width
   1366

所以,我的桌面屏幕是 1366 像素宽和 768 像素高。

我知道了,

使用document.documentElement.clientWidthdocument.documentElement.clientHeight 引用视口尺寸。

使用window.innerWidthwindow.innerHeight 引用窗口尺寸。

1) 视口和文档有什么区别?

2) window.onload Vs document.onload 什么时候被调用?

【问题讨论】:

标签: javascript html css dom


【解决方案1】:

当您的页面大于屏幕时,情况就不同了。

视口是您可以看到事物的矩形区域。文档可以比这个大,如果是这样,您会看到滚动条。

关于你的第二个问题:window.onload vs document.onload

这是一个摘要。

视口:这是您的设备屏幕。

窗口:这是您的浏览器窗口。窗口可以和视口一样大,也可以更小。

文档:是网页。它可以比视口大,甚至比窗口大。

注意事项: 有些网站不是为手机创建的。因此,网页/文档比移动视口大得多,您必须滑动才能看到溢出屏幕的部分。 在桌面上,您可以将浏览器的窗口缩小或与视口/监视器相同。

【讨论】:

  • 如果,Viewport是你可以看到事物的矩形区域,那么,viewport和window有什么区别呢?
  • @overexchange 窗口可能包含除视口之外的许多额外的东西,例如滚动条、导航栏等。视口只是显示文档内容的区域。通过比较window.innerWidthwindow.outerWidth,您可能会发现差异。
  • 这只是设备的宽度和高度。 screen.widthscreen.height
  • @overexchange:不,不一定——浏览器窗口不必最大化。
  • 在我的场景中,1) window.innerHeight=363px 这是css像素高度。 2) window.screen.height=768px 是设备屏幕高度。 window.outerHeight=728px 是什么?因为innerHeight 在放大/缩小时会发生变化。
【解决方案2】:

文档:

document 是 JavaScript 中的一个对象,代表页面的 DOM(文档对象模型)。文档对象是整个页面结构(所有 HTML 元素等)的表示,因此:

document.documentElement.clientHeight
document.documentElement.clientWidth

应该给你<html>元素的宽度

视口:

使用这个:

window.innerWidth
window.innerHeight

为您提供浏览器内窗口的实际可见(物理)尺寸。

window.onLoad

window.onload (a.k.a body.onload) 在主 HTML、所有 CSS、所有图像和所有其他资源都已加载和渲染后被触发。

document.onLoad

在 DOM 准备就绪时调用,可以在加载图像和其他外部内容之前调用。

【讨论】:

  • window.innerWidth 包括滚动条
  • 视口不等于 window.innerWidth 或高度。为了在 CSS 像素中获取视口,请始终使用 document.documentElement.clientWidth 它在 CSS 像素中等于 100vw。
【解决方案3】:

我认为MDN here 提供了最好的解释,我在下面复制/粘贴了一些重要部分:

文档元素的Element.clientWidth 是文档的内部宽度,以 CSS 像素为单位,包括填充(但不包括边框、边距或垂直滚动​​条,如果存在)。 这是视口宽度。

Window.innerWidth 是浏览器窗口视口的宽度(以 CSS 像素为单位),包括(如果呈现)垂直滚动条。

Window.outerWidth 是浏览器窗口外部的宽度,包括所有窗口镶边。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-10-08
    • 2017-01-16
    • 2020-07-20
    • 2013-11-27
    • 2011-09-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多