本文实例讲述了JavaScript实现的原生态兼容IE6可调可控滚动文字功能。分享给大家供大家参考,具体如下:

虽然HTML里面本身就有marquee标签,用来设置滚动文字(marquee标签在附录【HTML比较冷门标签与属性】里会有具体介绍)这个标签到了IE8就开始不支持,在IE6中可以设置的东西也很少,所以这东西还是用javascript来写为好。这个小组件也是比较常见的,但是网上的代码质量还是为了很多无关紧要的小特效而增加了许多无谓的代码。其实这东西,你只要弄得能自己向右向左滚,到了屏幕边缘自动返回就行了,为什么要为了一些淡入淡出的华而不实的东西,而写一大摞代码了。下面介绍一个自己写的利用padding-left实现滚动文字,因为padding-left这个东西在大多数浏览器还是没有问题的。
一、基本目标
如下图,一开始文字能在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" style="padding-left:0px;">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相关内容感兴趣的读者可查看本站专题:《JavaScript切换特效与技巧总结》、《JavaScript查找算法技巧总结》、《JavaScript错误与调试技巧总结》、《JavaScript数据结构与算法技巧总结》、《JavaScript遍历算法与技巧总结》及《JavaScript数学运算用法总结》
希望本文所述对大家JavaScript程序设计有所帮助。
# JavaScript
# 原生态
# 兼容IE6
# 可调
# 可控
# 滚动文字
# js实现的文字横向无间断滚动
# 浅析js 文字滚动效果
# JS实现单行文字不间断向上滚动的方法
# js 上下文字滚动效果
# js文字滚动停顿效果代码
# js实现文字滚动效果
# javascript 单行文字向上跑马灯滚动显示
# js 动态文字滚动的例子
# javascript跟随鼠标的文字带滚动效果
# javascript 模拟Marquee文字向左均匀滚动代码
# js+div实现文字滚动和图片切换效果代码
# JS实现文字向下滚动完整实例
# 关键词
# 微软
# 计时器
# 它在
# 如下图
# 外太空
# 地球
# 就行了
# 让我
# 会有
# 是因为
# 给你
# 相关内容
# 告诉我
# 是有
# 就有
# 则是
# 都没
# 华而不实
相关文章:
专业企业网站设计制作公司,如何理解商贸企业的统一配送和分销网络建设?
宁波免费建站如何选择可靠模板与平台?
建站之星安装路径如何正确选择及配置?
红河网站制作公司,红河事业单位身份证如何上传?
标准网站视频模板制作软件,现在有哪个网站的视频编辑素材最齐全的,背景音乐、音效等?
唐山网站制作公司有哪些,唐山找工作哪个网站最靠谱?
建站之星如何实现PC+手机+微信网站五合一建站?
制作宣传网站的软件,小红书可以宣传网站吗?
c# 在高并发下使用反射发射(Reflection.Emit)的性能
小捣蛋自助建站系统:数据分析与安全设置双核驱动网站优化
怎么将XML数据可视化 D3.js加载XML
如何在云虚拟主机上快速搭建个人网站?
实例解析Array和String方法
建站主机与虚拟主机有何区别?如何选择最优方案?
如何通过主机屋免费建站教程十分钟搭建网站?
Python如何创建带属性的XML节点
平台云上自主建站:模板化设计与智能工具打造高效网站
东莞市网站制作公司有哪些,东莞找工作用什么网站好?
如何访问已购建站主机并解决登录问题?
如何通过万网虚拟主机快速搭建网站?
如何挑选最适合建站的高性能VPS主机?
建站之星北京办公室:智能建站系统与小程序生成方案解析
,有什么在线背英语单词效率比较高的网站?
外汇网站制作流程,如何在工商银行网站上做外汇买卖?
购物网站制作费用多少,开办网上购物网站,需要办理哪些手续?
如何通过cPanel快速搭建网站?
如何用手机制作网站和网页,手机移动端的网站能制作成中英双语的吗?
广东专业制作网站有哪些,广东省能源集团有限公司官网?
c++怎么编写动态链接库dll_c++ __declspec(dllexport)导出与调用【方法】
天河区网站制作公司,广州天河区如何办理身份证?需要什么资料有预约的网站吗?
建站之星收费标准详解:套餐费用及年费价格表一览
免费的流程图制作网站有哪些,2025年教师初级职称申报网上流程?
青岛网站设计制作公司,查询青岛招聘信息的网站有哪些?
建站一年半SEO优化实战指南:核心词挖掘与长尾流量提升策略
如何快速生成可下载的建站源码工具?
山东云建站价格为何差异显著?
公司门户网站制作流程,华为官网怎么做?
黑客入侵网站服务器的常见手法有哪些?
学生网站制作软件,一个12岁的学生写小说,应该去什么样的网站?
如何正确选择百度移动适配建站域名?
佛山企业网站制作公司有哪些,沟通100网上服务官网?
网站制作模板下载什么软件,ppt模板免费下载网站?
香港服务器选型指南:免备案配置与高效建站方案解析
GML (Geography Markup Language)是什么,它如何用XML来表示地理空间信息?
济南企业网站制作公司,济南社保单位网上缴费步骤?
广州网站制作的公司,现在专门做网站的公司有没有哪几家是比较好的,性价比高,模板也多的?
如何选择适合PHP云建站的开源框架?
如何在Windows虚拟主机上快速搭建网站?
网站插件制作软件免费下载,网页视频怎么下到本地插件?
如何通过远程VPS快速搭建个人网站?
*请认真填写需求信息,我们会在24小时内与您取得联系。