用scrollTop制作一个自动滚动公告栏
2016-06-01 21:13
330 查看
我们在浏览网页时,经常会看到会一些滚动的栏目,比如向上滚动的公告、新闻等。其实他们的制作都不难,只要学了基础的html、css、javascript就可以做出来,用JavaScript的scrollTop就行。
scrollTop:返回或设置匹配元素的滚动条的垂直位置。
这里,内层容器高度大于外层容器,就会产生垂直滚动条,当用javascript设置外层容器:
var div1=document.getElementById("div1");
div1.scrollTop=50;
文字部分会往上走50像素,相当于用滚动条向下拉了50像素。
(注意:当内层容器内容不超出外层容器高度时,不会产生滚动条,因此scrollTop自然也无效了。若外层容器设置了overflow:hidden时,不显示滚动条,但内容部分超出外层容器的话,scrollTop依然有效)
这就是一个已经做好的demo截图,下面是详细步骤
1、写html结构和css样式
在con1设置了ul和li的高度样式,足以撑大容器,使得con1高度大于了外层容器#box高度,scrollTop就起作用了。
2、下面写javascript部分
先获取滚动部分的父容器area和滚动部分容器,若设置:area.scrollTop =10;内容就会往上走10px。
我们的目的就是让它自动往上滚动,就需要这样:area.scrollTop ++;用定时器setInterval()调用,就要包装成函数
这表示每50毫秒执行一次scrollTop加一函数,这时就可以滚动了。但滚动到con1末尾就停了,这时因为后面没东西了,自然就不会继续滚动了。再看html有一个空的con2,就是用来处理这个问题,要把con1复制一份给con2 ,让con1滚动完,继续滚动con2
很明显con2也会滚动完,那有这么办,难道再复制一个con3、con4吗,肯定不可行。con2滚动时,con1已经滚动出外面了,已经看不见了,此时就可以对它进行操作了。
更改了scrollUp()函数,加一个判断,当容器往上滚动(相当于有滚动条、滚动条向下拉)到con1高度时,con1刚好向上消失掉,又出现覆盖了con2。再继续向上,滚动出去又马上覆盖con2,无限这样循环。
要改进一下,可以添加两个事件,滚动速度可以用var speed=50;设置
鼠标移动到容器时,就停止滚动,移出时又继续滚动。
全部javascript代码如下
以上就是滚动栏的做法,主要用于个人学习记录
scrollTop:返回或设置匹配元素的滚动条的垂直位置。
<div id="div1" style="width:200px;height:200px;background-color:#999999;overflow:auto;background-color: #999999;"> <div style="width:100px;height:300px;background-color:#FFFF00;" > 这些文字显示在内层元素中。 </div> </div>
这里,内层容器高度大于外层容器,就会产生垂直滚动条,当用javascript设置外层容器:
var div1=document.getElementById("div1");
div1.scrollTop=50;
文字部分会往上走50像素,相当于用滚动条向下拉了50像素。
(注意:当内层容器内容不超出外层容器高度时,不会产生滚动条,因此scrollTop自然也无效了。若外层容器设置了overflow:hidden时,不显示滚动条,但内容部分超出外层容器的话,scrollTop依然有效)
这就是一个已经做好的demo截图,下面是详细步骤
1、写html结构和css样式
<div id="main"> <h3 id="title">Title</h3> <div id="box"> <ul id="con1"> <li><a href="#">1.学会html5 绝对的屌丝逆袭</a><span>2016-06-01</span></li> <li><a href="#">2.tab页面切换效果(案例)</a><span>2016-06-01</span></li> <li><a href="#">3.圆角水晶按钮制作(案例)</a><span>2016-06-01</span></li> <li><a href="#">4.HTML+CSS基础课程(系列)</a><span>2016-06-01</span></li> <li><a href="#">5.分页页码制作(案例)</a><span>2016-06-01</span></li> <li><a href="#">6.导航条菜单的制作(案例)</a><span>2016-06-01</span></li> <li><a href="#">7.信息列表制作(案例)</a><span>2016-06-01</span></li> <li><a href="#">8.下拉菜单制作(案例)</a><span>2016-06-01</span></li> <li><a href="#">9.如何实现“新手引导”效果</a><span>2016-06-01</span></li> </ul> <ul id="con2"> /* 滚动需要 */ </ul> </div> </div>
* { margin: 0px; padding: 0px; /* 去掉所有标签的marign和padding的值 */ } ul { list-style: none; /* 去掉ul标签默认的点样式 */ } a { color: #333; font-size: 12px; text-decoration: none; /* 超链接样式 */ } a:hover { color: #ff0000; } #main { width: 399px; border: 5px solid #ababab; -moz-border-radius: 15px; /* Gecko browsers */ -webkit-border-radius: 15px; /* Webkit browsers */ border-radius: 15px; box-shadow: 2px 2px 10px #ababab; margin: 50px auto 0; text-align: left; /* 让新闻内容靠左 */ } /* 头部样式 */ #title { height: 62px; overflow: hidden; /* 内容超出的部分要隐藏,免得撑高头部 */ font-size: 26px; line-height: 62px; padding-left: 30px; background-image: -moz-linear-gradient(top, #f05e6f, #c9394a); /* Firefox */ background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0, #f05e6f), color-stop(1, #c9394a)); /* Saf4+, Chrome */ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#8fa1ff', endColorstr='#f05e6f', GradientType='0'); /* IE*/ border: 1px solid #f05e6f; -moz-border-radius: 8px 8px 0 0; /* Gecko browsers */ -webkit-border-radius: 8px 8px 0 0; /* Webkit browsers */ border-radius: 8px 8px 0 0; color: #fff; position: relative; } #title a { position: absolute; right: 10px; bottom: 10px; display: inline; color: #fff; font-size: 12px; line-height: 24px; } #box { height: 144px; width: 335px; margin-left: 25px; margin-top: 10px; overflow: hidden; /* 超出的内容部分要隐藏,免得撑高中间部分 */ } #main ul li { height: 24px; } #main ul li a { float: left; text-indent: 15px; } #main ul li span { float: right; color: #999; }
在con1设置了ul和li的高度样式,足以撑大容器,使得con1高度大于了外层容器#box高度,scrollTop就起作用了。
2、下面写javascript部分
var area = document.getElementById('box'); var con1 = document.getElementById('con1'); var con2 = document.getElementById('con2');
先获取滚动部分的父容器area和滚动部分容器,若设置:area.scrollTop =10;内容就会往上走10px。
我们的目的就是让它自动往上滚动,就需要这样:area.scrollTop ++;用定时器setInterval()调用,就要包装成函数
function scrollUp(){ area.scrollTop ++; } var myScroll = setInterval("scrollUp()",50);
这表示每50毫秒执行一次scrollTop加一函数,这时就可以滚动了。但滚动到con1末尾就停了,这时因为后面没东西了,自然就不会继续滚动了。再看html有一个空的con2,就是用来处理这个问题,要把con1复制一份给con2 ,让con1滚动完,继续滚动con2
con2.innerHTML = con1.innerHTML;
很明显con2也会滚动完,那有这么办,难道再复制一个con3、con4吗,肯定不可行。con2滚动时,con1已经滚动出外面了,已经看不见了,此时就可以对它进行操作了。
function scrollUp(){ if(area.scrollTop >= con1.scrollHeight) { area.scrollTop = 0; }else{ area.scrollTop ++; } }
更改了scrollUp()函数,加一个判断,当容器往上滚动(相当于有滚动条、滚动条向下拉)到con1高度时,con1刚好向上消失掉,又出现覆盖了con2。再继续向上,滚动出去又马上覆盖con2,无限这样循环。
要改进一下,可以添加两个事件,滚动速度可以用var speed=50;设置
area.onmouseover = function(){ clearInterval(myScroll); } area.onmouseout = function(){ myScroll = setInterval("scrollUp()",speed); }
鼠标移动到容器时,就停止滚动,移出时又继续滚动。
全部javascript代码如下
var area = document.getElementById('box'); var con1 = document.getElementById('con1'); var con2 = document.getElementById('con2'); var speed = 50; area.scrollTop = 0; con2.innerHTML = con1.innerHTML; function scrollUp(){ if(area.scrollTop >= con1.scrollHeight) { area.scrollTop = 0; }else{ area.scrollTop ++; } } var myScroll = setInterval("scrollUp()",speed); area.onmouseover = function(){ clearInterval(myScroll); } area.onmouseout = function(){ myScroll = setInterval("scrollUp()",speed); }
以上就是滚动栏的做法,主要用于个人学习记录
相关文章推荐
- ubuntu(linux)下安装openCV(ffmpeg导致的编译不通过的解决办法)
- Linux文件权限基本配置
- Linux下安装软件的错误
- linux文件和目录权限的查看及修改
- Linux iptables配置实践
- Linux 双网卡绑定
- 阿里云ECS(linux)添加ftp用户_并设置权限
- Selenium2学习-038-firefox、webdriver版本不对称问题解决:org.openqa.selenium.firefox.NotConnectedException: Unable to connect to host 127.0.0.1 on port 7055
- Linux下Tomcat的安装配置
- Linux内核栈与用户栈分析
- daemon守护进程初识
- android NDK、JNI技术详解及NDK在Android系统架构中的位置关系
- Linux树状结构文件详解
- Android应用程序架构
- 浅谈Linux下VIM配置
- Apache Flume 分布式日志收集系统学习
- Linux常用命令
- 用Apache Hadoop和Apache Solr处理和索引医学图像
- Hadoop(十一):Hadoop生态圈上Pig,Hive,HBase的关系
- shell(十三)参数代换