全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

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

知识要点

1.实现原理:通过定时器不断改变列表的top值。而达到无间隙滚动就要对信息列表复制一份,再判断两个列表的top临界值初始化。最后注意的就是 防止动画积存需要对定时器进行清除。

2.用到的属性方法:

setInterval() //每隔一定时间执行一次函数,可以无限执行下去
clearInterval() //清除指定的setInterval
setTimeout() //经过一定时间执行一次函数,只能执行一次,如果要无限下去需要在函数里自行设置
clearTimeout() //清除指定的setTimeout

剩下的就是一些基础的dom操作

完整代码

注:因为看到了天猫积分的抽奖页面所以想自己写试试,审查天猫代码看到原理是改变列表top值,无缝滚动是自己瞎琢磨的,估计应该有更高效的方法还请大神指教。。

<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>demo</title>
<style>
body,h1,h2,h3,h4,h5,h6,hr,p,blockquote,dl,dt,dd,ul,ol,li,pre,form,fieldset,legend,button,input,textarea,th,td{margin:0;padding:0;}
h1,h2,h3,h4,h5,h6{font-size:100%;}
address,cite,dfn,em,var{font-style:normal;}
code,kbd,pre,samp{font-family:courier new,courier,monospace;}
ul,ol{list-style:none;}
a{text-decoration:none;}
a:hover{text-decoration:none;}
sup{vertical-align:text-top;}
sub{vertical-align:text-bottom;}
legend{color:#000;}
fieldset,img{border:0;}
button,input,select,textarea{font-size:100%;}
table{border-collapse:collapse;border-spacing:0;}
.clear{clear: both;float: none;height: 0;overflow: hidden;}
.title{background: #D20F25; width: 200px; height: 40px; color: #fff; line-height: 40px;}
.title p{margin-left: 30px;}
#vip{background: #D20F25; width: 200px; height: 105px; color: #FF92AD; overflow: hidden; position: relative; }
#list{position: absolute;}
#vip li{ height: 50px; line-height: 24px; font-size: 12px; margin-left: 30px; }
</style>
</head> 
<body>
 <div class="title"><p>会员中奖榜</p></div>
 <div id="vip">
 <ul id="list" style="top: 0px;">
 <li>m**b<br/>抽中18积分</li>
 <li>小**宫<br/>抽中28积分</li>
 <li>金**告<br/>抽中8积分</li>
 <li>真**生<br/>抽中88积分</li>
 <li>郑**9<br/>抽中18积分</li>
 <li>l**美<br/>抽中8积分</li>
 </ul> 
 </div>
 <script type="text/javascript">
 //在页面加载完后立即执行多个函数方案
 function addloadEvent(func){
  var oldonload=window.onload;
  if(typeof window.onload !="function"){
   window.onload=func;
  }
  else{
   window.onload=function(){
    if(oldonload){
     oldonload(); 
    }
    func();
   }
  }
 }
 //在页面加载完后立即执行多个函数方案结束
 addloadEvent(nes);
 function nes(){
 //获取列表父容器
 var vip=document.getElementById("vip");
 //获取信息列表
 var list=document.getElementById("list");
 //创建第二个列表设置一系列样式id等
 var list1=document.createElement("ul");
  list1.setAttribute("id","list1");
  //初始位置为300正好在第一个列表的下面
  list1.style.top=300+"px";
  list1.style.position="absolute";
  //插入文档流
  vip.appendChild(list1);
  //把第一个列表的结构内容复制给第二个
  list1.innerHTML=list.innerHTML;
 //第一个列表
 function b(){
  //top值为当前的top减10   
  list.style.top=parseInt(list.style.top)-10+"px";
  //如果top值为-300那么初始化top
  if(parseInt(list.style.top)==-300){  
  list.style.top=0;
  }
  //这里是实现间隔滚动判断
  //当top值整除50(每个li的高度)时候清除定时器  
  if(parseInt(list.style.top)%50==0){
  clearInterval(time);
  //然后两秒后再次执行time=setInterval
  se=setTimeout(function(){time=setInterval(b,30);},2000);  
  }     
 };
 //定时器
 time=setInterval(b,30); 
 //第二个列表与第一个列表操作一样,只是修改了高度
 function c(){  
  list1.style.top=parseInt(list1.style.top)-10+"px";
  if(parseInt(list1.style.top)==0){
  list1.style.top=300+"px";
  }
  if(parseInt(list1.style.top)%50==0){
  clearInterval(time1);
  se1=setTimeout(function(){time1=setInterval(c,30);},2000);
  }
 };
 time1=setInterval(c,30); 
 //鼠标移入列表时 清除两个定时器
 vip.onmouseover=function(){  
  clearTimeout(se);
  clearTimeout(se1);
  clearInterval(time);
  clearInterval(time1);
 };
 //鼠标划出时先判断如果定时器在执行则清除
 vip.onmouseout=function(){
  if(time&&time1) {
  clearInterval(time);
  clearInterval(time1)
  }
  if(se&&se1) {
  clearTimeout(se);
  clearTimeout(se1)
  }
  //再次执行定时器
  se=setTimeout(function(){time=setInterval(b,30);},2000); 
  se1=setTimeout(function(){time1=setInterval(c,30);},2000); 
 }; 
 } 
 </script>
</body> 
</html> 

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持!


# 原生js  # 信息无间隙滚动  # 原生js实现滚动效果  # js  # 滚动  # 原生js实现水平方向无缝滚动  # 使用jQuery或者原生js实现鼠标滚动加载页面新数据  # 原生js页面滚动延迟加载图片  # 原生js实现模拟滚动条  # 原生JS绑定滑轮滚动事件兼容常见浏览器  # 原生Js页面滚动延迟加载图片实现原理及过程  # 第一个  # 第二个  # 鼠标  # 多个  # 完后  # 值为  # 临界值  # 加载  # 大神  # 要对  # 每隔  # 还请  # 看到了  # 文档  # li  # legend  # fieldset  # form  # ol  # hr 


相关文章: 宝华建站服务条款解析:五站合一功能与SEO优化设置指南  如何快速查询域名建站关键信息?  如何制作一个表白网站视频,关于勇敢表白的小标题?  建站之星如何助力网站排名飙升?揭秘高效技巧  英语简历制作免费网站推荐,如何将简历翻译成英文?  攀枝花网站建设,攀枝花营业执照网上怎么年审?  高防服务器:AI智能防御DDoS攻击与数据安全保障  义乌企业网站制作公司,请问义乌比较好的批发小商品的网站是什么?  如何快速生成ASP一键建站模板并优化安全性?  广州营销型建站服务商推荐:技术优势与SEO优化解析  mc皮肤壁纸制作器,苹果平板怎么设置自己想要的壁纸我的世界?  c# await 一个已经完成的Task会发生什么  建站主机默认首页配置指南:核心功能与访问路径优化  宝塔新建站点报错如何解决?  公司门户网站制作公司有哪些,怎样使用wordpress制作一个企业网站?  已有域名如何快速搭建专属网站?  制作充值网站的软件,做人力招聘为什么要自己交端口钱?  如何通过智能用户系统一键生成高效建站方案?  如何配置IIS站点权限与局域网访问?  如何在Windows环境下新建FTP站点并设置权限?  如何用PHP工具快速搭建高效网站?  网站好制作吗知乎,网站开发好学吗?有什么技巧?  如何通过免费商城建站系统源码自定义网站主题与功能?  如何自定义建站之星网站的导航菜单样式?  想学网站制作怎么学,建立一个网站要花费多少?  如何在局域网内绑定自建网站域名?  红河网站制作公司,红河事业单位身份证如何上传?  沈阳个人网站制作公司,哪个网站能考到沈阳事业编招聘的信息?  实现点击下箭头变上箭头来回切换的两种方法【推荐】  如何选购建站域名与空间?自助平台全解析  h5在线制作网站电脑版下载,h5网页制作软件?  建站主机解析:虚拟主机配置与服务器选择指南  建站主机选虚拟主机还是云服务器更好?  常州企业网站制作公司,全国继续教育网怎么登录?    建站之星下载版如何获取与安装?  韩国网站服务器搭建指南:VPS选购、域名解析与DNS配置推荐  如何通过云梦建站系统实现SEO快速优化?  开心动漫网站制作软件下载,十分开心动画为何停播?  怎么将XML数据可视化 D3.js加载XML  如何在万网ECS上快速搭建专属网站?  详解ASP.NET 生成二维码实例(采用ThoughtWorks.QRCode和QrCode.Net两种方式)  制作网站的软件免费下载,免费制作app哪个平台好?  建站之星免费模板:自助建站系统与智能响应式一键生成  如何规划企业建站流程的关键步骤?  网站制作外包价格怎么算,招聘网站上写的“外包”是什么意思?  长沙做网站要多少钱,长沙国安网络怎么样?  如何选择CMS系统实现快速建站与SEO优化?  开源网站制作软件,开源网站什么意思?  网站网页制作专业公司,怎样制作自己的网页? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。