这篇文章将为大家详细讲解有关如何使用JavaScript实现的原生态兼容IE6可调可控滚动文字功能,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
一、基本目标
如下图,一开始文字能在15px-400px这个区域以每0.05s,5px像素的无缝滚动,当然,改改下面的脚本,你让我从地球滚动到外太空都没问题,只要你告诉我地球的px和外太空的px就行了,然后设置两个按钮,你点击“停止”它就停止,停止之后点击“开始”就让它开始,它在“开始”的状态你点N下“开始”是不会出BUG的,继续保持这个状态,它在“停止”状态,你点N下“停止”也是没有问题的。
二、HTML布局
代码如下:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>marquee</title> </head> <body> <div>sssssss</div> <div id="marquee" >marquee</div> <div>sssssss</div> <button onclick="return marquee_move_stop()">停止</button> <button onclick="return marquee_move_start()">开始</button> </body> </html>
思想如下图,一图胜千言,不说了。请自行对比代码与图。
三、脚本部分
这里是整个控件的核心。
<script> //设置其滚动速度是5px/0.05s,这样能够实现无缝滚动,不会一卡一卡的。 var speed=5; var marqueeTimer=setInterval("marquee_move()",50); //这个变量主要是用来下面控制滚动开始与停止的两个函数 var isMarqueeMove=true; //滚动的核心函数 function marquee_move(){ //这么长的代码主要是为了把带px的padding-left转化为一个可以操作的数 //如padding-left:0px;经过这一行代码之后var marquee_x=0; var marquee_x=parseInt(document.getElementById("marquee").style.paddingLeft.substring(0,document.getElementById("marquee").style.paddingLeft.indexOf("px"))); //如果滚过400px这个位置,那就向反方向走,反之亦然 if(marquee_x>400){ speed=-5; } //这里不要设置成0,可能会产生越界bug if(marquee_x<15){ speed=5; } //文字向右滚5px document.getElementById("marquee").style.paddingLeft=marquee_x+speed+"px"; } //下面控制滚动开始与停止的两个函数 //之所以要立flag,是因为marqueeTimer=setInterval("marquee_move()",50);多次被执行,滚动会变得很快和无法控制 //后方的计时器不会替换到前方的计时器 function marquee_move_stop(){ if(isMarqueeMove){ clearTimeout(marqueeTimer); isMarqueeMove=false; } } function marquee_move_start(){ if(!isMarqueeMove){ marqueeTimer=setInterval("marquee_move()",50); isMarqueeMove=true; } } </script>
四、总结
1、CSS中,凡是带-的属性,在javascript要换成大写,如CSS的padding-left在javascript是paddingLeft,否则会被当成减号处理
2、利用padding-left来完成这个组件,就不用使用left要设置绝对定位,然后又要考虑这个组件怎么摆放了。
3、这个东西在浏览器的百分比宽度内滚动,最好不要这样做,毕竟javascript中取出浏览器的宽度可能会遇到各种各样的兼容性问题。还是设置一个定值,这样的代码简短。
附:HTML比较冷门标签与属性
1.<hr>
标签能够添加一条水平分隔线。单标记标签,拥有属性width,size,color,align(后接值)noshade(直接添加,如文本框的disabled,表示这条水平线是无阴影的)
2.<marquee>
标签已经被微软废除了。
微软这个家伙在最新的IE8下已经放弃对MARQUEE的支持了(我这里很无语,MARQUEE是微软自己创造出来的,现在火狐都支持了,它自己不干了)
用marquee有诸多问题的。DW给你提示是警告你慎重。
如下面的代码在IE8的滚动是存在问题的,当图片滚完之后会自动刷新,相当难看,无法现实无缝滚动。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>滚动</title> </head> <body> <marquee width=250px behavior="scroll"> <a href="http://www.163.com" rel="external nofollow" ><img src="img0.jpg" width=100 hspace=50/></a> <a href="http://www.baidu.com" rel="external nofollow" ><img src="img28.jpg" width=100px /></a> </marquee> </body> </html>
3.<strong>
标签是强调标签,基于内容。<b>
是物理样式。<sup><sub>双标记标签能分别使字体上标与下标
4.©是代表版权字符©,®则是注册商标, 是空格
5.对于图片,其hspace属性能够设置图片与图片之间的间距。
6.<body>
标签也是有属性的vlink link 能够分别设置访问了与未访问超链接的颜色,leftmargin与topmargin能够分别规定文档的左边距与上边距
7.<meta name="keywords" content="搜索关键词"><meta name="description content="网页描述">能分别设置被搜索引擎抓取的关键词与网页描述
关于“如何使用JavaScript实现的原生态兼容IE6可调可控滚动文字功能”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。