首尾相连的跑马灯效果(在IE Firefox Opera Safari中均已测试)

探究前端的跑马灯效果是如何用css实现的 无意见看到了一个网站的一个动画的跑马灯效果很不错,这篇博客将用css实现跑马灯效果,剖析它是如何实现的!并且我也推荐用css实现这种无缝滚动的跑马灯效果看起来更平滑,用js定时器实现的会有明显的抖动效果 阅读详情

 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<style type="text/css">
div{border:1px solid #ccc;background:#eee;margin:10px;}
</style>
说明:<ul>
<li>可以设置是否响应鼠标暂停</li>
<li>可以设置滚动滚动方向</li>
<li>可以设置滚动速度</li>
<li>图文支持</li>
<li>。。。</li>
</ul>
<hr />
<!-- 必须包含的js文件 [[ -->
<script type="text/javascript">
function Marquee()
{
this.ID = document.getElementById(arguments[0]);
if(!this.ID)
{
  alert("您要设置的/"" + arguments[0] + "/"初始化错误/r/n请检查标签ID设置是否正确!");
  this.ID = -1;
  return;
}
this.Direction = this.Width = this.Height = this.DelayTime = this.WaitTime = this.CTL = this.StartID = this.Stop = this.MouseOver = 0;
this.Step = 1;
this.Timer = 30;
this.DirectionArray = {"top":0 , "up":0 , "bottom":1 , "down":1 , "left":2 , "right":3};
if(typeof arguments[1] == "number" || typeof arguments[1] == "string")this.Direction = arguments[1];
if(typeof arguments[2] == "number")this.Step = arguments[2];
if(typeof arguments[3] == "number")this.Width = arguments[3];
if(typeof arguments[4] == "number")this.Height = arguments[4];
if(typeof arguments[5] == "number")this.Timer = arguments[5];
if(typeof arguments[6] == "number")this.DelayTime = arguments[6];
if(typeof arguments[7] == "number")this.WaitTime = arguments[7];
if(typeof arguments[8] == "number")this.ScrollStep = arguments[8];
this.ID.style.overflow = this.ID.style.overflowX = this.ID.style.overflowY = "hidden";
this.ID.noWrap = true;
this.IsNotOpera = (navigator.userAgent.toLowerCase().indexOf("opera") == -1);
if(arguments.length >= 7)this.Start();
}
Marquee.prototype.Start = function()
{
if(this.ID == -1)return;
if(this.WaitTime < 800)this.WaitTime = 800;
if(this.Timer < 20)this.Timer = 20;
if(this.Width == 0)this.Width = parseInt(this.ID.style.width);
if(this.Height == 0)this.Height = parseInt(this.ID.style.height);
if(typeof this.Direction == "string")this.Direction = this.DirectionArray[this.Direction.toString().toLowerCase()];
this.HalfWidth = Math.round(this.Width / 2);
this.HalfHeight = Math.round(this.Height / 2);
this.BakStep = this.Step;
this.ID.style.width = this.Width + "px";
this.ID.style.height = this.Height + "px";
if(typeof this.ScrollStep != "number")this.ScrollStep = this.Direction > 1 ? this.Width : this.Height;
var templateLeft = "MSCLASS_TEMP_HTML MSCLASS_TEMP_HTML";
var templateTop = "MSCLASS_TEMP_HTML MSCLASS_TEMP_HTML";
var msobj = this;
msobj.tempHTML = msobj.ID.innerHTML;
if(msobj.Direction <= 1)
{
  msobj.ID.innerHTML = templateTop.replace(/MSCLASS_TEMP_HTML/g,msobj.ID.innerHTML);
}
else
{
  if(msobj.ScrollStep == 0 && msobj.DelayTime == 0)
  {
  msobj.ID.innerHTML += msobj.ID.innerHTML;
  }
  else
  {
  msobj.ID.innerHTML = templateLeft.replace(/MSCLASS_TEMP_HTML/g,msobj.ID.innerHTML);
  }
}
var timer = this.Timer;
var delaytime = this.DelayTime;
var waittime = this.WaitTime;
msobj.StartID = function(){msobj.Scroll()}
msobj.Continue = function()
    {
    if(msobj.MouseOver == 1)
    {
      setTimeout(msobj.Continue,delaytime);
    }
    else
    { clearInterval(msobj.TimerID);
      msobj.CTL = msobj.Stop = 0;
      msobj.TimerID = setInterval(msobj.StartID,timer);
    }
    }
msobj.Pause = function()
  {
    msobj.Stop = 1;
    clearInterval(msobj.TimerID);
    setTimeout(msobj.Continue,delaytime);
  }
msobj.Begin = function()
  {
  msobj.ClientScroll = msobj.Direction > 1 ? msobj.ID.scrollWidth / 2 : msobj.ID.scrollHeight / 2;
  if((msobj.Direction <= 1 && msobj.ClientScroll <= msobj.Height + msobj.Step) || (msobj.Direction > 1 && msobj.ClientScroll <= msobj.Width + msobj.Step))  {
    msobj.ID.innerHTML = msobj.tempHTML;
    delete(msobj.tempHTML);
    return;
  }
  delete(msobj.tempHTML);
  msobj.TimerID = setInterval(msobj.StartID,timer);
  if(msobj.ScrollStep < 0)return;
  msobj.ID.onmousemove = function(event)
      {
      if(msobj.ScrollStep == 0 && msobj.Direction > 1)
      {
        var event = event || window.event;
        if(window.event)
        {
        if(msobj.IsNotOpera)
        {
          msobj.EventLeft = event.srcElement.id == msobj.ID.id ? event.offsetX - msobj.ID.scrollLeft : event.srcElement.offsetLeft - msobj.ID.scrollLeft + event.offsetX;
        }
        else
        {
          msobj.ScrollStep = null;
          return;
        }
        }
        else
        {
        msobj.EventLeft = event.layerX - msobj.ID.scrollLeft;
        }
        msobj.Direction = msobj.EventLeft > msobj.HalfWidth ? 3 : 2;
        msobj.AbsCenter = Math.abs(msobj.HalfWidth - msobj.EventLeft);
        msobj.Step = Math.round(msobj.AbsCenter * (msobj.BakStep*2) / msobj.HalfWidth);
      }
      }
  msobj.ID.onmouseover = function()
      {
      if(msobj.ScrollStep == 0)return;
      msobj.MouseOver = 1;
      clearInterval(msobj.TimerID);
      }
  msobj.ID.onmouseout = function()
      {
      if(msobj.ScrollStep == 0)
      {
        if(msobj.Step == 0)msobj.Step = 1;
        return;
      }
      msobj.MouseOver = 0;
      if(msobj.Stop == 0)
      {
        clearInterval(msobj.TimerID);
        msobj.TimerID = setInterval(msobj.StartID,timer);
      }
      }
  }
setTimeout(msobj.Begin,waittime);
}
Marquee.prototype.Scroll = function()
{
switch(this.Direction)
{
  case 0:
  this.CTL += this.Step;
  if(this.CTL >= this.ScrollStep && this.DelayTime > 0)
  {
    this.ID.scrollTop += this.ScrollStep + this.Step - this.CTL;
    this.Pause();
    return;
  }
  else
  {
    if(this.ID.scrollTop >= this.ClientScroll)
    {
    this.ID.scrollTop -= this.ClientScroll;
    }
    this.ID.scrollTop += this.Step;
  }
  break;
  case 1:
  this.CTL += this.Step;
  if(this.CTL >= this.ScrollStep && this.DelayTime > 0)
  {
    this.ID.scrollTop -= this.ScrollStep + this.Step - this.CTL;
    this.Pause();
    return;
  }
  else
  {
    if(this.ID.scrollTop <= 0)
    {
    this.ID.scrollTop += this.ClientScroll;
    }
    this.ID.scrollTop -= this.Step;
  }
  break;
  case 2:
  this.CTL += this.Step;
  if(this.CTL >= this.ScrollStep && this.DelayTime > 0)
  {
    this.ID.scrollLeft += this.ScrollStep + this.Step - this.CTL;
    this.Pause();
    return;
  }
  else
  {
    if(this.ID.scrollLeft >= this.ClientScroll)
    {
    this.ID.scrollLeft -= this.ClientScroll;
    }
    this.ID.scrollLeft += this.Step;
  }
  break;
  case 3:
  this.CTL += this.Step;
  if(this.CTL >= this.ScrollStep && this.DelayTime > 0)
  {
    this.ID.scrollLeft -= this.ScrollStep + this.Step - this.CTL;
    this.Pause();
    return;
  }
  else
  {
    if(this.ID.scrollLeft <= 0)
    {
    this.ID.scrollLeft += this.ClientScroll;
    }
    this.ID.scrollLeft -= this.Step;
  }
  break;
}
}
</script>
<!-- 必须包含的js文件 ]] -->
<!-- 例子1 向上滚动 [[ -->
<div id="m">
    <ul>
    <li><a href="http://www.div-css.com/">Web标准化</a></li>
    <li><a href="http://www.div-css.com/html/standard/">Web标准化 XHTML CSS</a></li>
    <li><a href="Ajax/Javascripthttp://www.div-css.com/html/x1/">Ajax/Javascript</a></li>
    <li><a href="http://www.div-css.com/html/web_design/">页面设计</a></li>
    <li><a href="http://www.div-css.com/html/Web_develop/">网站开发</a></li>
    <li><a href="http://www.div-css.com/html/database/">数据库</a></li>
    <li><a href="http://www.div-css.com/html/server/">服务器</a></li>
    <li><a href="http://bbs.div-css.com/">论坛</a></li>
    </ul>
</div>
<script type="text/javascript">
new Marquee("m",0,1,258,60,50,0,0);
</script>
<!-- 例子1 [[ -->
<!-- 例子2 向下滚动 [[ -->
<div id="m0">
<ul>
<li>向下Welcome</li>
<li>向下About us</li>
<li>向下Services</li>
<li>向下Testimonials</a></li>
<li>向下Contact us</a></li>
</ul>
</div>
<script type="text/javascript">
new Marquee("m0",1,1,258,60,50,0,0);
</script>
<!-- 例子2 ]] -->
<!-- 例子3 向左滚动 [[ -->
<div id="m1" style="white-space:nowrap;">想向左就向左<<<<<想向左就向左<<<<<想向左就向左<<<<<。。。</div>
<script type="text/javascript">
new Marquee("m1",2,1,258,60,50,0,0);
</script>
<!-- 例子3 ]] -->
<!-- 例子4 向右滚动 [[ -->
<div id="m2" style="white-space:nowrap;">想向右就向右>>>>>想向右就向右>>>>>想向右就向右>>>>>。。。。</div>
<script type="text/javascript">
new Marquee("m2",3,1,258,60,50,0,0);
</script>
<!-- 例子4 ]] -->

js实现文字内容无缝滚动动画效果 js实现文字内容无缝循环滚动动画效果效果显示 http://t.harjes.cn/wfgd/ 使用方法简单,希望对有需要的人有帮助 立即下载

相关推荐

DIV+CSS纵向横向下拉菜单,JS图片文字横向滚动小例子

DIV+CSS纵向横向下拉菜单,JS图片文字横向滚动,比较实用小例子,和大家分享下!

html css js图片无缝衔接跑马灯效果

【代码】html css js图片无缝衔接跑马灯效果

猿猿网页设计 1995

JS实现title标题栏文字不间断滚动显示效果

本文实例讲述了JS实现title标题栏文字不间断滚动显示效果。分享给大家供大家参考,具体如下: 运行效果截图如下: 具体代码如下: <!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

CSS实现文字跑马灯无缝衔接循环播放

文字跑马灯 文字循环播放 无缝衔接跑马灯

weixin_48996679的博客 1797

前端开发:css3实现文字首尾衔接跑马灯

故事背景 事情是这样的,卤煮无意间得知一款外放效果宇宙无敌第一的手机!!!脑袋一热就趁着阿东618大促搞了一台,毕竟卤煮是一个地道的电子发烧友!!!但是当卤煮查询物流信息的时候。。。。。。 好吧,我这该死的探索欲,被这突兀的跑马灯吸引住了目光(ca,今天看样子是收不到货了!!!) 那就说说怎么实现它吧(这个梗接的就是这么硬) 效果图 逻辑描述 p标签包含俩span标签(提示的文字),要两个span,或者2个以上,p标签定位,改变p标签left值进行运动,运动到第一个span标签的结尾处,看图!!!当第二

yman_pro的博客 9209

实现文字跑马灯的两种方式

实现文字跑马灯的两种方式 1. html实现 使用 marquee 标签,配合它的一些属性,可以实现功能强大的跑马灯文字, <marquee> 跑马灯 html实现 </marquee> 但是,这个 marquee 标签,并没有被W3C标准录入,也就是在未来的某个时候,它可能会被弃用,请慎用 为什么这么好的东东,不被认同呢? 在W3C标准中,规定功能性分离。分成为结构、样式、行为三个部分,这三个部分分别包括了,结构(xHTML、XML),样工(CSS),行为(DOM、EC

m0_37653407的博客 1075

Vue简短代码实现文字首尾无缝跑马灯效果

Vue精简代码实现文字首尾无缝跑马灯效果写在前面效果图子组件代码父组件代码 写在前面 由于HTML自带的marquee标签无法做到上一条文本和下一条文本无缝衔接,所以结合网上的资源自己写了一个,代码不多,仅能横向滚动,可滚动重复滚动一条或多条文本,字数不限制,若想要实现纵向滚动可使用vux组件库的marquee组件。 效果图 gif图展示出来看起来很卡,实际不卡 子组件代码 <templa...

Jerry的博客 6277

html+css+js实现无缝隙跑马灯

js实现从下到上跑马灯效果

用心创作每一篇文章 755

CSS实现文字跑马灯效果

* 最外层盒子,需要三个属性:定宽、文字不换行、超过隐藏 *//* 让前面的几个文字有一个初始的距离,达到更好的呈现效果 */在完成一个任务的时候,要求在表格中固定宽度的其中一个。/* 盒子背景宽度将随文字宽度而进行自适应 *//* 添加动画 */

时光清浅处,一步一安然 6688

css 超出文字头尾相接滚动_【转载】CSS3 ——文本超出设置 超出显示...与跑马灯效果...

桌面平台的开发中,内容超出设定区域的大小时,我们常用的操作有三种,一个是显示,一个是隐藏,一个是出现滚动条。在手机平台的开发中,我们常用的操作也有三种,第一是隐藏,第二是显示“。。。”,第三种是滚动显示。这篇文章主要介绍后两种的用法。现阶段做手机开发,针对的智能手机主要是iPhone和Android,用的浏览器分别是safari和chrome。都是webkit内核,所以下面的实例代码也会针对web...

weixin_39940913的博客 1902

原生js实现中奖信息无间隙滚动效果

知识要点 1.实现原理:通过定时器不断改变列表的top值。而达到无间隙滚动就要对信息列表复制一份,再判断两个列表的top临界值初始化。最后注意的就是 防止动画积存需要对定时器进行清除。 2.用到的属性方法: setInterval() //每隔一定时间执行一次函数,可以无限执行下去 clearInterval() //清除指定的setInterval setTimeout() //经过一定时间执行一次函数,只能执行一次,如果要无限下去需要在函数里自行设置 clearTimeout() //清除指定的setTimeout 剩下的就是一些基础的dom操作 完整代码 注:因为看到了天猫积分的抽奖

纯css动画实现跑马灯效果

该动画主要以@keyframes 延迟动画实现 大致就是在动画加载到百分之多少时“动作”进行到什么程度 比如人去 伸手扶墙 这个“动作” 当你百分之0时不做动作,百分之百时手扶到墙,动作完成 中间那些包括你伸手,手臂打弯等等,在“时间”进行到多少,动作相应的完成到多少 @keyframes myfirst { 0% {left:0px;} 10% {left:-200px;} ...

一念花开丶君临天下 1万+

包教包会,纯 CSS 实现步进环绕跑马灯效果

执行上下文是什么:代码执行前,Js引擎会创建代码的执行环境,代码的执行环境称作执行上下文,包含当前正在运行的代码以及帮助其执行的所有内容。*全局执行上下文:(1)将window作为全局执行上下文对象(2)创建this,this 指向window(3)给变量和函数安排内存空间(4)变量赋值undefined,函数声明放入内存(5)放入作用域链*全局与函数执行上下文不同:(1)全局:在文件执行前创建;函数:在函数调用时创建(2)全局:只创建一次;函数:调用几次创建几次(3)将window作为全局对象;

小陈的博客 913

Css跑马灯/步进图/轮播图

这里两种跑马灯的不同,我们可以看一下。这也是轮播图的两种基础方式,我们可以明显看到两种方式的不同,一种是轮着转,还有一种我称为“闪播图”, <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> <style type="text/css"> //所有div设置 .wrapper div{ .

m0_65878076的博客 1161

html css跑马灯效果,css3实现文字跑马灯(css3跑马灯demo)

一、css3实现文字跑马灯CSS:.marquee {white-space: nowrap;  /* 文字不折行 */overflow:-webkit-marquee;  /* 只有设置为marquee才有滚动效果 */width: 170px;  /* 不是必须的 */-webkit-marquee-direcTIon:left;  /* 文字滚动方向 可选值为left | right | u...

weixin_39822629的博客 715

前端原生 CSS 跑马灯效果,无限轮播(横竖版本,带渐变遮罩,简单实用)

公式:主图张数 * 单个图片宽度(每轮主图只有 4 张,4 张照片为一个周期,如果需要轮播的主图为 7、8、9...张,都一样) *//* 为什么设置 -600px?公式:主图张数 * 单个图片高度(每轮主图只有 4 张,4 张照片为一个周期,如果需要轮播的主图为 7、8、9...张,都一样) *//* 重点:单个图片宽度 200,相当于默认不动可见 3 个 *//* 重点:单个图片高度 150,相当于默认不动可见 1 个 *//* 重点:盒子宽度 600 *//* 重点:盒子宽度 150 */

卡尔特斯 1万+

【css】一个只用css即可实现的完美跑马灯方案

1、一段文字在页面上方滚动播放,即跑马灯。2、鼠标移动上去,字会停住。代码如下:可以自己尝试。

@point 573
上一篇: 获取中国标准时间(由美国官方时间折算)
下一篇: 客户端与服务端的数据交互 PageMethods + JSON
lincnl
博客等级 码龄19年 29粉丝 37原创
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值