JS实现横向跑马灯效果代码

 更新时间:2020年04月20日 08:25:32   作者:经典鸡翅  
这篇文章主要介绍了JS实现横向跑马灯效果代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

首先我们需要一个html代码的框架如下:

<div style="position: absolute; top: 0px; left: 168px; width: 100%; margin-left: auto; margin-right: auto; height: 47px; border: 0px solid red; overflow: hidden;">
    <ul id="syNoticeUlNew" style="margin: 0px;left:0; top:0;margin-bottom:0px;width:100%;height:47px;position:absolute;">

    </ul>
  </div>

我们的目的是实现ul中的内容进行横向的一点一点滚动。ul中的内容应该是动态的。于是应该发送ajax来进行内容的获取拼接。

$.ajax({
      type:"post",
      dataType:"json",
      url:"${contextPath}/indexPage/getSyNoticeInfo",
      success:function(result){
        var totalStr = "";
        if(result.length>0){
          for(var i=0 ; i<result.length;i++){
            str = "<li style=\"list-style: none;display:inline-block;float:left;height:47px;padding-right:50px;line-height:47px;\">"+
             "<a style=\"color:white;\" class=\"sstzNoticeStyle\">"+result[i].peopleName+"</a>"+
             "</li>";
            totalStr +=str;
          }
        }
        $("#syNoticeUlNew").empty();
        $('#syNoticeUlNew').html(totalStr);
        syRunHorseLight();
      }
    });

拼接li时候有个class为sstzNoticeStyle。其样式如下:

.sstzNoticeStyle{
  color:white; font-size:16px;text-decoration:none;
}
.sstzNoticeStyle:hover{
  color:white; font-size:16px;text-decoration:none;
}

ajax调用syRunHorseLight函数,函数如下:

function syRunHorseLight() {
    if (syTimer != null) {
      clearInterval(syTimer);
    }
    var oUl = document.getElementById("syNoticeUlNew");
    if(oUl != null){
      oUl.innerHTML += oUl.innerHTML;
      oUl.innerHTML += oUl.innerHTML;
      oUl.innerHTML += oUl.innerHTML;
      var lis = oUl.getElementsByTagName('li');
      var lisTotalWidth = 0;
      var resetWidth = 0;
      for (var i = 0; i < lis.length; i++) {
        lisTotalWidth += lis[i].offsetWidth;
      }
      for (var i = 1; i <= lis.length / 4; i++) {
        resetWidth += lis[i].offsetWidth;
      }
      oUl.style.width = lisTotalWidth + 'px';
      var left = 0;
      syTimer = setInterval(function() {
        left -= 1;
        if (left <= -resetWidth) {
          left = 0;
        }
        oUl.style.left = left + 'px';
      }, 20)
      $("#syNoticeUlNew").hover(function() {
        clearInterval(syTimer);
      }, function() {
        clearInterval(syTimer);
        syTimer = setInterval(function() {
          left -= 1;
          if (left <= -resetWidth) {
            left = 0;
          }
          oUl.style.left = left + 'px';
        }, 20);
      })
    }
  }

跑马灯效果就此实现。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • Javascript类型转换的规则实例解析

    Javascript类型转换的规则实例解析

    这篇文章主要介绍了Javascript类型转换的规则实例解析,涉及到javascript类型转换相关知识,对本文感兴趣的朋友一起学习吧
    2016-02-02
  • javascript中this关键字详解

    javascript中this关键字详解

    本文介绍了javascript中this关键字,并将有关this的关键字知识列成一个list,会有助于我们理清思路,是一个很好的学习方法。强烈推荐。
    2016-12-12
  • js序列化和反序列化的使用讲解

    js序列化和反序列化的使用讲解

    今天小编就为大家分享一篇关于js序列化和反序列化的使用讲解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-01-01
  • js 判断脚本加载完毕的代码

    js 判断脚本加载完毕的代码

    记录一段代码,用来判断脚本是否加载完毕。
    2011-07-07
  • vue渲染大量数据时卡顿卡死解决方法

    vue渲染大量数据时卡顿卡死解决方法

    这篇文章主要介绍了vue渲染大量数据时发生卡顿卡死问题时的解决方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-08-08
  • JavaScript单元测试ABC

    JavaScript单元测试ABC

    在服务器端的单元测试中,都有各种各样的测试框架,在JavaScript中现在也有一些很优秀的框架,但在本文中,我们将自己动手一步步来实现一个简单的单元测试框架
    2012-04-04
  • JavaScript实现存储HTML字符串示例

    JavaScript实现存储HTML字符串示例

    这篇文章主要介绍了JavaScript存储HTML字符串的具体实现,需要的朋友可以参考下
    2014-04-04
  • 微信小程序学习笔记之表单提交与PHP后台数据交互处理图文详解

    微信小程序学习笔记之表单提交与PHP后台数据交互处理图文详解

    这篇文章主要介绍了微信小程序学习笔记之表单提交与PHP后台数据交互处理,结合实例形式详细分析了微信小程序前台数据form表单提交及后台使用php进行处理相关操作技巧,并配以图文形式详细说明,需要的朋友可以参考下
    2019-03-03
  • js防止表单重复提交的两种方法

    js防止表单重复提交的两种方法

    第一种:用flag标识,下面的代码设置checkSubmitFlg标志;第二种:在onsubmit事件中设置,在第一次提交后使提交按钮失效,感兴趣的朋友可以了解下
    2013-09-09
  • 在 TypeScript 中使用泛型的方法

    在 TypeScript 中使用泛型的方法

    这篇文章主要介绍了在TypeScript中使用泛型的方法,泛型是静态类型语言的基本特征,允许将类型作为参数传递给另一个类型、函数、或者其他结构
    2022-06-06

最新评论