使用JavaScript实现连续滚动字幕效果的方法


Posted in Javascript onJuly 07, 2015

我们一般都用Marquee标签控制元素的滚动。但是单向的Marquee滚动是不连续的,每滚完一幕,就会出现一次空白。而下面介绍中的滚动则是连续的,毫不间断。

下面为你介绍这是如何实现的。

为了滚动能够“连续”,我们需要将字幕的内容复制多遍,直到内容的高度不小于滚动区高度的两倍。然后我们将溢出的滚动条隐藏掉,用代码控制滚动条向下移动(这时内容将向上移动)。当滚动条滚动到最下方时,理论上不能再往下滚动了,于是我们立刻调整滚动条,将它向上滚动到一个和当前画面一样的位置。结果我们看到的就是连续的滚动了。呵呵,说的就是这么简单,那做起来如何呢?我们看看是如何逐步实现的。

<div id="marquees"> <!-- 这些是字幕的内容,你可以任意定义 --> <a href="#">链接一</a>
<br> <a href="#">链接二</a>
<br> <a href="#">链接三</a>
<br> <a href="#">链接四</a>
<br> <!-- 字幕内容结束 -->
</div>
<!-- 以下是java-script代码 -->
<script language="java-script">
<!--
marqueesHeight=200; //内容区高度
stopscroll=false; //这个变量控制是否停止滚动
with(marquees){
noWrap=true; //这句表内容区不自动换行
style.width=0; //于是我们可以将它的宽度设为0,因为它会被撑大
style.height=marqueesHeight;
style.overflowY="hidden"; //滚动条不可见
onmouseover=new Function("stopscroll=true"); //鼠标经过,停止滚动
onmouseout=new Function("stopscroll=false"); //鼠标离开,开始滚动
}
//这时候,内容区的高度是无法读取了。下面输出一个不可见的层"templayer",稍后将内容复制到里面:
document.write('<div id="templayer"
style="position:absolute;z-index:1;visibility:hidden"></div>');
function init(){ //初始化滚动内容
//多次复制原内容到"templayer",直到"templayer"的高度大于内容区高度:
while(templayer.offsetHeight<marqueesHeight){
templayer.innerHTML+=marquees.innerHTML;
} //把"templayer"的内容的“两倍”复制回原内容区:
marquees.innerHTML=templayer.innerHTML+templayer.innerHTML;
//设置连续超时,调用"scrollUp()"函数驱动滚动条:
setInterval("scrollUp()",10);
}
document.body.onload=init;
preTop=0; //这个变量用于判断滚动条是否已经到了尽头
function scrollUp(){ //滚动条的驱动函数
if(stopscroll==true) return; //如果变量"stopscroll"为真,则停止滚动
preTop=marquees.scrollTop; //记录滚动前的滚动条位置
marquees.scrollTop+=1; //滚动条向下移动一个像素
//如果滚动条不动了,则向上滚动到和当前画面一样的位置
//当然不仅如此,同样还要向下滚动一个像素(+1):
if(preTop==marquees.scrollTop){
marquees.scrollTop=templayer.offsetHeight-marqueesHeight+1;
}
}
-->
</script>

这样就完成了,感觉做起来也不难吧。

Javascript 相关文章推荐
asp(javascript)全角半角转换代码 dbc2sbc
Aug 06 Javascript
阻止事件(取消浏览器对事件的默认行为并阻止其传播)
Nov 03 Javascript
JQuery中阻止事件冒泡几种方式及其区别介绍
Jan 15 Javascript
扩展jQuery对象时如何扩展成员变量具体怎么实现
Apr 25 Javascript
jquery中trigger()无法触发hover事件的解决方法
May 07 Javascript
利用JavaScript脚本实现滚屏效果的方法
Jul 07 Javascript
javascript中setAttribute()函数使用方法及兼容性
Jul 19 Javascript
谈一谈jQuery核心架构设计
Mar 28 Javascript
Webpack实现按需打包Lodash的几种方法详解
May 08 Javascript
jQuery实现手势解锁密码特效
Aug 14 jQuery
vue中node_modules中第三方模块的修改使用详解
May 31 Javascript
JavaScript如何判断对象有某属性
Jul 03 Javascript
理解JavaScript的变量的入门教程
Jul 07 #Javascript
Javascript编写俄罗斯方块思路及实例
Jul 07 #Javascript
javascript实现控制div颜色
Jul 07 #Javascript
浅谈JavaScript中的字符编码转换问题
Jul 07 #Javascript
JavaScript中判断两个字符串是否相等的方法
Jul 07 #Javascript
javascript中数组方法汇总
Jul 07 #Javascript
jQuery原型属性和原型方法详解
Jul 07 #Javascript
You might like
php 仿Comsenz安装效果代码打包提供下载
2010/05/09 PHP
php提交表单时保留多个空格及换行的文本样式的方法
2017/06/20 PHP
YII框架模块化处理操作示例
2019/04/26 PHP
如何用javascript判断录入的日期是否合法
2007/01/08 Javascript
js取消单选按钮选中并判断对象是否为空
2013/11/14 Javascript
不到30行JS代码实现Excel表格的方法
2014/11/15 Javascript
网页禁用右键菜单和鼠标拖动选择方法小结
2015/02/25 Javascript
js实现仿QQ秀换装效果的方法
2015/03/04 Javascript
javascript实现二级级联菜单的简单制作
2015/11/19 Javascript
基于socket.io+express实现多房间聊天
2016/03/17 Javascript
jQuery插件学习教程之SlidesJs轮播+Validation验证
2016/07/12 Javascript
JS与jQuery实现隔行变色的方法
2016/09/09 Javascript
Javascript中的 “&” 和 “|” 详解
2017/02/02 Javascript
[00:59]PWL开团时刻DAY7——我在赶
2020/11/06 DOTA
基于Python实现的百度贴吧网络爬虫实例
2015/04/17 Python
python去除文件中空格、Tab及回车的方法
2016/04/12 Python
解析Mac OS下部署Pyhton的Django框架项目的过程
2016/05/03 Python
深入解析Python中的descriptor描述器的作用及用法
2016/06/27 Python
python编程线性回归代码示例
2017/12/07 Python
python实现百万答题自动百度搜索答案
2018/01/16 Python
Python中安装easy_install的方法
2018/11/18 Python
pandas通过loc生成新的列方法
2018/11/28 Python
python 多线程对post请求服务器测试并发的方法
2019/06/13 Python
通过PHP与Python代码对比的语法差异详解
2019/07/10 Python
利用python list完成最简单的DB连接池方法
2019/08/09 Python
python 如何将数据写入本地txt文本文件的实现方法
2019/09/11 Python
Python3基本输入与输出操作实例分析
2020/02/14 Python
python3 使用openpyxl将mysql数据写入xlsx的操作
2020/05/15 Python
Python-openpyxl表格读取写入的案例详解
2020/11/02 Python
100%法国制造的游戏和玩具:Les Jouets Français
2021/03/02 全球购物
计算机系毕业生推荐信
2013/11/06 职场文书
母亲节感恩寄语
2014/02/21 职场文书
制作部班长职位说明书
2014/02/26 职场文书
安全教育演讲稿
2014/05/09 职场文书
《微笑着面对生活》优秀演讲稿范文
2014/09/23 职场文书
小学生光盘行动倡议书
2015/04/28 职场文书