知识要点

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

2.用到的属性方法:

setInterval() //每隔一定时间执行一次函数,可以无限执行下去

clearInterval() //清除指定的setInterval

setTimeout() //经过一定时间执行一次函数,只能执行一次,如果要无限下去需要在函数里自行设置

clearTimeout() //清除指定的setTimeout

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

完整代码

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

demo

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; }

会员中奖榜

  • m**b
    抽中18积分
  • 小**宫
    抽中28积分
  • 金**告
    抽中8积分
  • 真**生
    抽中88积分
  • 郑**9
    抽中18积分
  • l**美
    抽中8积分

//在页面加载完后立即执行多个函数方案

function addloadEvent(func){

var oldοnlοad=window.onload;

if(typeof window.onload !="function"){

window.οnlοad=func;

}

else{

window.οnlοad=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.οnmοuseοver=function(){

clearTimeout(se);

clearTimeout(se1);

clearInterval(time);

clearInterval(time1);

};

//鼠标划出时先判断如果定时器在执行则清除

vip.οnmοuseοut=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);

};

}

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

中奖人js滚动效果_原生js实现中奖信息无间隙滚动效果相关推荐

  1. vue如何使用原生js写动画效果_原生js写一个无缝轮播图插件(支持vue)

    轮播图插件(Broadcast.js) 前言:写这个插件的原因 前段时间准备用vue加上网易云的nodejs接口,模拟网易云音乐移动端.因为想自己写一遍所有的代码以及加固自己的flex布局,所以没有使 ...

  2. js 控制鼠标_原生js实现改变视频播放速率

    前言:前几天考研成绩刚刚出来,有人欢喜有人悲,不管结果怎么样,只要努力过,就不存在遗憾一说.大家都知道考研复习的时候会有大量的时间用来看教学视频,就比如说"张宇高数"等等.考研复习 ...

  3. js开根号_原生js数值开根算法

    不借助Math函数求开根值 1.二分迭代法求n开根后的值 思路: left=0 right=n mid=(left+right)/2 比较mid^2与n大小 =输出: >改变范围,right=m ...

  4. js检测鼠标是否在操作_原生JS趣味demo:炫酷头像鼠标追随效果的实现

    我们常在一些网页中 可以看到鼠标追随效果 一个简单的图片.动画 甚至一小段文字 都可以作为鼠标跟随的载体 之前咱们的直播课中 老师也讲过相关的canvas追随粒子特效 今天 就让我们一起来用原生js ...

  5. 单机按钮来图片轮播_原生js如何实现轮播图效果?

    第一种: 这个是之前写的,比较草率,没有注释,如果这个看不懂就去看第二个,比较仔细,主要是了解他,后面都会有一些插件来使用,很方便,只要几行代码就可写出各种各样的代码,所以,不懂的话,不要太在意, 第 ...

  6. animate用法 js原生_原生js实现jq的animate效果.js

    原生js实现jq的animate效果(有一定bug未修复,有时间补上) //原生js实现jq的animate效果 /** *@param obj 执行动画的元素 *@param css JSON数值对 ...

  7. android 横向滚动 导航,仿今日头条横向滚动导航栏--原生js

    咳咳!先打一波小广告,在上一篇里忘记了,那啥--我的那个个人博客做好了-->(我的博客) 好嘞,言归正传,说说我们的效果. 其实就是实现横向滑动,进行选择. 原理: 鼠标按下,获取当前鼠标坐标, ...

  8. html 下拉滚动加载,原生js滚动到底部加载数据和下拉刷新 Scrollload

    初衷 如今移动端站点越来越多,滚动到底部加载数据和下拉刷新的需求非常的常见,即使现在很多pc站点也会有这样的需求,比如百度首页就有.虽然简单的完成这么一个功能非常方便,但是滚动往往会成为性能的瓶颈,处 ...

  9. 3d旋转相册代码源码_原生 JS 实现 3D 立方体

    访问该URL可查看效果:http://is666a.gitee.io/javascript3d_cube/ 项目源码已上传码云:小朋友/JavaScript 3D立方体 原生 JS 实现 3D 立方体 ...

  10. 根据id删除localstorage数据_原生js利用localstorage实现简易TODO list应用

    前言:小生不才,只懂得一些皮毛,我努力以最简单的语言将心中的想法表述出来,让更多人能够很轻松的弄明白.文章里面有不足之处望各位大牛指出,使得后面的文章能够朝着更好的方向发展.另外,大家记得点赞哟! 欢 ...

最新文章

  1. 8岁网红博主蝉联YouTube收入榜第一,今年赚了1.8亿
  2. ios appIcon配置
  3. caj文件打不开显示内存不足_caj打开文件内存不足 cad内存不足一键修复
  4. xenserver下的SR,VDI,VBD
  5. maven中tomcat7-maven-plugin插件的使用
  6. iOS 二叉树相关算法实现
  7. 自定义依赖注解无效_最详细的自定义Spring Boot Starter开发教程
  8. 美团扫码付的前端可用性保障实践
  9. linux中的进程权限是,Linux中权限,进程,服务的简单操作
  10. JavaScript数据结构与算法(1)(数组、栈、队列、链表)(ES6)
  11. 7-38 数列求和-加强版(20 分)
  12. java 中之循环(for while do-while)详解
  13. 怎样停止魅族系统的推送服务器,实测可行!如何关闭魅族flyme系统的自带应用推送-魅蓝屏蔽设置...
  14. word文档中实现目录索引中标题加粗,前导符和页码不加粗
  15. ArcGIS亚洲字体(CJK)垂直显示
  16. 【OpenGL】用GLFW和glad创建窗口
  17. 华为手机刷微博体验更好?技术角度的分析和思考
  18. 很多情侣看了以后,不在关机
  19. vscode修改代码颜色
  20. 哈工大SCIR十篇长文被EMNLP 2022主会及子刊录用

热门文章

  1. 修改数据库安装的服务器 系统时间,修改数据库服务器的操作系统时间
  2. 熔断机制什么意思_熔断机制是什么意思 股市熔断是什么意思
  3. 比赛介绍评委的pp咋做_播音主持专业如何做自我介绍?
  4. 李维:我的回忆和一些有趣的事(About Borland)(转载)
  5. aid learning安装应用_Aid Learning
  6. 迅雷离线下载免费申请体验(3天)
  7. 图像处理基本方法-python语言生成纯色BMP文件
  8. java练习案例_Java版打字练习案例源码
  9. [iOS] Windows 使用IPSW文件升级iOS 13 beta
  10. 硬件设计必备,电子元器件高清矢量图