js中的scroll和offset 使用比较的实例与分析


Posted in Javascript onSeptember 29, 2013

1.offsetTop     :
当前对象到其上级层顶部的距离.
不能对其进行赋值.设置对象到页面顶部的距离请用style.top属性.

2.offsetLeft    :
当前对象到其上级层左边的距离.
不能对其进行赋值.设置对象到页面左部的距离请用style.left属性.

3.offsetWidth   :
当前对象的宽度.
与style.width属性的区别在于:如对象的宽度设定值为百分比宽度,则无论页面变大还是变小,style.width都返回此百分比,而offsetWidth则返回在不同页面中对象的宽度值而不是百分比值

4.offsetHeight :
与style.height属性的区别在于:如对象的宽度设定值为百分比高度,则无论页面变大还是变小,style.height都返回此百分比,而offsetHeight则返回在不同页面中对象的高度值而不是百分比值

5.offsetParent  :
当前对象的上级层对象.
注意.如果对象是包括在一个DIV中时,此DIV不会被当做是此对象的上级层,(即对象的上级层会跳过DIV对象)上级层是Table时则不会有问题.
利用这个属性,可以得到当前对象在不同大小的页面中的绝对位置.

6.scrollLeft    :
对象的最左边到对象在当前窗口显示的范围内的左边的距离.
即是在出现了横向滚动条的情况下,滚动条拉动的距离.

7.scrollTop
对象的最顶部到对象在当前窗口显示的范围内的顶边的距离.
即是在出现了纵向滚动条的情况下,滚动条拉动的距离.

 

【代码】测试offsetTop和scrollTop的html代码

<html>
<head>
<meta content="text/html;charset=utf-8" http-equiv="content-type"/>

<script type="text/javascript">
    function test1(){
          var div = document.getElementById("div1");
          document.getElementById("li1").innerHTML = (div.offsetTop)+"px";//div1距离屏幕顶部的距离
          document.getElementById("li2").innerHTML = (div.offsetLeft)+"px";//div1距离屏幕左部的距离
          document.getElementById("li3").innerHTML = (div.scrollTop)+"px";//div1纵向滚动条滚动的距离
          document.getElementById("li4").innerHTML = (div.scrollLeft)+"px";//div1横向滚动条滚动的距离
     }
      function test2(){
          var div = document.getElementById("div2");
          document.getElementById("li5").innerHTML = (div.offsetTop)+"px";//div2距离屏幕顶部的距离
          document.getElementById("li6").innerHTML = (div.offsetLeft)+"px";//div2距离屏幕左部的距离
          document.getElementById("li7").innerHTML = (div.scrollTop)+"px";//div2纵向滚动条滚动的距离
          document.getElementById("li8").innerHTML = (div.scrollLeft)+"px";//div2横向滚动条滚动的距离
     }
     function test3(){
          var div = document.getElementById("div3");
          document.getElementById("li9").innerHTML = (div.offsetTop)+"px";//div3距离屏幕顶部的距离
          document.getElementById("li10").innerHTML = (div.offsetLeft)+"px";//div3距离屏幕左部的距离
          document.getElementById("li11").innerHTML = (div.scrollTop)+"px";//div3纵向滚动条滚动的距离
          document.getElementById("li12").innerHTML = (div.scrollLeft)+"px";//div3横向滚动条滚动的距离
     }
</script>
</head>
<body style="border: 10px solid red;padding:0px 0px;margin:5px 10px">
    <div>
    <DIV style="width:70%;border-right:1px dashed red;float:left;">
        <div style="float:left;">
            <div id="div1" style="border:5px blue solid;height:400px;width:200px;overflow:auto">
                <div style="height: 500px;width:400px">this is test!</div>
            </div>
            <input type="button" value="CLICK 1" onclick="test1()" style="border: 1px solid purple;height: 25px;"/>
        </div>
        <div>
            <div id="div2" style="border:5px solid yellow;height:400px;width:200px;overflow:auto">
                <div style="height: 500px;width:400px">this is test!</div>
            </div>
            <input type="button" value="CLICK 2" onclick="test2()"style="border: 1px solid purple;height: 25px;"/>
        </div>
        <div style="clear: both;">
            <div id="div3" style="border:5px solid #0080C0;height:400px;width:200px;overflow:auto;clear:both;">
                <div style="height: 500px;width:400px">this is test!</div>
            </div>
            <input type="button" value="CLICK 3" onclick="test3()"style="border: 1px solid purple;height: 25px;"/>
        </div>
    </DIV>
    <DIV style="width: 20%;float:right;margin-right:100px">
        <ul>click1结果:
            <li id="li1"></li>
            <li id="li2"></li>
            <li id="li3"></li>
            <li id="li4"></li>
        </ul>
        <ul>click2结果:
            <li id="li5"></li>
            <li id="li6"></li>
            <li id="li7"></li>
            <li id="li8"></li>
        </ul>
        <ul>click3结果:
            <li id="li9"></li>
            <li id="li10"></li>
            <li id="li11"></li>
            <li id="li12"></li>
        </ul>
    </DIV>
    </div>
</body>
</html>

上面就是自己测试用的代码,可以直接拿来测试。
Javascript 相关文章推荐
jquery右下角弹出提示框示例代码
Oct 08 Javascript
jquery.autocomplete修改实现键盘上下键自动填充示例
Nov 19 Javascript
JS中parseInt()和map()用法分析
Dec 16 Javascript
bootstrap weebox 支持ajax的模态弹出框
Feb 23 Javascript
基于vue.js实现侧边菜单栏
Mar 20 Javascript
JS表格组件神器bootstrap table使用指南详解
Apr 12 Javascript
快速理解 JavaScript 中的 LHS 和 RHS 查询的用法
Aug 24 Javascript
angularJs自定义过滤器实现手机号信息隐藏的方法
Oct 08 Javascript
vue+iview动态渲染表格详解
Mar 19 Javascript
JS实现长图上下滚动效果
Mar 19 Javascript
JavaScript实现简单日历效果
Sep 11 Javascript
js删除对象中的某一个字段的方法实现
Jan 11 Javascript
jquery判断RadioButtonList和RadioButton中是否有选中项示例
Sep 29 #Javascript
基于jquery实现一张图片点击鼠标放大再点缩小
Sep 29 #Javascript
getJSON调用后台json数据时函数被调用两次的原因猜想
Sep 29 #Javascript
jquery事件与函数的使用介绍
Sep 29 #Javascript
Jquery选中或取消radio示例
Sep 29 #Javascript
JS中引用百度地图并将百度地图的logo和信息去掉
Sep 29 #Javascript
目前流行的JavaScript库的介绍及对比
Sep 29 #Javascript
You might like
Smarty foreach控制循环次数的实现详解
2013/07/03 PHP
div li的多行多列 无刷新分页示例代码
2013/10/16 PHP
php+mysqli使用预处理技术进行数据库查询的方法
2015/01/28 PHP
用PHP代码给图片加水印
2015/07/01 PHP
PHP使用Pthread实现的多线程操作实例
2015/11/14 PHP
php 二维数组时间排序实现代码
2016/11/19 PHP
jquery ajax提交整个表单元素的快捷办法
2013/03/27 Javascript
求数组最大最小值方法适用于任何数组
2013/08/16 Javascript
javascript中tostring()和valueof()的用法及两者的区别
2015/11/16 Javascript
基于jquery实现图片放大功能
2016/05/07 Javascript
微信JS-SDK坐标位置如何转换为百度地图坐标
2016/07/04 Javascript
深入浅出讲解ES6的解构
2016/08/03 Javascript
浅析jQuery操作select控件的取值和设值
2016/12/07 Javascript
前端编码规范(3)JavaScript 开发规范
2017/01/21 Javascript
微信小程序实现YDUI的ScrollNav组件
2018/02/02 Javascript
Javascript实现打鼓效果
2021/01/29 Javascript
python处理图片之PIL模块简单使用方法
2015/05/11 Python
Python实现命令行通讯录实例教程
2016/08/18 Python
Python书单 不将就
2017/07/11 Python
Django 实现图片上传和显示过程详解
2019/07/18 Python
利用 Flask 动态展示 Pyecharts 图表数据方法小结
2019/09/04 Python
利用python画出AUC曲线的实例
2020/02/28 Python
Django 解决阿里云部署同步数据库报错的问题
2020/05/14 Python
Travelstart沙特阿拉伯:廉价航班、豪华酒店和实惠的汽车租赁优惠
2019/04/06 全球购物
世界各地的当地人的食物体验:Eatwith
2019/07/26 全球购物
现代化办公人员工作的自我评价
2013/10/16 职场文书
自主招生自荐信格式
2013/12/03 职场文书
高中生期末评语
2014/01/28 职场文书
合作经营协议书范本
2014/04/17 职场文书
预备党员自我批评思想汇报
2014/10/10 职场文书
教师批评与自我批评心得体会
2014/10/16 职场文书
三方协议书
2015/01/27 职场文书
文书工作总结(范文)
2019/07/11 职场文书
使用golang编写一个并发工作队列
2021/05/08 Golang
Python如何解决secure_filename对中文不支持问题
2021/07/16 Python
 分享一个Python 遇到数据库超好用的模块
2022/04/06 Python