js中scrollHeight,scrollWidth,scrollLeft,scrolltop等差别介绍


Posted in Javascript onMay 16, 2012
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title>js位子表示</title> 
<script type="text/javascript"> 
function testClick(oDiv){ 
var oDivId=document.getElementById(oDiv); 
alert("offsetHeight:"+oDivId.offsetHeight+"\n offsetWidth:"+oDivId.offsetWidth+"\n offsetLeft:"+oDivId.offsetLeft+"\n offsetRight:"+oDivId.offsetLeft+"\n offsetTop:"+oDivId.offsetTop 
+"\n offsetParent:"+oDivId.offsetParent +"\n scrollHeight:"+oDivId.scrollHeight+"\n scrollWidth:"+oDivId.scrollWidth+"\n scrollTop:"+oDivId.scrollTop+"\n scrollLeft:"+oDivId.scrollLeft+"\n " ); 
} 
</script> 
</head> 
<body style="margin:0; padding:0;"> 
<div style="width:300px; height:300px; padding:2px; margin:3px;"> 
<div id="t1" style="margin:1px; padding:4px ; border:3px solid #eeeeee; width:100px; height:200px; overflow:scroll; cursor:pointer;" onclick="testClick('t1')" > 
一般的通过mousedown、mousemove、mouseup等打造的拖动,仅仅在普通的键盘+鼠标的电脑设备上可以工作。而到了ios设备上(iphone itouch ipad),则不能工作了。最近因为做个东西,需要支持ios设备,所以只好看了下webkit浏览器的触摸事件。 
其实也很简单,对应mousedown、mousemove、mouseup的触摸事件分别是touchstart、touchmove、touchend。为了写个demo,花了不少的时间,所以为了节省时间,我文章里就不多说了,仅贴一下相关代码。 
</div> 
</div> 
</body> 
</html>

ie(ie9,chrome,ff基本一致)中:
offsetHeight(返回元素的高度和宽度,以像素为单位,包含内边距):
200+4+4+3+3=214(自身200的高度+上下各为4的内边距+上下的各为3的border,注意不包括外边距)
offsetWidth(返回元素的高度和宽度,以像素为单位,包含内边距):、
100+3+3+4+4=114 同上
offsetLeft(返回当前元素的左边界到它的包含元素的左边界的偏移量,以像素为单位):
2+3+1=6(ie6下为3)(父级div的内左边距2+父级div外左边距+3+子div左外边距+1,注意这里子div内边距是不会影响到offsetLeft)
没有offsetRight的概念。
offsetTop(返回当前元素的上边界到它的包含元素的上边界的偏移量,以像素为单位。)
2+3+1=6(ie6下为2)道理和offsetLeft一样
scrollHeight(返回元素的完整的高度和宽度,以像素为单位。当一个元素拥有滚动条时(比如由于 CSS 的 overflow:scroll 属性,如果为hidden,得到的只是能显示文字所能看到的高度)
474(div的实际的高度,由里面的文字来决定,overflow:scroll )
如果overflow:hidden,就只有390,其它的被隐藏了
如果去调overflow,就是390,为什么 overflow:scroll 却等于474呢?因为还包含了滚动条的高度
scrollWidth:(和scrollheight道理一样)
overflow:hidden值为108(子div实际的宽度)
overflow:scroll 值为90(这里为什么会这样?难道不包括滚动条的宽度?)
去掉overflow,值为108
scrolltop(返回已经滚动到元素的左边界或上边界的像素数。只有在元素有滚动条的时候,例如,元素的 CSS overflow 属性设置为 auto 的时候,这些像素才有用。这些属性也只在文档的 <body> 或 <html> 标记上定义(这和浏览器有关),并且一起来制定滚动文档的位置。注意,这些属性并不会指定一个 <iframe> 标记的滚动量)
如果不拖动滚动条,默认的值为0;
scrollLeft同上
Javascript 相关文章推荐
Javascript 复制数组实现代码
Nov 26 Javascript
js将字符串转成正则表达式的实现方法
Nov 13 Javascript
让javascript加载速度倍增的方法(解决JS加载速度慢的问题)
Dec 12 Javascript
60个很实用的jQuery代码开发技巧收集
Dec 15 Javascript
javascript模拟评分控件实现方法
May 13 Javascript
jQuery实现仿新浪微博浮动的消息提示框(可智能定位)
Oct 10 Javascript
原生js页面滚动延迟加载图片
Dec 20 Javascript
jQuery simplePage+AJAX plus分页插件用法实例
Feb 17 Javascript
详解jQuery中的deferred对象的使用(一)
May 27 Javascript
js事件源window.event.srcElement兼容性写法(详解)
Nov 25 Javascript
vue 插件的方法代码详解
Jun 06 Javascript
js实现弹框效果
Mar 24 Javascript
JS字符串累加Array不一定比字符串累加快(根据电脑配置)
May 14 #Javascript
JQuery 返回布尔值Is()条件判断方法代码
May 14 #Javascript
JQuery选择器特辑 详细小结
May 14 #Javascript
IE6背景图片不缓存问题解决方案及图片使用策略多个方法小结
May 14 #Javascript
js split 的用法和定义 js split分割字符串成数组的实例代码
May 13 #Javascript
jQuery循环滚动展示代码 可应用到文字和图片上
May 11 #Javascript
基于jQuery的公告无限循环滚动实现代码
May 11 #Javascript
You might like
php中如何同时使用session和cookie来保存用户登录信息
2013/07/05 PHP
Laravel Intervention/image图片处理扩展包的安装、使用与可能遇到的坑详解
2017/11/14 PHP
Yii框架日志记录Logging操作示例
2018/07/12 PHP
Javascript模块模式分析
2008/05/16 Javascript
用Javascript评估用户输入密码的强度实现代码
2011/11/30 Javascript
JQuery slideshow的一个小问题(如何发现及解决过程)
2013/02/06 Javascript
博客侧边栏模块跟随滚动条滑动固定效果的实现方法(js+jquery等)
2013/03/24 Javascript
jQuery数据缓存功能的实现思路及简单模拟
2013/05/27 Javascript
JS代码判断IE6,IE7,IE8,IE9的函数代码
2013/08/02 Javascript
JavaScript加强之自定义event事件
2013/09/21 Javascript
Jquery validation remote 验证的缓存问题解决方法
2014/03/25 Javascript
js实现3D图片逐张轮播幻灯片特效代码分享
2015/09/09 Javascript
js图片上传前预览功能(兼容所有浏览器)
2016/08/24 Javascript
详解从新建vue项目到引入组件Element的方法
2017/08/29 Javascript
微信小程序适配iphoneX的实现方法
2018/09/18 Javascript
JS倒计时两种实现方式代码实例
2020/07/27 Javascript
[03:12]2016完美“圣”典风云人物:单车专访
2016/12/02 DOTA
Python入门_浅谈逻辑判断与运算符
2017/05/16 Python
python http接口自动化脚本详解
2018/01/02 Python
python: 判断tuple、list、dict是否为空的方法
2018/10/22 Python
Python调用百度根据经纬度查询地址的示例代码
2019/07/07 Python
pycharm重命名文件的方法步骤
2019/07/29 Python
python3的url编码和解码,自定义gbk、utf-8的例子
2019/08/22 Python
Pandas数据离散化原理及实例解析
2019/11/16 Python
python实现从ftp上下载文件的实例方法
2020/07/19 Python
python使用matplotlib:subplot绘制多个子图的示例
2020/09/24 Python
使用html5 canvas 画时钟代码实例分享
2015/11/11 HTML / CSS
html table呈现个人简历以及单元格宽度失效的问题解决
2021/01/22 HTML / CSS
法国一家芭蕾舞鞋公司:Repetto
2018/11/12 全球购物
香港中原电器网上商店:Chung Yuen
2019/06/26 全球购物
个人自我鉴定
2013/11/07 职场文书
体育教学随笔感言
2014/02/24 职场文书
合作意向协议书
2015/01/29 职场文书
行政经理岗位职责
2015/04/15 职场文书
六一儿童节主持开场白
2015/05/28 职场文书
银行中层干部培训心得体会
2016/01/11 职场文书