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 相关文章推荐
JS的IE和Firefox兼容性集锦
Dec 11 Javascript
一步一步教你写一个jQuery的插件教程(Plugin)
Sep 03 Javascript
获取数组中最大最小值方法js代码(自写)
Aug 12 Javascript
jqGrid日期格式的判断示例代码(开始日期与结束日期)
Nov 08 Javascript
JavaScript事件处理的方式(三种)
Apr 26 Javascript
基于Bootstrap3表格插件和分页插件实例详解
May 17 Javascript
vue.js中v-on:textInput无法执行事件问题的解决过程
Jul 12 Javascript
node使用Koa2搭建web项目的方法
Oct 17 Javascript
微信小程序动态设置图片大小的方法
Nov 21 Javascript
jQuery中getJSON跨域原理的深入讲解
Sep 02 jQuery
JS实现选项卡插件的两种写法(jQuery和class)
Dec 30 jQuery
js实现简单图片拖拽效果
Feb 22 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获得用户使用的代理服务器ip即真实ip
2006/12/31 PHP
详解WordPress中创建和添加过滤器的相关PHP函数
2015/12/29 PHP
php中如何执行linux命令详解
2018/11/06 PHP
TP5框架使用QueryList采集框架爬小说操作示例
2020/03/26 PHP
HTML 自动伸缩的表格Table js实现
2009/04/01 Javascript
javascript 有趣而诡异的数组
2009/04/06 Javascript
JS中处理与当前时间间隔的函数代码
2012/05/23 Javascript
javascript对下拉列表框(select)的操作实例讲解
2013/11/29 Javascript
中止javascript执行的方法
2014/02/14 Javascript
jquery选择器使用详解
2014/04/08 Javascript
jquery实现的省市区三级联动
2015/04/02 Javascript
jQuery实现ajax调用WCF服务的方法(附带demo下载)
2015/12/04 Javascript
Angularjs全局变量被作用域监听的正确姿势
2016/02/06 Javascript
jQuery+formdata实现上传进度特效遇到的问题
2016/02/24 Javascript
Nodejs下DNS缓存问题浅析
2016/11/16 NodeJs
Web技术实现移动监测的介绍
2017/09/18 Javascript
vue-router 权限控制的示例代码
2017/09/21 Javascript
webpack4.x打包过程详解
2018/07/18 Javascript
详解如何构建Promise队列实现异步函数顺序执行
2018/10/23 Javascript
webpack打包非模块化js的方法
2018/10/24 Javascript
vue 右键菜单插件 简单、可扩展、样式自定义的右键菜单
2018/11/29 Javascript
用python代码做configure文件
2014/07/20 Python
在Python中用has_key()方法查找键是否存在的教程
2015/05/21 Python
Python2.X/Python3.X中urllib库区别讲解
2017/12/19 Python
Python pymongo模块用法示例
2018/03/31 Python
详解Python sys.argv使用方法
2019/05/10 Python
Python如何爬取微信公众号文章和评论(基于 Fiddler 抓包分析)
2019/06/28 Python
使用python 计算百分位数实现数据分箱代码
2020/03/03 Python
Pandas缺失值2种处理方式代码实例
2020/06/13 Python
TensorFlow低版本代码自动升级为1.0版本
2021/02/20 Python
校庆接待方案
2014/03/18 职场文书
学校周年庆活动方案
2014/08/22 职场文书
教师工作表现自我评价
2015/03/05 职场文书
公司催款律师函
2015/05/27 职场文书
教师继续教育反思周记
2015/06/25 职场文书
一篇文章带你了解Python和Java的正则表达式对比
2021/09/15 Python