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 相关文章推荐
js之事件冒泡和事件捕获详细介绍
Oct 28 Javascript
javascript中的作用域和上下文使用简要概述
Dec 05 Javascript
查询json的数据结构的8种方式简介
Mar 10 Javascript
JS常用函数使用指南
Nov 23 Javascript
js如何打印object对象
Oct 16 Javascript
jQuery新窗口打开外链接
Jul 21 Javascript
form表单转Json提交的方法(推荐)
Sep 23 Javascript
easyui-edatagrid.js实现回车键结束编辑功能的实例
Apr 12 Javascript
JS实现动态给标签控件添加事件的方法示例
May 13 Javascript
Element UI 自定义正则表达式验证方法
Sep 04 Javascript
Vue中jsx不完全应用指南小结
Nov 01 Javascript
基于javascript实现贪吃蛇经典小游戏
Apr 10 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
一款简单实用的php操作mysql数据库类
2014/12/08 PHP
SAE实时日志接口SDK用法示例
2016/10/09 PHP
PHP解析url并得到url参数方法总结
2018/10/11 PHP
用jQuery实现检测浏览器及版本的脚本代码
2008/01/22 Javascript
js函数的引用, 关于内存的开销
2012/09/17 Javascript
重写javascript中window.confirm的行为
2012/10/21 Javascript
对js关键字命名的疑问介绍
2014/04/25 Javascript
JS获取时间的方法
2015/01/21 Javascript
如何消除inline-block属性带来的标签间间隙
2016/03/31 Javascript
Vue.js常用指令之循环使用v-for指令教程
2017/06/27 Javascript
JavaScript30 一个月纯 JS 挑战中文指南(英文全集)
2017/07/23 Javascript
快速掌握jquery分页插件jqPaginator的使用方法
2017/08/09 jQuery
vue与bootstrap实现简单用户信息添加删除功能
2019/02/15 Javascript
浅谈JavaScript中等号、双等号、 三等号的区别
2020/08/06 Javascript
vue 判断两个时间插件结束时间必选大于开始时间的代码
2020/11/04 Javascript
解决vant框架做H5时踩过的坑(下拉刷新、上拉加载等)
2020/11/11 Javascript
[02:36]DOTA2亚洲邀请赛小组赛精彩集锦:EE凭借法力虚空拿下4杀
2017/03/30 DOTA
[02:50]【扭转乾坤,只此一招】DOTA2永雾林渊版本开启新篇章
2020/12/22 DOTA
python实现每次处理一个字符的三种方法
2014/10/09 Python
Python2.7基于淘宝接口获取IP地址所在地理位置的方法【测试可用】
2017/06/07 Python
Python3使用PyQt5制作简单的画板/手写板实例
2017/10/19 Python
python 中if else 语句的作用及示例代码
2018/03/05 Python
django之状态保持-使用redis存储session的例子
2019/07/28 Python
关于PyTorch源码解读之torchvision.models
2019/08/17 Python
Python 获取指定文件夹下的目录和文件的实现
2019/08/30 Python
Python for循环及基础用法详解
2019/11/08 Python
python下载卫星云图合成gif的方法示例
2020/02/18 Python
标签和贴纸印刷:Lightning Labels
2018/03/22 全球购物
Dillard’s百货官网:Dillards.com
2018/05/26 全球购物
历史系毕业生自荐信
2013/10/28 职场文书
生产副总岗位职责
2013/11/28 职场文书
护士的自我鉴定
2014/02/07 职场文书
销售工作决心书
2015/02/04 职场文书
物业保洁员管理制度
2015/08/05 职场文书
想创业成功,需要掌握这些要点
2019/12/06 职场文书
Java实战之用Swing实现通讯录管理系统
2021/06/13 Java/Android