关于js中的scrollTop

最近想写一个信息滚动的demo,但是一直没有实现,最后查找资料,看了网上的一些例子,之后才明白原因:没有清楚scrollTop的真正含义

html代码:

<div class="info-area" id="area">
              <ul id="list">
                     <li><a href="">菲律宾渔民拖走黄岩岛附近多个中国浮标</a></li>
                     <li><a href="">2013年我国净资产352万亿 专家称已超美国</a></li>
                     <li><a href="">5只藏獒集体越狱 特警持微型冲锋枪击毙</a></li>
                     <li><a href="">社科院副主任:中国能应对1.5次金融危机</a></li>
                     <li><a href="">舆论场:青年约架被殴 给山东警方依法独立办案点赞</a></li>
                     <li><a href="">湖北书记:1名优秀县委书记抓反腐 有人扬言整死他</a></li>
                     <li><a href="">起底公立医院工资:有医生工作17年月薪3000元</a></li>
                     <li><a href="">监拍夫妻吵架街头撒钞票 路人淡定经过</a></li>
                     <li><a href="">起底公立医院工资:有医生工作17年月薪3000元</a></li>
                     <li><a href="">监拍夫妻吵架街头撒钞票 路人淡定经过</a></li>
              </ul>
          </div>

css代码:

.info-area{overflow: hidden; }

ul{list-style: none; }
          li{height: 24px;line-height: 24px; padding-left: 20px;border-top:1px solid #ccc;}
          li a{text-decoration: none;}

由于没有设置info-area的高度,所以及时我在js中设置如下内容也没有什么用:

var area = document.getElementById(‘area‘);

var timer = setInterval(‘area.scrollTop++‘,50);

一直以为,scrollTop的意思就是子元素的上边距相对于父元素上边距的距离,之后查了一下资料才明白真正的含义:

  • 内层元素的高度300px > 外层元素的高度200px,因此“外层元素的内容”(也就是“内层元素”)无法完全显示,而外层元素把overflow设置为auto,因此外层元素的右侧会出现竖直滑动条
  • 初始状态下,“内层元素的上边界”和“外层元素的上边界”重合,没有任何内容超过“外层元素的上边界”,此时scrollTop属性的值为0。
  • 当向下拖动滚动块时,超过“外层元素的上边界”的内容会逐渐增多,scrollTop值就等于这些超出部分的高度。
  • 当拖动滚动块到最底部时,“内层元素的下边界”和“外层元素的下边界”重合,此时,超过“外层元素的上边界”的内容的高度=300px-200px=100px,也就是此时的scrollTop值。

    原来如此.在我自己的demo中,我根本就没有设置父元素的高度,何来超出部分之说呢.

于是加上css部分:.info-area{height:215px;overflow:hidder};

效果马上就出来了.除此之外,scrollTop还有一个小地方值得注意的:

当页面有DTD文档说明时:使用document.body.scrollTop的值总是0.此时需要使用document.documentElement.scrollTop.

页面具有 DTD(或者说指定了 DOCTYPE)时,使用 document.documentElement。 
页面不具有 DTD(或者说没有指定了 DOCTYPE)时,使用 document.body。 
在 IE 和 Firefox 中均是如此。 
为了兼容,可以使用如下代码: var scrollTop = window.pageYOffset 
|| document.documentElement.scrollTop 
|| document.body.scrollTop 
|| 0;

时间: 2024-10-20 15:18:13

关于js中的scrollTop的相关文章

js中offsetTop、clientTop、scrollTop

Js中的offsetTop.clientTop.scrollTop各属性介绍 页可见区域宽: document.body.clientWidth;  /document.documentElement.clientWidth网页可见区域高: document.body.clientHeight;网页可见区域宽: document.body.offsetWidth   (包括边线的宽);网页可见区域高: document.body.offsetHeight (包括边线的宽);网页正文全文宽: do

js中的各种宽高以及位置总结

在javascript中操作dom节点让其运动的时候,常常会涉及到各种宽高以及位置坐标等概念,如果不能很好地理解这些属性所代表的意义,就不能理解js的运动原理,同时,由于这些属性概念较多,加上浏览器之间 实现方式不同,常常会造成概念混淆,经过研究之后,这里来进行一个总结. 第一部分:DOM对象 1.1只读属性 所谓的只读属性指的是DOM节点的固有属性,该属性只能通过js去获取而不能通过js去设置,而且获取的值是只有数字并不带单位的(px,em等),如下: 1)clientWidth和client

图解js中常用的判断浏览器窗体、用户屏幕可视区域大小位置的方法

有时我们需要获得浏览器窗口或屏幕的大小.窗口下拉框下拉的距离等数据,对应这些需求,js中提供了不少解决方法,只是数量稍多容易混淆它们各自的意义,下面咱们用图例来解释下12个常见对象属性的作用. 其中有6个常用的浏览器窗体属性(由于offsetWidth/Height在不同浏览器下表现有出入,故不在本章讨论): document.documentElement.clientWidth document.documentElement.clientHeight document.documentEl

JS中的event 对象详解

JS中的event 对象详解 JS的event对象 Event属性和方法: 1. type:事件的类型,如onlick中的click: 2. srcElement/target:事件源,就是发生事件的元素: 3. button:声明被按下的鼠标键,整数,1代表左键,2代表右键,4代表中键,如果按下多个键,酒把这些值加起来,所以3就代表左右键同时按下:(firefox中 0代表左键,1代表中间键,2代表右键) 4. clientX/clientY:事件发生的时候,鼠标相对于浏览器窗口可视文档区域的

js中的dom节点以及offset,client,scroll家族

一.节点. 1.父节点:parentNode; 2.兄弟节点: (1).下一个兄弟节点:nextElementSibling(在Ie中用nextSibling); (2).上一个兄弟节点:previousElementSibling(在Ie中用 previousSibling); 3.子节点: (1).选中第一个子节点:firstElementChild(在Ie中用firstChild); (2).选中最后一个子节点:lastElementChild(在ie中用lastChild); (3).选

jquery中的each用法以及js中的each方法实现实例

each()方法能使DOM循环结构简洁,不容易出错.each()函数封装了十分强大的遍历功能,使用也很方便,它可以遍历一维数组.多维数组.DOM, JSON 等等在javaScript开发过程中使用$each可以大大的减轻我们的工作量. 下面提一下each的几种常用的用法 each处理一维数组 var arr1 = [ "aaa", "bbb", "ccc" ]; $.each(arr1, function(i,val){ alert(i); a

JS中常见问题

1 //s金额 n保留几位小数 默认保留两位小数 2 function formatMoney(s, n) { 3 n = n > 0 && n <= 20 ? n : 2; 4 s = parseFloat((s + "").replace(/[^\d\.-]/g, "")).toFixed(n) + ""; 5 var l = s.split(".")[0].split(""

document.body的一些用法以及js中的常见问题

document.body的一些用法以及js中的常见问题 网页可见区域宽: document.body.clientWidth; 网页可见区域高: document.body.clientHeight; 网页可见区域宽: document.body.offsetWidth    (包括边线的宽); 网页可见区域高: document.body.offsetHeight   (包括边线的宽); 网页正文全文宽: document.body.scrollWidth; 网页正文全文高: documen

js中各种距离clientWidth

由于本人对原生js中各种距离得应用和区分不是很好,特别总结了一下: clientWidth是对象看到的宽度(不含边线,即border)scrollWidth是对象实际内容的宽度(若无padding,那就是边框之间距离,如有padding,就是左padding和右padding之间距离).offsetWidth是指对象自身的宽度,整型,单位像素(含边线,如滚动条的占用的宽,值会随着内容的输入而不断改变). scrollHeight: 获取对象的滚动高度.scrollLeft:设置或获取位于对象左边