HTML中 scrollTop++ 不能够实现div向上滚动的原因
2013-07-08 09:53
267 查看
假设有三个层,id分别是:demo,demo1,demo2,包含关系如下:即,demo 包含demo1和demo2;
HTML代码:
<div id="demo" style="background-color:#ff0000; width:500px;height:200px;overflow: hidden;" >
<div id="demo1" style="width:500px;height:200px;background-color:yellow">
</div>
<div id="demo2" style="width:500px;height:200px;background-color:pink">
</div>
</div>
JS代码:
<script type="text/javascript">
document.getElementById("demo2").innerHTML=document.getElementById("demo1").innerHTML;
document.getElementById("demo2").style.backgroundColor="blue";
function let(){
document.getElementById("demo").scrollTop++;
}
var myTime=setInterval("let()",100);
</script>
1.外层div 的overflow属性没有设置为“hidden”,不会显示滚动效果;
2.内层div(这里指的是demo1和demo2)的高度之和没有超过外层div的高度;本例子来说:demo1 高度200 +demo2高度 200=400px必须大于demo的高度200px才会出现滚动。
3.何时滚动会停止?内部最下面的div(本例子demo2)的底部与外层div(demo)底部齐平时停止滚动!
如果要不停滚动可以修改js代码:
<script type="text/javascript">
document.getElementById("demo2").innerHTML=document.getElementById("demo1").innerHTML;
function let(){
if(document.getElementById("demo").scrollTop>=parseInt(document.getElementById("demo1").style.height)){
document.getElementById("demo").scrollTop=0;
}
else{
document.getElementById("demo").scrollTop++;
}
}
var myTime=setInterval("let()",10);
</script>
由于style.height属性只能取得行内样式的值,如果换成currentstyle或者document.getComputedStyle("",null)还需要判断,所以最好使用demo2的offsetHeight
<script type="text/javascript">
document.getElementById("demo2").innerHTML=document.getElementById("demo1").innerHTML;
function let(){
if(document.getElementById("demo").scrollTop>=document.getElementById("demo2").offsetTop){
document.getElementById("demo").scrollTop=0;
}
else{
document.getElementById("demo").scrollTop++;
}
}
var myTime=setInterval("let()",10);
</script>
但是这里一定要注意offsetTop包含外层div(demo)的padding,demo2的offsetTop要大于200;也就是说如果demo1的高度和demo2若刚好等于demo的高度则demo的scrollTop永远不会达到临界点即[b]document.getElementById("demo").scrollTop>=document.getElementById("demo2").offsetTop,因为在此之前就停止卷动。scrollTop++没有作用[/b]
HTML代码:
<div id="demo" style="background-color:#ff0000; width:500px;height:200px;overflow: hidden;" >
<div id="demo1" style="width:500px;height:200px;background-color:yellow">
</div>
<div id="demo2" style="width:500px;height:200px;background-color:pink">
</div>
</div>
JS代码:
<script type="text/javascript">
document.getElementById("demo2").innerHTML=document.getElementById("demo1").innerHTML;
document.getElementById("demo2").style.backgroundColor="blue";
function let(){
document.getElementById("demo").scrollTop++;
}
var myTime=setInterval("let()",100);
</script>
1.外层div 的overflow属性没有设置为“hidden”,不会显示滚动效果;
2.内层div(这里指的是demo1和demo2)的高度之和没有超过外层div的高度;本例子来说:demo1 高度200 +demo2高度 200=400px必须大于demo的高度200px才会出现滚动。
3.何时滚动会停止?内部最下面的div(本例子demo2)的底部与外层div(demo)底部齐平时停止滚动!
如果要不停滚动可以修改js代码:
<script type="text/javascript">
document.getElementById("demo2").innerHTML=document.getElementById("demo1").innerHTML;
function let(){
if(document.getElementById("demo").scrollTop>=parseInt(document.getElementById("demo1").style.height)){
document.getElementById("demo").scrollTop=0;
}
else{
document.getElementById("demo").scrollTop++;
}
}
var myTime=setInterval("let()",10);
</script>
由于style.height属性只能取得行内样式的值,如果换成currentstyle或者document.getComputedStyle("",null)还需要判断,所以最好使用demo2的offsetHeight
<script type="text/javascript">
document.getElementById("demo2").innerHTML=document.getElementById("demo1").innerHTML;
function let(){
if(document.getElementById("demo").scrollTop>=document.getElementById("demo2").offsetTop){
document.getElementById("demo").scrollTop=0;
}
else{
document.getElementById("demo").scrollTop++;
}
}
var myTime=setInterval("let()",10);
</script>
但是这里一定要注意offsetTop包含外层div(demo)的padding,demo2的offsetTop要大于200;也就是说如果demo1的高度和demo2若刚好等于demo的高度则demo的scrollTop永远不会达到临界点即[b]document.getElementById("demo").scrollTop>=document.getElementById("demo2").offsetTop,因为在此之前就停止卷动。scrollTop++没有作用[/b]
相关文章推荐
- HTML中 scrollTop++ 不能够实现div向上滚动的原因
- html标签overflow属性和javascript实现div标签滚动问题
- HTML中用div标签包含Marquee实现文字走马灯滚动效果
- js实现html页面滚动条向下拉到一定的程度时,某个div就固定在顶部,向上拉时返回原位置。
- DIV+JS实现向上滚动百度新闻
- js简单实现div里面的内容向上平滑滚动。
- 利用html中的div标签实现网页中某一块区域的自动滚动
- Jquery结合div+css实现文字间断停顿向上滚动效果
- jquery 实现无间图片文字向上滚动效果
- css实现div悬浮层,始终停留在浏览器的最下方,不随页面的滚动条滚动改变位置或消失
- HTML+CSS实现圆角DIV
- 滚动页面时DIV到顶部时fixed(原生js实现)
- div+js实现内容上下不间断滚动
- html+css+javascript实现列表循环滚动
- 用marquee和div+js实现首尾相连循环滚动
- 实现双击网页后页面自动向上滚动
- jQuery实现的向上/向下无缝滚动简洁代码
- 实现窗口中的文档自动向上滚动,方便阅读
- html页面js实现多个div定时轮流出现
- HTML标签marquee实现滚动效果