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


Posted in Javascript onApril 20, 2020

首先我们需要一个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 相关文章推荐
麦鸡的TAB切换功能结合了javascript和css
Dec 17 Javascript
JavaScript 继承使用分析
May 12 Javascript
js操作textarea 常用方法总结
Dec 03 Javascript
node.js学习总结之调式代码的方法
Jun 25 Javascript
JavaScript类型系统之布尔Boolean类型详解
Jun 26 Javascript
灵活使用数组制作图片切换js实现
Jul 28 Javascript
浅谈React前后端同构防止重复渲染
Jan 05 Javascript
react 创建单例组件的方法
Apr 26 Javascript
使用ECharts实现状态区间图
Oct 25 Javascript
element-ui表格合并span-method的实现方法
May 21 Javascript
实用的Vue开发技巧
May 30 Javascript
微信小程序监听用户登录事件的实现方法
Nov 11 Javascript
vue2.x数组劫持原理的实现
Apr 19 #Javascript
vue2.x 对象劫持的原理实现
Apr 19 #Javascript
基于js判断浏览器是否支持webGL
Apr 18 #Javascript
JavaScript对象字面量和构造函数原理与用法详解
Apr 18 #Javascript
javascript 内存模型实例详解
Apr 18 #Javascript
javascript-hashchange事件和历史状态管理实例分析
Apr 18 #Javascript
javascript使用Blob对象实现的下载文件操作示例
Apr 18 #Javascript
You might like
Content-type 的说明
2006/10/09 PHP
PHP中实现进程间通讯
2006/10/09 PHP
windows下PHP APACHE MYSQ完整配置
2007/01/02 PHP
php文件扩展名判断及获取文件扩展名的N种方法
2015/09/12 PHP
PHP正则匹配日期和时间(时间戳转换)的实例代码
2016/12/14 PHP
php操作redis数据库常见方法实例总结
2020/02/20 PHP
HTA版JSMin(省略修饰语若干)基于javascript语言编写
2009/12/24 Javascript
Javascript 键盘keyCode键码值表
2009/12/24 Javascript
jQuery each()小议
2010/03/18 Javascript
该如何加载google-analytics(或其他第三方)的JS
2010/05/13 Javascript
jquery如何获取复选框的值
2013/12/12 Javascript
Jquery仿IGoogle实现可拖动窗口示例代码
2014/08/22 Javascript
基于JavaScript代码实现pc与手机之间的跳转
2015/12/23 Javascript
JS触发服务器控件的单击事件(详解)
2016/08/06 Javascript
JavaScript第一篇之实现按钮全选、功能
2016/08/21 Javascript
浅谈js的异步执行
2016/10/18 Javascript
JavaScript类的继承操作实例总结
2018/12/20 Javascript
flexible.js实现移动端rem适配方案
2020/04/07 Javascript
Nodejs + sequelize 实现增删改查操作
2020/11/07 NodeJs
[01:16:12]完美世界DOTA2联赛PWL S2 FTD vs Inki 第一场 11.21
2020/11/23 DOTA
Python模拟三级菜单效果
2017/09/11 Python
python利用pandas将excel文件转换为txt文件的方法
2018/10/23 Python
python中dict使用方法详解
2019/07/17 Python
Pycharm IDE的安装和使用教程详解
2020/04/30 Python
浅谈keras中自定义二分类任务评价指标metrics的方法以及代码
2020/06/11 Python
python Gabor滤波器讲解
2020/10/26 Python
三星英国官网:Samsung英国
2018/09/25 全球购物
业务员薪酬管理制度
2014/01/15 职场文书
竞选部门副经理的自荐书范文
2014/02/11 职场文书
优质服务活动实施方案
2014/05/02 职场文书
人力资源职位说明书
2014/07/29 职场文书
群教班子对照检查材料
2014/08/26 职场文书
初中生考试作弊检讨书
2014/12/14 职场文书
2015年植树节活动总结
2015/02/06 职场文书
Redis超详细讲解高可用主从复制基础与哨兵模式方案
2022/04/07 Redis
MySQL慢查询中的commit慢和binlog中慢事务的区别
2022/06/16 MySQL