javascript窗口宽高,鼠标位置,滚动高度(详细解析)


Posted in Javascript onNovember 18, 2013

网页可见区域宽:document.body.clientWidth
网页可见区域高:document.body.clientHeight
网页可见区域宽:document.body.offsetWidth (包括边线的宽)
网页可见区域高:document.body.offsetHeight (包括边线的宽)
网页正文全文宽:document.body.scrollWidth
网页正文全文高:document.body.scrollHeight
网页被卷去的高:document.body.scrollTop
网页被卷去的左:document.body.scrollLeft
网页正文部分上:window.screenTop
网页正文部分左:window.screenLeft
屏幕分辨率的高:window.screen.height
屏幕分辨率的宽:window.screen.width
屏幕可用工作区高度:window.screen.availHeight
屏幕可用工作区宽度:window.screen.availWidth

HTML精确定位:scrollLeft,scrollWidth,clientWidth,offsetWidth
scrollHeight: 获取对象的滚动高度。
scrollLeft:设置或获取位于对象左边界和窗口中目前可见内容的最左端之间的距离
scrollTop:设置或获取位于对象最顶端和窗口中可见内容的最顶端之间的距离
scrollWidth:获取对象的滚动宽度
offsetHeight:获取对象相对于版面或由父坐标 offsetParent 属性指定的父坐标的高度
offsetLeft:获取对象相对于版面或由 offsetParent 属性指定的父坐标的计算左侧位置
offsetTop:获取对象相对于版面或由 offsetTop 属性指定的父坐标的计算顶端位置
event.clientX 相对文档的水平座标
event.clientY 相对文档的垂直座标
event.offsetX 相对容器的水平坐标
event.offsetY 相对容器的垂直坐标
document.documentElement.scrollTop 垂直方向滚动的值
event.clientX+document.documentElement.scrollTop 相对文档的水平座标+垂直方向滚动的量

IE,FireFox 差异如下:

IE6.0、FF1.06+:

clientWidth = width + padding

clientHeight = height + padding

offsetWidth = width + padding + border

offsetHeight = height + padding + border

IE5.0/5.5:
clientWidth = width - border

clientHeight = height - border

offsetWidth = width

offsetHeight = height

(需要提一下:CSS中的margin属性,与clientWidth、offsetWidth、clientHeight、offsetHeight均无关)

-------------------

本节代码主要使用了Document对象关于窗口的一些属性,这些属性的主要功能和用法如下。

要得到窗口的尺寸,对于不同的浏览器,需要使用不同的属性和方法:

若要检测窗口的真实尺寸,在Netscape下需要使用Window的属性;

在IE下需要深入Document内部对body进行检测;

在DOM环境下,若要得到窗口的尺寸,需要注意根元素的尺寸,而不是元素。

Window对象的innerWidth属性包含当前窗口的内部宽度。

Window对象的innerHeight属性包含当前窗口的内部高度。

Document对象的body属性对应HTML文档的标签。

Document对象的documentElement属性则表示HTML文档的根节点。

document.body.clientHeight表示HTML文档所在窗口的当前高度。

document.body. clientWidth表示HTML文档所在窗口的当前宽度。

实现代码:

<!DOCTYPE html >
<html>
<head>
 <title>请调整浏览器窗口</title>
 <meta http-equiv="content-type" content="text/html; charset=gb2312">
</head>
<body>
 <h2 align="center">请调整浏览器窗口大小</h2>
 <form action="#" method="get" name="form1" id="form1">
  <!--显示浏览器窗口的实际尺寸-->
  <p>浏览器窗口 的 实际高度: <input type="text" name="availHeight" size="4"></p>
  <p>浏览器窗口 的 实际宽度: <input type="text" name="availWidth" size="4"></p>
 </form>
 <script type="text/javascript">
   var winWidth = 0;   
   var winHeight = 0;   
   function findDimensions() //函数:获取尺寸   
   {   
    //获取窗口宽度   
    if (window.innerWidth)   winWidth = window.innerWidth;   
    else if ((document.body) && (document.body.clientWidth))   winWidth = document.body.clientWidth;   
    //获取窗口高度   
    if (window.innerHeight)   winHeight = window.innerHeight;   
    else if ((document.body) && (document.body.clientHeight))   winHeight = document.body.clientHeight;   
    //通过深入Document内部对body进行检测,获取窗口大小   
    if (document.documentElement  && document.documentElement.clientHeight && document.documentElement.clientWidth)   {   
     winHeight = document.documentElement.clientHeight;   
     winWidth = document.documentElement.clientWidth;   
    }   
    //结果输出至两个文本框   
    document.form1.availHeight.value= winHeight;   
    document.form1.availWidth.value= winWidth;   
   }   
   findDimensions();   
   //调用函数,获取数值   
   window.onresize=findDimensions;
 </script>
</body>
</html>

源程序解读

(1)程序首先建立一个表单,包含两个文本框,用于显示窗口当前的宽度和高度,并且,其数值会随窗口大小的改变而变化。

(2)在随后的JavaScript代码中,首先定义了两个变量winWidth和winHeight,用于保存窗口的高度值和宽度值。

(3)然后,在函数findDimensions ( )中,使用window.innerHeight和window.innerWidth得到窗口的高度和宽度,并将二者保存在前述两个变量中。

(4)再通过深入Document内部对body进行检测,获取窗口大小,并存储在前述两个变量中。

(5)在函数的最后,通过按名称访问表单元素,结果输出至两个文本框。

(6)在JavaScript代码的最后,通过调用findDimensions ( )函数,完成整个操作。

Javascript 相关文章推荐
Javascript中各种trim的实现详细解析
Dec 10 Javascript
jquery中each遍历对象和数组示例
Aug 05 Javascript
JavaScript中用toString()方法返回时间为字符串
Jun 12 Javascript
通用无限极下拉菜单的实现代码
May 31 Javascript
JavaScript判断是否是微信浏览器
Jun 13 Javascript
深入浅析JavaScript中的3DES
Aug 24 Javascript
AngularJS解决ng界面长表达式(ui-set)的方法分析
Nov 07 Javascript
Node.js中看JavaScript的引用
Apr 22 Javascript
JS在if中的强制类型转换方式
Jul 15 Javascript
node中的密码安全(加密)
Sep 17 Javascript
详解Vue 项目中的几个实用组件(ts)
Oct 29 Javascript
Javascript异步执行不按顺序解决方案
Apr 30 Javascript
简单的代码实现jquery定时器
Nov 17 #Javascript
禁止空格提交表单的js代码
Nov 17 #Javascript
jQuery实现点击文本框弹出热门标签的提示效果
Nov 17 #Javascript
ExtJS[Desktop]实现图标换行示例代码
Nov 17 #Javascript
javascript:void(0)是什么意思示例介绍
Nov 17 #Javascript
巧用js提交表单轻松解决一个页面有多个提交按钮
Nov 17 #Javascript
setInterval()和setTimeout()的用法和区别示例介绍
Nov 17 #Javascript
You might like
php获取当前时间的毫秒数的方法
2014/01/26 PHP
php判断GIF图片是否为动画的方法
2020/09/04 PHP
教你如何开启shopnc b2b2c 伪静态
2014/10/21 PHP
Yii净化器CHtmlPurifier用法示例(过滤不良代码)
2016/07/15 PHP
Laravel中基于Artisan View扩展包创建及删除应用视图文件的方法
2016/10/08 PHP
js控制table合并具体实现
2014/02/20 Javascript
JQuery动画animate的stop方法使用详解
2014/05/09 Javascript
jquery仿百度经验滑动切换浏览效果
2015/04/14 Javascript
谈谈我对JavaScript原型和闭包系列理解(随手笔记9)
2015/12/24 Javascript
使用jquery获取url以及jquery获取url参数的实现方法
2016/05/25 Javascript
jQuery中的一些小技巧
2017/01/18 Javascript
js实现悬浮窗效果(支持拖动)
2017/03/09 Javascript
JSON的parse()方法介绍
2019/01/31 Javascript
vue里的data要用return返回的原因浅析
2019/05/28 Javascript
微信小程序点餐系统开发常见问题汇总
2019/08/06 Javascript
JavaScript对象访问器Getter及Setter原理解析
2020/12/08 Javascript
[42:25]2018DOTA2亚洲邀请赛 4.5 淘汰赛 LGD vs Liquid 第三场
2018/04/06 DOTA
python装饰器使用方法实例
2013/11/21 Python
Django查找网站项目根目录和对正则表达式的支持
2015/07/15 Python
Python Queue模块详细介绍及实例
2016/12/27 Python
[原创]教女朋友学Python3(二)简单的输入输出及内置函数查看
2017/11/30 Python
Python爬虫实现(伪)球迷速成
2018/06/10 Python
python自动化测试之异常及日志操作实例分析
2019/11/09 Python
英国高级百货公司:Harvey Nichols
2017/01/29 全球购物
丝芙兰香港官网:Sephora香港
2018/03/13 全球购物
英国创新设计文具、卡片和礼品包装网站:Paperchase
2018/07/14 全球购物
美国领先的在线旅游网站:Orbitz
2018/11/05 全球购物
Linux操作面试题
2015/02/11 面试题
酒店实习个人鉴定
2013/12/07 职场文书
酒店个人培训自我鉴定
2013/12/11 职场文书
初二政治教学反思
2014/01/12 职场文书
新郎婚宴答谢词
2014/01/19 职场文书
旗帜观后感
2015/06/08 职场文书
2016读书月活动心得体会
2016/01/14 职场文书
Python实战之大鱼吃小鱼游戏的实现
2022/04/01 Python
mysql使用instr达到in(字符串)的效果
2022/04/03 MySQL