返回

JS之获取屏幕宽高、浏览器宽高、网页内容宽高

前端

前言

平时在写界面获取屏幕、浏览器宽高时,经常会搞不清楚window、body、screen中的clientWidth、offsetWidth、width的区别,今天做一个总结帮助自己理解。

window

window是浏览器中JavaScript的顶层对象,所有全局变量与函数都是window对象或者window对象的属性或方法。

window对象有以下几个属性:

  • innerWidth :浏览器窗口的内部宽度,不包括工具栏和滚动条。
  • innerHeight :浏览器窗口的内部高度,不包括工具栏和滚动条。
  • outerWidth :浏览器窗口的外部宽度,包括工具栏和滚动条。
  • outerHeight :浏览器窗口的外部高度,包括工具栏和滚动条。
  • screenX :浏览器窗口在屏幕上的水平位置。
  • screenY :浏览器窗口在屏幕上的垂直位置。

window对象也有以下几个方法:

  • alert() :显示一个警告对话框。
  • confirm() :显示一个确认对话框。
  • prompt() :显示一个带输入框的对话框。
  • open() :打开一个新的窗口或选项卡。
  • close() :关闭当前窗口或选项卡。

body

body元素是HTML文档的主体部分,它包含了网页的主要内容。

body元素有以下几个属性:

  • clientWidth :body元素的内部宽度,不包括滚动条。
  • clientHeight :body元素的内部高度,不包括滚动条。
  • scrollWidth :body元素的滚动宽度,包括隐藏的内容。
  • scrollHeight :body元素的滚动高度,包括隐藏的内容。

screen

screen对象表示显示器屏幕。

screen对象有以下几个属性:

  • width :屏幕的宽度。
  • height :屏幕的高度。
  • availWidth :屏幕的可用宽度,不包括任务栏和工具栏。
  • availHeight :屏幕的可用高度,不包括任务栏和工具栏。
  • colorDepth :屏幕的颜色深度。
  • pixelDepth :屏幕的像素深度。

document

document对象表示当前的HTML文档。

document对象有以下几个属性:

  • documentElement :HTML文档的根元素,通常是元素。
  • body :HTML文档的主体部分,包含了网页的主要内容。
  • head :HTML文档的头部,包含了元数据和脚本。
  • title :HTML文档的标题。
  • URL :HTML文档的URL。

clientWidth、offsetWidth和width的区别

clientWidth、offsetWidth和width都是元素的宽度属性,但它们的值并不相同。

  • clientWidth :元素的内部宽度,不包括边框、内边距和滚动条。
  • offsetWidth :元素的外部宽度,包括边框和内边距,但不包括滚动条。
  • width :元素的总宽度,包括边框、内边距和滚动条。

示例

以下是一些使用clientWidth、offsetWidth和width属性的示例代码:

// 获取浏览器窗口的内部宽度
console.log(window.innerWidth);

// 获取浏览器窗口的内部高度
console.log(window.innerHeight);

// 获取body元素的内部宽度
console.log(document.body.clientWidth);

// 获取body元素的内部高度
console.log(document.body.clientHeight);

// 获取屏幕的宽度
console.log(screen.width);

// 获取屏幕的高度
console.log(screen.height);

// 获取documentElement元素的宽度
console.log(document.documentElement.clientWidth);

// 获取documentElement元素的高度
console.log(document.documentElement.clientHeight);

总结

window、body、screen和document对象都是JavaScript中常用的对象,它们都有自己的属性和方法。clientWidth、offsetWidth和width都是元素的宽度属性,但它们的值并不相同。