scrollTop与offsetTop研究

简介: 虽然我是做后台出身的,但最近心血来潮越来越关注前台技术了^_^,前二天看了“司徒正美”先生的图片无缝滚动分析后,对于scrollTop和offsetTop这二个以前一直没搞太明白的属性研究了一番,大致弄明白了,贴在这里备份,测试代码如下:doctype html>scrollTop study.
虽然我是做后台出身的,但最近心血来潮越来越关注前台技术了^_^,前二天看了“司徒正美”先生的图片无缝滚动分析后,对于scrollTop和offsetTop这二个以前一直没搞太明白的属性研究了一番,大致弄明白了,贴在这里备份,测试代码如下:
<! doctype html >
< title > scrollTop study </ title >
img_405b18b4b6584ae338e0f6ecaf736533.gifimg_1c53668bcee393edac0d7b3b3daff1ae.gif
< style  type ="text/css" >
img_2887d91d0594ef8793c1db92b8a1d545.gifimg_7a2b9a960ee9a98bfd25d306d55009f8.gif.outer
{}{
img_2887d91d0594ef8793c1db92b8a1d545.gifimg_7a2b9a960ee9a98bfd25d306d55009f8.gif    position
:relative; /**//*为了兼容IE8,FF3.5,Chrome2,本例中如不加这一行,item2.offsetTop会以body为计算基准*/
    width
:100px;
    height
:100px;
    border
:15px solid #ccc;
    overflow
:hidden;
    line-height
:18px;
}


img_2887d91d0594ef8793c1db92b8a1d545.gifimg_7a2b9a960ee9a98bfd25d306d55009f8.gif.item
{}{
    height
:60px;
}


img_2887d91d0594ef8793c1db92b8a1d545.gifimg_7a2b9a960ee9a98bfd25d306d55009f8.gif.bgColorRed
{}{
    background-Color
:red;
}


img_2887d91d0594ef8793c1db92b8a1d545.gifimg_7a2b9a960ee9a98bfd25d306d55009f8.gif.bgColorGreen
{}{
    background-Color
:green;
}

</ style >

< div  class ="outer"  id ="container" >
    container
    
< div  class ="item bgColorRed" > item1 </ div >
    
< div  class ="item bgColorGreen"  id ="item2" > item2 </ div >
</ div >
< br />
< button  id ="btnTest"   > Test </ button >   < span  id ="result" ></ span >

img_405b18b4b6584ae338e0f6ecaf736533.gifimg_1c53668bcee393edac0d7b3b3daff1ae.gif
< script  type ="text/javascript" >
    
var btn = document.getElementById("btnTest");
img_2887d91d0594ef8793c1db92b8a1d545.gifimg_7a2b9a960ee9a98bfd25d306d55009f8.gif    btn.onclick 
= function(){
        
var outer =  document.getElementById("container");
        
var item2 = document.getElementById("item2");
        
var result = document.getElementById("result");
        outer.scrollTop 
++ ;        
        result.innerHTML 
= "container.scrollTop=" + outer.scrollTop + ",item2.offsetTop=" + item2.offsetTop;
    }

</ script >

代码很简单,一个100px的正方形div,border边框值为15px,overflow设置为hidden(隐藏),然后里面放了二个100*60的子div,显然60*2=120px,大于最外层容器的100px高度,所以会有一部分被截掉,为了更形象,二个子div上面还放置了一行文字,高度为18px,点击按钮后,最下面绿色子div的scrollTop递增加1(即位置不断升高,直至完全呈现出来)

为方便理解,还画了一个分析图:(值得注意的是offsetTop属性在ie8的非兼容模式下,还要加上Border的高度)

目录
相关文章
|
8月前
window.scrollTop 不生效的原因,如何解决
window.scrollTop 不生效的原因,如何解决
252 0
|
5月前
|
JavaScript 前端开发
height、clientHeight、scrollHeight、offsetHeight区别
height、clientHeight、scrollHeight、offsetHeight区别
height、clientHeight、scrollHeight、offsetHeight区别
|
9月前
|
JavaScript 容器
为什么元素的 scrollTop 一直为 0?
为什么元素的 scrollTop 一直为 0?
404 0
|
12月前
|
前端开发 JavaScript API
JavaScript 基于offsetHeight和clientHeight判断是否出现滚动条
JavaScript 基于offsetHeight和clientHeight判断是否出现滚动条
68 0
|
JavaScript IDE 开发工具
JS 中 offsetHeight/scrollHeight/clientHeight 的区别
client* clientWidth/clientHeight 返回的是元素的内部宽度,它的值只包含 content + padding,如果有滚动条,不包含滚动条 clientTop 返回的是上边
scrollTop详测
scrollTop详测
106 0
|
前端开发
你知道offsetHeight、scrollHeight、clientHeight的区别吗?
前言 offsetHeight、scrollHeight、clientHeight这三个属性我们经常在开发中遇到,如果小伙伴们没有经常使用的话,很容易把这些属性搞混,比如说什么窗口高度、元素高度、内容高度等等。当然,现在的前端框架很多时候帮我们封装了这些属性,但是我们也不能太过依赖框架,底层的原理我们还是需要了解的,今天就来理一理这三个属性分别代表什么?
146 0
你知道offsetHeight、scrollHeight、clientHeight的区别吗?
clientWidth与clientHeight,offsetWidth与offsetHeight
clientWidth与clientHeight,offsetWidth与offsetHeight
124 0
clientWidth与clientHeight,offsetWidth与offsetHeight
|
API 编解码
clientHeight、offsetHeight、scrollHeight详解
  网页可见区域宽: document.body.clientWidth; 网页可见区域高: document.body.clientHeight; 网页可见区域宽: document.body.offsetWidth   (包括边线的宽); 网页可见区域高: document.
1431 0