scrollTop clientTop offsetTop scrollHeight clientHeight clientWidth的差别及使用方法
这几个属性做滚动时会经经常使用到。现总例如以下:
首先定义一个div。样式例如以下:
<style>
*{ margin:0px; padding:0px;}
body{ margin:0px; padding:10px; border:solid 10px #69F;}
.aa{ margin:20px auto 0px; width:100px; height:50px; overflow:auto; border:solid 1px #cccccc; padding:0px 10px;}
</style>
<script type="text/javascript">
window.onload = test;
function test(){
var aa = document.getElementById("aa");
//aa.scrollTop = 60;
//alert(aa.scrollTop); //假设滚动栏不滚动时为0。比方滚动20,则弹出20
//alert(document.body.scrollHeight);//整个屏幕的可显示网页的高度。即一屏的高度 666
//alert(document.body.clientTop); //10 即body的上边框宽度
//alert(aa.style.top); //什么也不弹出 ???
//alert(aa.scrollTop); //60 假设上面aa.scrollTop不设置为60。即滚动栏不滚动时,弹出0
//alert(aa.offsetTop); //40 div偏移顶部窗体的距离
//alert(aa.clientTop); //1 即div的上边框
//alert(aa.scrollHeight); //380 div内容的总高度。即不设高度,让内容自适应得到的高度 + padding
//alert(aa.offsetHeight); //72 div的高度加上上下padding再加上 border 即height + paading + border
//alert(aa.clientHeight); //70 div的高度加上上下padding 即height + padding
//alert(document.body.clientHeight) //112 屏幕中显示内容的高度
//alert(aa.clientWidth); //103 div的宽度减去滚动栏的宽度再加上左右padding
//alert(aa.scrollWidth); //103 div的宽度减去滚动栏的宽度再加上左右padding ,和 aa.clientWidth一样
//alert(aa.offsetWidth); //122 div的宽度加上padding + border 即width + padding + border
//alert(document.body.clientWidth); //1346 整个屏幕的宽度减去body的左右border 即1366 - 20
//alert(document.body.offsetWidth); //1366 整个屏幕的宽度
alert(aa.clientLeft); //1 即div的左边框
alert(aa.scrollLeft); //0 滚动栏没有向右滚动。所以弹出0
alert(aa.offsetLeft); //ie和谷歌为622。火狐为612 即ie和谷歌包括body的左边框,而火狐不包括body的左边框。总之
都是div距窗体左边的距离。
alert(document.body.clientLeft); //10 即body的左边框
}
</script>
div.scrollTop:假设上面aa.scrollTop不设置为60,即滚动栏不滚动时,弹出0
div.offsetTop:div偏移顶部窗体的距离
div.clientTop:div的上边框
div.scrollHeight:div内容的总高度,即不设高度。让内容自适应得到的高度 + padding
div.offsetHeight:整个div加上上下边框的高度再加上border。
即整个div的高度。 即height + padding + border
div.clientHeight:css样式文件中规定的div的高度再加上上下padding。不加上下边框的高度。即height + padding
document.body.clientHeight:屏幕中显示内容的高度 不加上body的上下边框
div.clientWidth:div的宽度减去滚动栏的宽度再加上左右padding
div.scrollWidth:和div.clientWidth一样。
div.offsetWidth:div的宽度加上padding + border 即width + padding + border
document.body.clientWidth:整个屏幕的宽度。即屏幕的宽度的显示分辨率的宽度减去body的左右边框
document.body.offsetWidth:整个屏幕的宽度。即屏幕的宽度的显示分辨率的宽度。1366
div.clientLeft:即div的左边框
div.scrollLeft:滚动栏向右滚动的距离
div.offsetLeft:div距窗体的左边框,ie和谷歌包括body的左边框。而火狐不包括body的左边框。
即在火狐中比在ie和谷歌降低body的左边框
document.body.clientLeft:body的左边框
scrollTop clientTop offsetTop scrollHeight clientHeight clientWidth的差别及使用方法的更多相关文章
- 花点时间搞清top、clientTop、scrollTop、offsetTop
[转贴]花点时间搞清top.clientTop.scrollTop.offsetTop scrollHeight: 获取对象的滚动高度. scrollLeft:设置或获取位于对象左边界和窗口中目前 ...
- JavaScript--clientX,clientY、pageX,pageY、offsetLeft,offsetTop/offsetWidth,offsetHeight、scrollLeft,scrollTop/scrollWidth,scrollHeight、clientHeight,clientWidth区别
/*在事件的内部console.dir(event)*/ /** * 事件对象event * clientX/clientY 获取鼠标基于浏览器窗口(可视区域的坐标位置)全兼容 * * pageX/p ...
- Height、clientHeight、scrollHeight、offsetHeight 、scrollTop、offsetTop
Height 返回当前文档中的<body>元素的高度 clientHeight 对于没有定义CSS或者内联布局盒子的元素为0,否则,它是元素内部的高度(单位像素),包含内边距,但不包括水平 ...
- 关于offsetTop offsetHeight clientHeight scrollHeight scrollTop的区别研究
我是以chrome浏览器做的研究. 先看一段代码: <script> window.addEventListener('DOMContentLoaded',function(){ var ...
- javascript中top、clientTop、scrollTop、offsetTop的讲解(转载加总结)
scrollHeight: 获取对象的滚动高度. scrollLeft:设置或获取位于对象左边界和窗口中目前可见内容的最左端之间的距离 scrollTop:设置或获取位于对象最顶端和窗口中可见内容的最 ...
- html中offsetTop、clientTop、scrollTop、offsetTop
HTML精确定位:scrollLeft,scrollWidth,clientWidth,offsetWidth scrollHeight: 获取对象的滚动高度. scrollLeft:设置或获取位于对 ...
- html中offsetTop、clientTop、scrollTop、offsetTop各属性
HTML精确定位:scrollLeft,scrollWidth,clientWidth,offsetWidth scrollHeight: 获取对象的滚动高度. scrollLeft:设置或获取位于对 ...
- offsetTop、clientTop、scrollTop、offsetTop各属性介绍
HTML精确定位:scrollLeft,scrollWidth,clientWidth,offsetWidth scrollHeight: 获取对象的滚动高度. scrollLeft:设置或获取位于对 ...
- [转]html中offsetTop、clientTop、scrollTop、offsetTop各属性介绍
HTML精确定位:scrollLeft,scrollWidth,clientWidth,offsetWidth scrollHeight: 获取对象的滚动高度. scrollLeft:设置或获取位于对 ...
随机推荐
- 为什么js引入页面后不起作用?
为什么js引入页面后不起作用? 例如常见的报错:Uncaught ReferenceError: $ is not defined. 可能出现这种情况的原因如下: 原因一: 引入js的位置不对,应在使 ...
- Python基础-列表、元祖
1. 列表.元组操作 列表是我们最以后最常用的数据类型之一,通过列表可以对数据实现最方便的存储.修改等操作 定义列表 names = ['Alex',"Tenglan",'Eric ...
- linux题目整理(一)
1.Linux如何挂载windows下的共享目录? mount.cifs /IP地址/server/ /mnt/server -O user=administrator password=yourpa ...
- React+React Router+React-Transition-Group实现页面左右滑动+滚动位置记忆
2018年12月17日更新: 修复在qq浏览器下执行pop跳转时页面错位问题 本文的代码已封装为npm包发布:react-slide-animation-router 在React Router中,想 ...
- python 将windows字体中的汉字生成图片的方法
#encoding: utf-8import osimport pygame chinese_dir = '黑体常规'if not os.path.exists(chinese_dir): os.mk ...
- 51nod 1182 完美字符串【字符串排序+哈希】
1182 完美字符串 题目来源: Facebook Hacker Cup选拔 基准时间限制:1 秒 空间限制:131072 KB 分值: 5 难度:1级算法题 收藏 关注 约翰认为字符串的完美度等 ...
- luogu P3819 松江1843路
题目描述 涞坊路是一条长L米的道路,道路上的坐标范围从0到L,路上有N座房子,第i座房子建在坐标为x[i]的地方,其中住了r[i]人. 松江1843路公交车要在这条路上建一个公交站,市政府希望让最多的 ...
- 2.1多线程(java学习笔记) java中多线程的实现(附静态代理模式)
一.多线程 首先我们要清楚程序.进程.线程的关系. 首先进程从属于程序,线程从属于进程. 程序指计算机执行操作或任务的指令集合,是一个静态的概念. 但我们实际运行程序时,并发程序因为相互制约,具有“执 ...
- BZOJ 3864 Hero Meets Devil
题目大意 给定一个由AGCT组成的串\(t\), 求对于所有的\(L \in [1, |t|]\), 有多少个由AGCT组成的串\(s\)满足\(LCS(s, t) = L\). Solution 传 ...
- 在C#中实现简单的对象池
当我们频繁创建删除大量对象的时候,对象的创建删除所造成的开销就不容小觑了.为了提高性能,我们往往需要实现一个对象池作为Cache:使用对象时,它从池中提取.用完对象时,它放回池中.从而减少创建对象的开 ...