中奖人js滚动效果_原生js实现中奖信息无间隙滚动效果
知识要点
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实现中奖信息无间隙滚动效果相关推荐
- vue如何使用原生js写动画效果_原生js写一个无缝轮播图插件(支持vue)
轮播图插件(Broadcast.js) 前言:写这个插件的原因 前段时间准备用vue加上网易云的nodejs接口,模拟网易云音乐移动端.因为想自己写一遍所有的代码以及加固自己的flex布局,所以没有使 ...
- js 控制鼠标_原生js实现改变视频播放速率
前言:前几天考研成绩刚刚出来,有人欢喜有人悲,不管结果怎么样,只要努力过,就不存在遗憾一说.大家都知道考研复习的时候会有大量的时间用来看教学视频,就比如说"张宇高数"等等.考研复习 ...
- js开根号_原生js数值开根算法
不借助Math函数求开根值 1.二分迭代法求n开根后的值 思路: left=0 right=n mid=(left+right)/2 比较mid^2与n大小 =输出: >改变范围,right=m ...
- js检测鼠标是否在操作_原生JS趣味demo:炫酷头像鼠标追随效果的实现
我们常在一些网页中 可以看到鼠标追随效果 一个简单的图片.动画 甚至一小段文字 都可以作为鼠标跟随的载体 之前咱们的直播课中 老师也讲过相关的canvas追随粒子特效 今天 就让我们一起来用原生js ...
- 单机按钮来图片轮播_原生js如何实现轮播图效果?
第一种: 这个是之前写的,比较草率,没有注释,如果这个看不懂就去看第二个,比较仔细,主要是了解他,后面都会有一些插件来使用,很方便,只要几行代码就可写出各种各样的代码,所以,不懂的话,不要太在意, 第 ...
- animate用法 js原生_原生js实现jq的animate效果.js
原生js实现jq的animate效果(有一定bug未修复,有时间补上) //原生js实现jq的animate效果 /** *@param obj 执行动画的元素 *@param css JSON数值对 ...
- android 横向滚动 导航,仿今日头条横向滚动导航栏--原生js
咳咳!先打一波小广告,在上一篇里忘记了,那啥--我的那个个人博客做好了-->(我的博客) 好嘞,言归正传,说说我们的效果. 其实就是实现横向滑动,进行选择. 原理: 鼠标按下,获取当前鼠标坐标, ...
- html 下拉滚动加载,原生js滚动到底部加载数据和下拉刷新 Scrollload
初衷 如今移动端站点越来越多,滚动到底部加载数据和下拉刷新的需求非常的常见,即使现在很多pc站点也会有这样的需求,比如百度首页就有.虽然简单的完成这么一个功能非常方便,但是滚动往往会成为性能的瓶颈,处 ...
- 3d旋转相册代码源码_原生 JS 实现 3D 立方体
访问该URL可查看效果:http://is666a.gitee.io/javascript3d_cube/ 项目源码已上传码云:小朋友/JavaScript 3D立方体 原生 JS 实现 3D 立方体 ...
- 根据id删除localstorage数据_原生js利用localstorage实现简易TODO list应用
前言:小生不才,只懂得一些皮毛,我努力以最简单的语言将心中的想法表述出来,让更多人能够很轻松的弄明白.文章里面有不足之处望各位大牛指出,使得后面的文章能够朝着更好的方向发展.另外,大家记得点赞哟! 欢 ...
最新文章
- 8岁网红博主蝉联YouTube收入榜第一,今年赚了1.8亿
- ios appIcon配置
- caj文件打不开显示内存不足_caj打开文件内存不足 cad内存不足一键修复
- xenserver下的SR,VDI,VBD
- maven中tomcat7-maven-plugin插件的使用
- iOS 二叉树相关算法实现
- 自定义依赖注解无效_最详细的自定义Spring Boot Starter开发教程
- 美团扫码付的前端可用性保障实践
- linux中的进程权限是,Linux中权限,进程,服务的简单操作
- JavaScript数据结构与算法(1)(数组、栈、队列、链表)(ES6)
- 7-38 数列求和-加强版(20 分)
- java 中之循环(for while do-while)详解
- 怎样停止魅族系统的推送服务器,实测可行!如何关闭魅族flyme系统的自带应用推送-魅蓝屏蔽设置...
- word文档中实现目录索引中标题加粗,前导符和页码不加粗
- ArcGIS亚洲字体(CJK)垂直显示
- 【OpenGL】用GLFW和glad创建窗口
- 华为手机刷微博体验更好?技术角度的分析和思考
- 很多情侣看了以后,不在关机
- vscode修改代码颜色
- 哈工大SCIR十篇长文被EMNLP 2022主会及子刊录用
热门文章
- 修改数据库安装的服务器 系统时间,修改数据库服务器的操作系统时间
- 熔断机制什么意思_熔断机制是什么意思 股市熔断是什么意思
- 比赛介绍评委的pp咋做_播音主持专业如何做自我介绍?
- 李维:我的回忆和一些有趣的事(About Borland)(转载)
- aid learning安装应用_Aid Learning
- 迅雷离线下载免费申请体验(3天)
- 图像处理基本方法-python语言生成纯色BMP文件
- java练习案例_Java版打字练习案例源码
- [iOS] Windows 使用IPSW文件升级iOS 13 beta
- 硬件设计必备,电子元器件高清矢量图