Class Of Marquee Scroll通用不间断滚动JS封装类
浅谈JS无缝轮播图插件封装
浅谈无缝轮播图插件封装前言:页面中轮播图,对于一个前端开发者来说,是最基本的技能,不论是的商城,还是企业站,轮播图已经成为不可缺少的一个模块,而常见的轮播图不外乎两种,一种是渐隐渐现轮播图,一种是无缝轮播图。
网上关于轮播图的件也有很多,但是用人家的代码总会出现各种各样的bug,我们修改bug往往要耗费很多时间,而且有些插件的效果还不符合我们的需求,那么我们该如何封装一个自己的轮播插件呢?这就是我们今天的任务,封装轮播插件。
1、特效离不开合理的页面布局,所以我们首先需要进行页面布局:HTML代码:<div class="container mycontainer"><div class="wrapper"><div class="slide"><img src="image/jd01.jpg"alt=""></div><div class="slide"><img src="image/jd02.jpg"alt=""></div><div class="slide"><img src="image/jd03.jpg"alt=""></div><div class="slide"><img src="image/jd04.jpg"alt=""></div></div><!-- 分页器 --><ul class="pagination"></ul><!-- 导航按钮 --><div class="button-pre"></div><div class="button-next"></div></div>2、在HTML页面中引入css样式文件:css样式文件代码如下:CSS代码:* {margin: 0;padding: 0;}ul,li {list-style: none;}.container {margin: 200px auto;position: relative;overflow: hidden;}.slide {float: left;}img {display: block;}.pagination {width: 160px;position: absolute;bottom: 30px;margin-left: -80px;left: 50%;}.pagination li {float: left;width: 20px;height: 20px;background-color: blue;margin: 010px;border-radius: 50%;}.button-pre,.button-next {width: 22px;height: 40px;position: absolute;top: 50%;margin-top: -20px;}.button-pre {left: 30px;background: url('../image/left.png') no-repeat center center;}.button-next {right: 30px;background: url('../image/right.png') no-repeat center center;}.pagination.active {background-color: red;}.mycontainer{width: 590px;height: 470px;}页面布局完成后,接下来就是javaScript代码,绑定事件;在绑定事件之前,我们首先要知道无缝轮播图的原理和一些技术关键点。
原生JS实现各个方向无缝滚动
最近在做一个网站时遇到了无缝滚动的问题,经过几个小时,最后自己写好了,当然中间遇到了部分问题。
scrollRight这个属性在DW提示有,但是实际没有,访问提示undefined,滚动的时候目前本人css水平有限,没有能实现全div+css的(水平的时候);因为采用复制一份替补的方法,所以要保持原和复制在同一行,而DIV左右浮动都不可以,父级容器宽度不够时,自动错行了。
所以用DIV两列实现。
垂直的时候可以用纯DIV,所以这里提示,在实际操作过程中,如果你要水平滚动时,请使用表格两列布局。
代码基本原理参照代码中的注释。
代码如下:<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "bbb:///TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="bbb:///1999/xhtml"><head><title></title></head><body><div class="kfhz10 fl"><img src="{dede:global.cfg_cmsurl/}/templets/delyy/images/kfhz.jpg" /></div><div class="zjjs10 fl"><div class="zjjs10_tt">对癌症的发生发展以及抗癌防</div><div id="left" style="cursor:pointer"><<</div><div id="right" style="cursor:pointer">>></div><div id="mq12" style="width:900px; overflow:hidden; height:214px; position:relative;"> <table><tbody><tr><td id="mq12_a"><div class="zjjs10_con"><div class="inzjjs10_con"><div class="zjjs10_con_pic"><div class="zjjs10_con_pic_l"><img src="{dede:global.cfg_cmsurl/}/templets/delyy/images/zj/wzx.jpg" width="140" height="184" /></div><div class="zjjs10_con_pic_r"><h3>ddddd</h3><p class="bz">腺性膀胱炎</p><p class="js">对癌症的发生发展以及抗癌防,对癌症的发生发展以及抗癌防</p><p class="zx"><a href="#" class="tt01">我要预约</a><a href="#" class="tt02">咨询</a></p></div><div class="t_clr"></div></div><div class="zjjs10_con_pic"><div class="zjjs10_con_pic_l"><imgsrc="{dede:global.cfg_cmsurl/}/templets/delyy/images/zj/ll.jpg" width="140" height="184" /></div><div class="zjjs10_con_pic_r"><h3>aaaaaaa</h3><p class="bz">腺性膀胱炎</p><p class="js">对癌症的发生发展以及抗癌防,对癌症的发生发展以及抗癌防</p><p class="zx"><a href="#" class="tt01">我要预约</a><a href="#" class="tt02">咨询</a></p></div><div class="t_clr"></div></div><div class="zjjs10_con_pic"><div class="zjjs10_con_pic_l"><img src="{dede:global.cfg_cmsurl/}/templets/delyy/images/zj/lrk.jpg" width="140" height="184" /></div><div class="zjjs10_con_pic_r"><h3>ggggggg</h3><p class="bz">腺性膀胱炎</p><p class="js">对癌症的发生发展以及抗癌防,对癌症的发生发展以及抗癌防</p><p class="zx"><a href="#" class="tt01">我要预约</a><a href="#" class="tt02">咨询</a></p></div><div class="t_clr"></div></div><div class="zjjs10_con_pic"><div class="zjjs10_con_pic_l"><img src="{dede:global.cfg_cmsurl/}/templets/delyy/images/zj/hxl.jpg" width="140" height="184" /></div><div class="zjjs10_con_pic_r"><h3>yyyyyyy</h3><p class="bz">腺性膀胱炎</p><p class="js">对癌症的发生发展以及抗癌防,对癌症的发生发展以及抗癌防</p><p class="zx"><a href="#" class="tt01">我要预约</a><a href="#" class="tt02">咨询</a></p></div><div class="t_clr"></div></div><div class="zjjs10_con_pic"><div class="zjjs10_con_pic_l"><img src="{dede:global.cfg_cmsurl/}/templets/delyy/images/zj/jym.jpg" width="140" height="184" /></div><div class="zjjs10_con_pic_r"><h3>xxx</h3><p class="bz">腺性膀胱炎</p><p class="js">对癌症的发生发展以及,对癌症的发生发展以及抗癌防</p><p class="zx"><a href="#" class="tt01">我要预约</a><a href="#" class="tt02">咨询</a></p></div><div class="t_clr"></div></div><div class="t_clr"></div></div></div></td></tr><tr><!--想看左右效果时,请删除此处的</tr><tr>,并在下边的调用样例时使用left,right或者1,2做为参数--><td id="mq12_b"><div class="zjjs10_con"></div></td></tr></tbody></table></div></div><script type="text/javascript">window.onload = function(){//调用样例scrollD('mq12','bottom',30,1,document.getElementById('left'),document.getElementById('rig ht'));};function scrollD(id,direction,interval,length,l,r){//滚动区域主ID,滚动方向,滚动间隔时间,滚动步长,滚动方向控制按钮1,滚动方向控制按钮2var a = document.getElementById(id + '_a');//原,需要滚动的内容var b = document.getElementById(id + '_b');//放原的复制的容器var c = document.getElementById(id);//原和复制的父级容器,滚动的主要控制容器b.innerHTML = a.innerHTML;//复制原到复制容器if(typeof(direction) == 'undefined'){//默认方向左direction = 'left';}if(typeof(interval) == 'undefined'){//默认时间interval = 30;//30ms}if(typeof(length) == 'undefined'){//默认步进length = 1;//1px}//判断滚动方向,设置默认滚动偏移if(direction == 'left' || direction == 1){c.scrollLeft = 0;} else if(direction == 'right' || direction == 2){c.scrollLeft = b.offsetWidth;} else if(direction == 'top' || direction == 3){c.scrollTop = 0;} else if(direction == 'bottom' || direction == 4){c.scrollTop = b.offsetHeight;}//滚动实现函数var marquee = function(){if(direction == 'left' || direction == 1){if(a.offsetWidth-c.scrollLeft<=0){//当滚动至demo1与demo2交界时c.scrollLeft-=b.offsetWidth; //demo跳到最顶端}else{c.scrollLeft+=length;}} else if(direction == 'right' || direction == 2){if(c.scrollLeft <= 0){//当滚动至demo1与demo2交界时c.scrollLeft = a.offsetWidth; //demo跳到最顶端}else{c.scrollLeft -= length;}} else if(direction == 'top' || direction == 3){if(a.offsetHeight - c.scrollTop<=0){//当滚动至demo1与demo2交界时c.scrollTop -= b.offsetHeight //demo跳到最顶端}else{c.scrollTop += length;}} else if(direction == 'bottom' || direction == 4){if(c.scrollTop <= 0)//当滚动至demo1与demo2交界时c.scrollTop = a.offsetHeight //demo跳到最顶端else{c.scrollTop -= length;}}}//开始滚动var t = setInterval(function(){marquee();},interval);c.onmouseover = function(){clearInterval(t);} //鼠标经过停止//鼠标移开继续滚动c.onmouseout = function(){t = setInterval(function(){marquee();},interval);}//滚动按钮1单击时l.onclick = function(){clearInterval(t);if(direction == 'left' || direction == 1 || direction == 'right' || direction == 2){//水平滚动时direction = 'left';//向左c.scrollLeft-=b.offsetWidth; //demo跳到最左端} else {//垂直时direction = 'top';//向上c.scrollTop-=b.offsetHeight //demo跳到最顶端}//重启滚动t = setInterval(function(){marquee();},interval);}//控制按钮2单击时r.onclick = function(){clearInterval(t);//先清除滚动if(direction == 'top' || direction == 3 || direction == 'bottom' || direction == 4){//垂直滚动时direction = 'bottom';c.scrollTop-=b.offsetHeight //demo跳到最底端} else {//水平滚动时direction = 'right';c.scrollLeft-=b.offsetWidth; //demo跳到最右端}t = setInterval(function(){marquee();},interval);}}</script><style type="text/css">@charset "gb2312";/* CSS Document */.zjjs10 {width:960px; height:277px; background:url(../images/zjjs.jpg) no-repeat;}.zjjs10_tt {width:960px; height:50px; line-height:50px; text-align:center; font-weight:bold; color:#FFF;}.zjjs10_con {margin:0 auto; padding-top:20px;width:auto; height:auto; overflow:hidden;}.inzjjs10_con {width:1500px; height:auto; display:inline-block;}.zjjs10_con_pic {width:300px; height:auto; float:left;}.zjjs10_con_pic_l {float:left; width:140px; padding:4px; border:#CCC 1px solid;}.zjjs10_con_pic_r {float:right; width:140px; padding-right:5px;}.zjjs10_con h3 {color:#000;}.zjjs10_con .bz {color:#009933; margin:5px 0px;}.zjjs10_con .js {color:#333; margin:5px 0px;}.zjjs10_con .zx {wdith:108px; height:23px; line-height:23px; background:url(../images/yue_bg.gif) no-repeat; margin:5px 0px;}.zjjs10_con .zx .tt01 {color:#FFF; font-size:12px; padding-left:10px;}.zjjs10_con .zx .tt02 {color:#F00; font-size:12px; padding-left:10px;}.t_clr { clear:both;}</style></body></html>[文档可能无法思考全面,请浏览后下载,另外祝您生活愉快,工作顺利,万事如意!]。
js scroll方法
js scroll方法JS scroll方法是JavaScript中用于实现滚动效果的方法。
通过scroll方法,我们可以控制网页元素在页面上的滚动行为,包括向上滚动、向下滚动等。
本文将详细介绍JS scroll方法的使用及其相关知识点。
一、基本概念滚动效果是指将网页内容的一部分或全部在视窗内滚动显示的效果。
当网页内容超出视窗大小时,我们可以通过滚动操作来查看被隐藏的内容。
JS scroll方法就是用来实现这种滚动效果的。
二、使用方法JS scroll方法可以通过以下两种方式进行调用:1. 通过元素对象调用,例如:element.scroll(x, y);2. 通过window对象调用,例如:window.scroll(x, y)。
其中,x和y是指定滚动位置的水平和垂直坐标。
当指定为0时,表示滚动到顶部或左侧;当指定为元素的宽度或高度时,表示滚动到底部或右侧。
例如,element.scroll(0, 0)表示将元素滚动到顶部。
三、常见应用场景1. 页面导航:通过scroll方法可以实现点击导航菜单时页面平滑滚动到指定位置的效果,提升用户体验。
2. 无限滚动:通过监听滚动事件,当网页滚动到底部时,自动加载更多内容,实现无限滚动效果。
3. 轮播图:通过scroll方法和定时器可以实现自动滚动的轮播图效果,展示多张图片或广告。
四、注意事项1. scroll方法只能用于具有滚动条的元素,如div、iframe等,不能用于普通的文本或图片元素。
2. 在使用scroll方法时,需要注意元素的定位方式,通常需要设置元素的position属性为relative或absolute,以便正确计算滚动位置。
3. 在滚动到指定位置后,可以使用scrollTop和scrollLeft属性获取滚动位置,以便进行进一步的操作。
五、示例代码下面是一个简单的示例代码,演示了如何使用JS scroll方法实现页面导航的滚动效果:```html<!DOCTYPE html><html><head><style>#content {height: 1000px;overflow: auto;}#section1, #section2, #section3 { height: 500px;}</style></head><body><div id="content"><div id="section1"><h1>Section 1</h1><p>This is section 1.</p></div><div id="section2"><h1>Section 2</h1><p>This is section 2.</p></div><div id="section3"><h1>Section 3</h1><p>This is section 3.</p></div></div><script>var navLinks = document.querySelectorAll('a');var sections = document.querySelectorAll('div');for (var i = 0; i < navLinks.length; i++) {navLinks[i].addEventListener('click', function(e) {e.preventDefault();var target = document.querySelector(this.getAttribute('href'));window.scroll({top: target.offsetTop,behavior: 'smooth'});});}</script></body></html>```在上述示例代码中,我们使用了一个包含多个div元素的父容器content,并为每个div元素添加了一个id属性作为锚点。
使用JavaScript实现连续滚动字幕效果的方法
使⽤JavaScript实现连续滚动字幕效果的⽅法我们⼀般都⽤Marquee标签控制元素的滚动。
但是单向的Marquee滚动是不连续的,每滚完⼀幕,就会出现⼀次空⽩。
⽽下⾯介绍中的滚动则是连续的,毫不间断。
下⾯为你介绍这是如何实现的。
为了滚动能够“连续”,我们需要将字幕的内容复制多遍,直到内容的⾼度不⼩于滚动区⾼度的两倍。
然后我们将溢出的滚动条隐藏掉,⽤代码控制滚动条向下移动(这时内容将向上移动)。
当滚动条滚动到最下⽅时,理论上不能再往下滚动了,于是我们⽴刻调整滚动条,将它向上滚动到⼀个和当前画⾯⼀样的位置。
结果我们看到的就是连续的滚动了。
呵呵,说的就是这么简单,那做起来如何呢?我们看看是如何逐步实现的。
<div id="marquees"> <!-- 这些是字幕的内容,你可以任意定义 --> <a href="#">链接⼀</a><br> <a href="#">链接⼆</a><br> <a href="#">链接三</a><br> <a href="#">链接四</a><br> <!-- 字幕内容结束 --></div><!-- 以下是java-script代码 --><script language="java-script"><!--marqueesHeight=200; //内容区⾼度stopscroll=false; //这个变量控制是否停⽌滚动with(marquees){noWrap=true; //这句表内容区不⾃动换⾏style.width=0; //于是我们可以将它的宽度设为0,因为它会被撑⼤style.height=marqueesHeight;style.overflowY="hidden"; //滚动条不可见onmouseover=new Function("stopscroll=true"); //⿏标经过,停⽌滚动onmouseout=new Function("stopscroll=false"); //⿏标离开,开始滚动}//这时候,内容区的⾼度是⽆法读取了。
scroll.js用法
scroll.js用法Scroll.js是一种JS插件,用于创建响应式的滚动效果。
它可以应用于各种网站,包括个人博客、商业网站、企业网站等。
使用Scroll.js可以为网站添加一些可视化元素,如动画、背景图像、视频等。
Scroll.js基于jQuery开发,非常简便易用,但功能却强大。
它可以控制页面的滚动,并且可以根据滚动位置展示不同的效果。
例如,当用户滚动到某些部分时,某些元素会弹出或淡入,或者是切换背景或改变字体大小。
使用Scroll.js的方法:Step1. 将scroll.js引入html页面中。
Step2. 在html页面中,为需要应用滚动效果的元素添加class=”scroll” 属性。
例如:<divclass=”scroll”>基础<br>知识</div>Step3. 在Javascript文件中,为每一个需要滚动的元素创建scroll实例。
例如:var basicScroll =scroll('.scroll', {duration:1000, delay:0,reset:true});其中,’.scroll’是选择器,用于选择需要应用滚动效果的元素。
duration属性表示滚动时间,delay属性表示滚动延迟时间,reset属性表示是否重置滚动效果。
Step4. 最后,在css文件中,为scroll类添加样式属性。
例如:.scroll{opacity: 0; transform: translateY(200px);}.scroll元素在滚动效果开始前应该看不见,因此需要将opacity属性设为0。
在滚动过程中,元素应该向上运动,因此transform属性应该设为translateY(200px)。
使用Scroll.js的好处:1. 减少页面加载时间使用Scroll.js可以减少页面加载时间。
这是因为滚动效果是通过Javascript运行的,而非在服务器端生成的。
js不间断滚动的简单教程
js不间断滚动的简单教程内容不间断向左滚动,相当于不断向右移动滚动条,内容向左滚动。
要点一:scrollLeft 使用:id.scrollLeft例如下面的简单的例子,当文字向左滚动的时候,就可以看到滚动条在向右移动要点二:setInterval 使用:var timer = setInterval(func,100);每隔多长时间,执行一次<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN""/TR/xhtml1/DTD/xhtml1-transitional.dtd"& gt;<html xmlns="/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=gb2312" /><title>无标题文档</title><style>body,div{margin:0;padding:0;}.wrapper{width:200px; height:50px; line-height:30px; overflow-x:scroll; overflow-y:hidden; border:1px solid #ccc;} .w1{width:400px;}</style></head><body><div id="s" class="wrapper"> <div class="w1">内容1内容2内容3内容4内容5内容6内容7</div></div><script>function scroll(){var a = document.getElementById("s");a.scrollLeft++;}var timer = setInterval(scroll,50);</script></body></html>复制代码要点三:offsetWidth 对象的可见宽度,包括滚动条等边线,会随窗口的显示大小改变要点四:innerHTML 设置或获取位于对象起始和结束标签内的HTML<!DOCTYPE html><html><head><meta http-equiv="Content-Type" content="text/html; charset=gb2312" /><title>无标题文档</title><style>body,div{margin:0;padding:0;}body{padding:20px;}#box{width:300px; height:50px; line-height:30px;overflow-x:scroll; overflow-y:hidden; border:1px solid #ccc;} #c{width:800px;}#c1,#c2{width:400px;float:left;}</style></head><body><div id="box"><div id="c"><div id="c1">内容1内容2内容3内容4内容5内容6内容7</div><div id="c2"></div></div></div><script>var c1 = document.getElementById("c1");var c2 = document.getElementById("c2");c2.innerHTML = c1.innerHTML; function scroll(){var a = document.getElementById("box");if(a.scrollLeft >= c2.offsetWidth){a.scrollLeft=0;}else{a.scrollLeft++;}}var timer = setInterval(scroll,60);</script></body></html>复制代码说明:让box的scrollLeft++,就可以向左滚动。
如何使用JavaScript实现无限滚动列表
如何使用JavaScript实现无限滚动列表随着互联网的发展,无限滚动列表成为了现代网页设计的常见组件,它提供了更流畅且便捷的浏览体验。
无限滚动列表可以在用户触发滚动事件时自动加载更多内容,使用户可以无需翻页就可以浏览大量的数据。
本文将介绍如何使用JavaScript实现无限滚动列表的功能。
1. 确定数据源在实现无限滚动列表之前,我们首先需要确定数据源。
数据源可以是数据库中的数据、通过API获取的数据,甚至是本地的静态数据文件。
在本文中,我们以API为例来演示。
2. 获取并渲染初始数据在页面加载时,我们需要通过JavaScript获取初始数据,并将其渲染到页面上。
可以使用XMLHttpRequest或Fetch API来进行数据的异步请求。
接下来,我们将获取到的数据进行解析,并将其渲染到列表容器中。
3. 监听滚动事件一旦初始数据渲染完成,我们就需要监听滚动事件以触发无限滚动的加载。
在元素滚动时,可以使用scroll事件来检测滚动位置是否达到了某个阈值。
通常情况下,当滚动位置接近列表底部时,我们将触发加载新数据的操作。
4. 加载新数据当滚动位置达到阈值时,我们需要触发加载新数据的操作。
可以通过API请求来获取新数据,并将其渲染到列表容器的末尾。
为了避免重复加载数据,我们可以设置一个标志位来监控加载状态,确保在数据加载完成之前不会再次触发加载操作。
5. 数据分页随着滚动的不断触发,列表容器中的数据会逐渐增多。
为了避免性能问题,我们可以考虑使用数据分页来减少DOM操作的次数。
可以使用一定的算法将数据切分成多个小块,每次加载新数据时只更新当前显示的部分。
这样可以有效降低页面的加载时间,提高用户的浏览体验。
6. 销毁事件监听当用户完成浏览或离开页面时,我们需要销毁滚动事件的监听,以避免资源的浪费。
可以在适当的时机调用removeEventListener方法来取消对滚动事件的监听。
以上便是使用JavaScript实现无限滚动列表的基本步骤。
div+css+js实现无缝滚动类似marquee无缝滚动兼容firefox
div+css+js实现⽆缝滚动类似marquee⽆缝滚动兼容firefoxdiv+css+javascript 实现⽆缝滚动,marquee⽆缝滚动,⽆缝滚动,兼容firefox⽤marquee实现⾸尾相连循环滚动效果(仅IE):复制代码代码如下:<marquee behavior="scroll" contenteditable="true" onstart="this.firstChild.innerHTML+=this.firstChild.innerHTML;" scrollamount="3" width="100" onmouseover="this.stop();" onmouseout="this.start();">这⾥是要滚动的内容</marquee>⽤div+css+javascript实现⾸尾相连循环滚动效果(兼容firefox):复制代码代码如下:<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="/1999/xhtml"><head><title>div+css+javascript 实现⽆缝滚动,marquee⽆缝滚动,⽆缝滚动,兼容firefox</title><style type="text/css">#scrollobj {white-space: nowrap;overflow: hidden;width: 500px;}</style></head><body><div id="scrollobj" onmouseover="javascript:_stop();" onmouseout="javascript:_start();">这⾥是要滚动的内容</div><script language="javascript" type="text/javascript"><!--function scroll(obj) {/*往左*/var tmp = (obj.scrollLeft)++;//当滚动条到达右边顶端时if (obj.scrollLeft == tmp) {obj.innerHTML += obj.innerHTML;}//当滚动条滚动了初始内容的宽度时滚动条回到最左端if (obj.scrollLeft >= obj.firstChild.offsetWidth) {obj.scrollLeft = 0;}/*往上*///var tmp = (obj.scrollTop)++;//if (obj.scrollTop == tmp) {// obj.innerHTML += obj.innerHTML;//}//if (obj.scrollTop >= obj.firstChild.offsetWidth) {// obj.scrollTop = 0;//}}var _timer = setInterval("scroll(document.getElementById('scrollobj'))", 20);function _stop() {if (_timer != null) {clearInterval(_timer);}}function _start() {_timer = setInterval("_scroll(document.getElementById('scrollobj'))", 20); }//--></script></body></html>。
如何通过前端框架实现无限滚动效果
如何通过前端框架实现无限滚动效果无限滚动效果是前端开发中常见的需求,它可以让页面在滚动到底部时自动加载更多内容,提升用户体验。
前端框架提供了便捷的实现方式,本文将介绍如何通过前端框架实现无限滚动效果。
一、什么是无限滚动效果无限滚动效果,也被称为无限加载或无限下拉,指的是当用户滚动到页面底部时,自动加载更多内容,无需手动点击或刷新页面。
这种效果常用于显示大量数据的列表、社交媒体的翻页、图片库等场景。
二、前端框架实现无限滚动效果前端框架如React、Angular、Vue等,提供了许多工具和组件,可以简化无限滚动效果的开发。
1. ReactReact是一种用于构建用户界面的JavaScript库,通过使用React,我们可以轻松地实现无限滚动效果。
可以借助React插件,如react-infinite-scroller或react-virtualized等。
react-infinite-scroller是一个常用的React插件,使用它可以实现无限滚动效果。
首先,安装该插件:npm install --save react-infinite-scroller然后,在需要实现无限滚动效果的组件中导入并使用该插件:import InfiniteScroll from 'react-infinite-scroller';class InfiniteList extends ponent {loadData(page) {// 根据页码加载数据}render() {return (<InfiniteScrollloadMore={this.loadData}hasMore={true}loader={<div className="loader" key={0}>Loading ...</div>}>{/* 呈现数据列表 */}</InfiniteScroll>);}}在上述代码中,loadData函数用于根据页码加载数据,loadMore属性指定了加载更多数据时调用的函数,hasMore属性指示是否还有更多数据可加载,loader属性定义了加载数据时显示的加载器。
react 封装滚筒条自动滚动组件
react 封装滚筒条自动滚动组件滚筒条自动滚动组件是一种常见的前端UI组件,用于展示图片或者文字的滚动效果。
这种组件通常用于网站的首页、新闻资讯、产品展示等页面,可以增加页面的视觉效果,吸引用户的注意力,同时也为用户提供了更好的浏览体验。
在实际项目中,我们经常会遇到需要使用滚动条自动滚动的需求,为了方便开发,我们可以将滚动条自动滚动的功能进行封装,以便在多个页面中复用。
本文将介绍如何使用React框架来封装一个滚动条自动滚动组件,并提供一些示例代码,帮助读者了解如何使用该组件。
一、组件功能介绍滚动条自动滚动组件通常具有以下功能特点:1.自动滚动:组件可以自动按照设定的速度进行滚动,无需用户手动操作;2.暂停和恢复:用户可以手动暂停滚动,以便观看感兴趣的内容,同时也可以随时恢复滚动;3.点击跳转:用户可以点击相应的按钮或指示器,跳转到指定的内容处;4.可定制性强:组件的滚动速度、滚动方向、滚动内容等都可以根据实际需求进行定制。
二、React组件结构设计在React中,我们可以将滚动条自动滚动组件封装成一个独立的函数组件或者类组件。
在设计组件结构时,你可以根据实际需求来决定是否需要使用state、props、生命周期函数等React特性。
下面是一个简单的滚动条自动滚动组件的结构设计示例:```jsximport React, { useState, useEffect } from 'react';const AutoScroll = ({ content, speed, direction, pauseOnHover }) => {const [scrollPosition, setScrollPosition] = useState(0);const [paused, setPaused] = useState(false);useEffect(() => {const id = setInterval(() => {if (!paused) {const newPosition = direction === 'left' ? scrollPosition + speed : scrollPosition - speed;setScrollPosition(newPosition);}}, 1000);return () => clearInterval(id);}, [scrollPosition, paused, direction, speed]);const handlePause = () => {setPaused(!paused);}const handleJump = (position) => {setScrollPosition(position);}return (<divclassName="auto-scroll"style={{width: '100%',overflow: 'hidden',position: 'relative'}}onMouseEnter={() => pauseOnHover && setPaused(true)} onMouseLeave={() => pauseOnHover && setPaused(false)} ><divclassName="scroll-content"style={{whiteSpace: 'nowrap',position: 'absolute',left: `${scrollPosition}px`}}>{content}</div><button onClick={handlePause}>{paused ? '继续' : '暂停'}</button><button onClick={() => handleJump(0)}>跳转到第一个</button><button onClick={() => handleJump(100)}>跳转到第二个</button>{/*更多跳转按钮... */}</div>)}export default AutoScroll;```以上代码实现了一个简单的滚动条自动滚动组件,通过props传入滚动内容、速度、方向、鼠标悬停暂停等参数,同时提供了暂停/继续和点击跳转功能。
JS实现无缝循环marquee滚动效果
JS实现⽆缝循环marquee滚动效果⽆缝循环marquee滚动JS代码实现,兼容IE, FireFox, Chrome,供⼤家参考,具体内容如下⾸先是CSS和HTML如下:#marquee_zxd {border: 1px solid red;white-space: nowrap;overflow: hidden;width: 500px;padding-top: 5px;}#marquee_zxd img {height: 100px;}<!-- 横向⼀定要是span --><div id="marquee_zxd"><span><!-- 内嵌⼀个div很重要,⾥⾯的元素必须是⼀个整体的移动。
另外横移时,必须是⾏级元素只占⾃⼰的空间。
--><div id="marquee_inner" style="position:relative; display: inline-block;"><img src="img/duck.png"/><img src="img/donkey.png"/><img src="img/eggbird.png"/><img src="img/elephant.png"/><img src="img/butterfly.png"/></div></span></div><script type="text/javascript" src="${cpath}/js/marquee_zxd.js"></script>下⾯是JS实现marquee_zxd.js:/**除了Chrome以外的浏览器可以通过scrollLeft属性控制滚动*/function scrolleft(obj){var $obj = $(obj);//到右边顶端后不会再变//var temp = obj.scrollLeft;//obj.scrollLeft++;var temp = $obj.scrollLeft();//console.log(temp);$obj.scrollLeft(temp+1);//当滚动条到达右边顶端时;或本⾝长度不够不好滚动(漫出才好滚)//if(obj.scrollLeft == temp){if($obj.scrollLeft() == temp){obj.innerHTML += obj.innerHTML;console.log('copy');}//当滚动条滚动了初始内容的宽度时,滚动条回到最左端,模拟循环//if (obj.scrollLeft >= obj.firstChild.offsetWidth)// obj.scrollLeft = 0;if ($obj.scrollLeft() >= obj.firstChild.offsetWidth)$obj.scrollLeft(0);}/**除了Chrome以外的浏览器可以通过scrolleft()滚动*/function initMarquee(){var aaa = document.getElementById('marquee_zxd');var MyMar = setInterval(function(){scrolleft(aaa);}, 20);//⿏标移上时清除定时器达到滚动停⽌的⽬的aaa.onmouseover=function() {clearInterval(MyMar);};//⿏标移开时重设定时器aaa.onmouseout=function() {MyMar = setInterval(function(){scrolleft(aaa);}, 20);};}/**Chrome定时器循环函数,通过relative布局的left属性控制滚动*/function scrolleftChrome($marquee_inner, inner_width){var width = parseInt(inner_width);var leftPx = $marquee_inner.css("left");//兼容IEif(leftPx == 'auto')leftPx = 0;//位置左移var left = parseInt(leftPx);left = left - 1;//到顶归位if(left <= -width)left = 0;$marquee_inner.css("left", left);//console.log(width + ", " + left);}/**Chrome浏览器可以通过scrolleftChrome滚动*/function initMarqueeChrome() {//局部变量不污染全局变量空间var $marquee_inner = $('#marquee_inner');//原内容⼤⼩var inner_width = $marquee_inner.css('width');//复制⼀份原内容var innerHtml = $marquee_inner.html();$marquee_inner.html(innerHtml + innerHtml);console.log(inner_width);//参数采⽤字符串形式的缺陷:参数不能被周期性改变,参数必须是全局变量//var MyMar = setInterval("scrolleftChrome($marquee_inner, inner_width)", 5000);var MyMar = setInterval(function(){//参数不污染全局变量空间scrolleftChrome($marquee_inner, inner_width);}, 50);var marquee_zxd = document.getElementById('marquee_zxd');//⿏标移上时清除定时器达到滚动停⽌的⽬的marquee_zxd.onmouseover=function() {clearInterval(MyMar);};//⿏标移开时重设定时器marquee_zxd.onmouseout=function() {//参数采⽤字符串形式的缺陷:参数不能被周期性改变,参数必须是全局变量//MyMar = setInterval("scrolleftChrome($marquee_inner, inner_width)", 50);MyMar = setInterval(function(){//参数不污染全局变量空间scrolleftChrome($marquee_inner, inner_width);}, 50);};}$(function(){var ua = erAgent;var isIE = window.ActiveXObject != undefined && ua.indexOf("MSIE") != -1;var isFirefox = ua.indexOf("Firefox") != -1;var isChrome = ua.indexOf("Chrome") && window.chrome;if(isChrome){initMarqueeChrome();console.log("isChrome: initMarqueeChrome");}else{initMarquee();console.log("isChrome: initMarquee");}});以上就是本⽂的全部内容,希望对⼤家的学习有所帮助,也希望⼤家多多⽀持。
js中scroll的用法
js中scroll的用法JavaScript的scroll方法用于在DOM元素内部滚动到指定位置。
它是Window对象和DOM元素的属性或方法之一。
当页面或元素内容太长以至于无法一次性在视窗内完全展示时,就需要滚动页面或元素内部的内容来查看整个页面或内容。
这时,JavaScript的scroll方法可以帮助我们实现滚动。
scroll方法共有三种形式:scroll()、scrollTo() 和 scrollBy()。
1. scroll方法scroll方法可以在元素的水平和垂直方向上滚动。
语法:element.scroll(x-coord, y-coord)参数说明:x-coord指定了需要滚动的距离,单位是像素(px)。
同样,y-coord也指定了需要滚动的距离,单位也是像素。
使用实例:<p>第一段内容的测试</p><p>第二段内容的测试</p><p>第三段内容的测试</p><p>第四段内容的测试</p><p>第五段内容的测试</p><p>第六段内容的测试</p><p>第七段内容的测试</p><p>第八段内容的测试</p><p>第九段内容的测试</p><p>第十段内容的测试</p></div><script></script>上述代码包含一个div容器,它是一个滚动条。
在JavaScript代码中,我们指定了需要垂直方向下滚动200像素(px),并指定了需要水平方向右滚动200像素(px)。
2. scrollTo方法scrollTo方法与scroll方法作用相同,也可以在元素的水平和垂直方向上滚动。
语法:element.scrollTo(x-coord, y-coord)参数说明:x-coord指定了需要滚动的距离,单位是像素(px)。
使用JavaScript实现无限滚动效果
使用JavaScript实现无限滚动效果随着Web应用程序的不断发展与日益普及,用户对于流畅的体验也提出了更高的要求。
其中,无限滚动效果作为一种常见的交互方式,可以让用户在页面中无需点击翻页按钮,通过滚动鼠标或触摸屏幕即可加载更多内容,提升了用户体验的同时还能提高页面的访问量。
在本文中,我们将使用JavaScript来实现这一功能。
无限滚动效果的原理其实并不复杂,主要通过监听页面的滚动事件,当滚动到页面底部时,自动加载更多内容。
下面,让我们一步一步地来实现这个功能。
首先,我们需要在页面中引入JavaScript文件。
可以通过以下方式:```html<script src="infiniteScroll.js"></script>```接下来,在JavaScript文件中,我们需要监听页面的滚动事件。
代码如下:```javascriptwindow.addEventListener('scroll', function() {var scrollHeight = document.documentElement.scrollHeight;var scrollTop = document.documentElement.scrollTop || document.body.scrollTop;var clientHeight = document.documentElement.clientHeight;if (scrollTop + clientHeight >= scrollHeight) {// 加载更多内容的代码}});```通过上述代码,我们可以获取页面的滚动高度(scrollHeight)、滚动条距离顶部的高度(scrollTop)以及可视区域的高度(clientHeight)。
当滚动条滚动到底部时,即scrollTop + clientHeight >= scrollHeight成立,我们可以在这里编写加载更多内容的代码。
前端开发技术之无限滚动效果实现
前端开发技术之无限滚动效果实现随着互联网的快速发展,无限滚动效果在许多网站和应用程序中变得越来越常见。
无限滚动效果使用户可以通过不断加载新内容而不需要翻页,提供了更流畅、更连续的浏览体验。
在本文中,我们将讨论如何实现前端开发中的无限滚动效果。
实现无限滚动效果的一种常见方法是使用AJAX技术。
AJAX是一种基于JavaScript和XML的前端开发技术,可以在不刷新整个页面的情况下与服务器进行异步通信。
通过使用AJAX,我们可以动态地加载新内容并将其添加到滚动的页面中。
首先,我们需要在页面上设置一个滚动容器,例如一个<div>元素。
这将是我们显示内容的区域。
然后,我们需要绑定一个滚动事件到滚动容器,以便在用户滚动到页面底部时触发加载新内容的动作。
在滚动事件中,我们可以使用JavaScript来检测是否滚动到了页面底部。
一种常见的方法是检查滚动容器的滚动位置加上滚动容器的高度是否等于滚动容器的整体高度。
一旦滚动到底部,我们可以使用AJAX发送请求到服务器,请求加载更多的内容。
服务器端可以根据请求的参数和需求来返回相应的数据。
一般来说,服务器会返回一个分页的结果,例如一页的内容或一页的文章列表。
在前端,我们可以通过处理服务器返回的数据来动态地生成新的内容,并将其添加到滚动容器中。
要实现无限滚动效果,我们可以使用JavaScript的DOM操作来动态生成并添加新内容。
接收到服务器返回的数据后,我们可以使用DOM操作来创建新的HTML元素,例如<div>或<p>等,并将它们添加到滚动容器中。
为了提供更好的用户体验,我们可以使用CSS动画来添加一些过渡效果。
例如,在新内容添加到滚动容器时,我们可以使用CSS的transition属性来添加淡入淡出的动画效果,使过渡更平滑。
在实现无限滚动效果时,我们还需要考虑一些性能和优化问题。
例如,为了减少请求的次数,我们可以设置一个延迟加载的机制,即当用户滚动到底部时,等待一段时间后再发送请求,以防止用户快速滚动时频繁触发请求。
常用JS图片滚动(无缝、平滑、上下左右滚动)代码大全
常⽤JS图⽚滚动(⽆缝、平滑、上下左右滚动)代码⼤全常⽤JS图⽚滚动(⽆缝、平滑、上下左右滚动)代码⼤全今天刚⽹上看的不多说直接帖代码----<head><-----></head><body><!--向下滚动代码开始--><div id="colee" style="overflow:hidden;height:253px;width:410px;"><div id="colee1"><p><img src=""></p><p><img src=""></p><p><img src=""></p><p><img src=""></p><p><img src=""></p><p><img src=""></p><p><img src=""></p><p><img src=""></p><p><img src=""></p></div><div id="colee2"></div></div><script>var speed=30;var colee2=document.getElementById("colee2");var colee1=document.getElementById("colee1");var colee=document.getElementById("colee");colee2.innerHTML=colee1.innerHTML; //克隆colee1为colee2function Marquee1(){//当滚动⾄colee1与colee2交界时if(colee2.offsetTop-colee.scrollTop<=0){colee.scrollTop-=colee1.offsetHeight; //colee跳到最顶端}else{colee.scrollTop++}}var MyMar1=setInterval(Marquee1,speed)//设置定时器//⿏标移上时清除定时器达到滚动停⽌的⽬的colee.onmouseover=function() {clearInterval(MyMar1)}//⿏标移开时重设定时器colee.onmouseout=function(){MyMar1=setInterval(Marquee1,speed)}</script><!--向上滚动代码结束--><br><!--下⾯是向下滚动代码--><div id="colee_bottom" style="overflow:hidden;height:253px;width:410px;"><div id="colee_bottom1"><p><img src="/jscss/demoimg/200907/bg3.jpg"></p><p><img src="/jscss/demoimg/200907/bg3.jpg"></p><p><img src="/jscss/demoimg/200907/bg3.jpg"></p><p><img src="/jscss/demoimg/200907/bg3.jpg"></p><p><img src="/jscss/demoimg/200907/bg3.jpg"></p><p><img src="/jscss/demoimg/200907/bg3.jpg"></p><p><img src="/jscss/demoimg/200907/bg3.jpg"></p><p><img src="/jscss/demoimg/200907/bg3.jpg"></p><p><img src="/jscss/demoimg/200907/bg3.jpg"></p></div><div id="colee_bottom2"></div></div><script>var speed=30var colee_bottom2=document.getElementById("colee_bottom2");var colee_bottom1=document.getElementById("colee_bottom1");var colee_bottom=document.getElementById("colee_bottom");colee_bottom2.innerHTML=colee_bottom1.innerHTMLcolee_bottom.scrollTop=colee_bottom.scrollHeightfunction Marquee2(){if(colee_bottom1.offsetTop-colee_bottom.scrollTop>=0)colee_bottom.scrollTop+=colee_bottom2.offsetHeightelse{colee_bottom.scrollTop--}}var MyMar2=setInterval(Marquee2,speed)colee_bottom.onmouseover=function() {clearInterval(MyMar2)}colee_bottom.onmouseout=function() {MyMar2=setInterval(Marquee2,speed)}</script><!--向下滚动代码结束--><br><!--下⾯是向左滚动代码--><div id="colee_left" style="overflow:hidden;width:500px;"><table cellpadding="0" cellspacing="0" border="0"><tr><td id="colee_left1" valign="top" align="center"><table cellpadding="2" cellspacing="0" border="0"><tr align="center"><td><p><img src="/jscss/demoimg/200907/bg3.jpg"></p></td><td><p><img src="/jscss/demoimg/200907/bg3.jpg"></p></td><td><p><img src="/jscss/demoimg/200907/bg3.jpg"></p></td><td><p><img src="/jscss/demoimg/200907/bg3.jpg"></p></td><td><p><img src="/jscss/demoimg/200907/bg3.jpg"></p></td><td><p><img src="/jscss/demoimg/200907/bg3.jpg"></p></td><td><p><img src="/jscss/demoimg/200907/bg3.jpg"></p></td></tr></table></td><td id="colee_left2" valign="top"></td></tr></table></div><script>//使⽤div时,请保证colee_left2与colee_left1是在同⼀⾏上.var speed=30//速度数值越⼤速度越慢var colee_left2=document.getElementById("colee_left2");var colee_left1=document.getElementById("colee_left1");var colee_left=document.getElementById("colee_left");colee_left2.innerHTML=colee_left1.innerHTMLfunction Marquee3(){if(colee_left2.offsetWidth-colee_left.scrollLeft<=0)//offsetWidth 是对象的可见宽度colee_left.scrollLeft-=colee_left1.offsetWidth//scrollWidth 是对象的实际内容的宽,不包边线宽度else{colee_left.scrollLeft++}}var MyMar3=setInterval(Marquee3,speed)colee_left.onmouseover=function() {clearInterval(MyMar3)}colee_left.onmouseout=function() {MyMar3=setInterval(Marquee3,speed)}</script><!--向左滚动代码结束--><br><!--下⾯是向右滚动代码--><div id="colee_right" style="overflow:hidden;width:500px;"><table cellpadding="0" cellspacing="0" border="0"><tr><td id="colee_right1" valign="top" align="center"><table cellpadding="2" cellspacing="0" border="0"><tr align="center"><td><p><img src="/jscss/demoimg/200907/bg3.jpg"></p></td><td><p><img src="/jscss/demoimg/200907/bg3.jpg"></p></td><td><p><img src="/jscss/demoimg/200907/bg3.jpg"></p></td><td><p><img src="/jscss/demoimg/200907/bg3.jpg"></p></td><td><p><img src="/jscss/demoimg/200907/bg3.jpg"></p></td></tr></table></td><td id="colee_right2" valign="top"></td></tr></table></div><script>var speed=30//速度数值越⼤速度越慢var colee_right2=document.getElementById("colee_right2");var colee_right1=document.getElementById("colee_right1");var colee_right=document.getElementById("colee_right");colee_right2.innerHTML=colee_right1.innerHTMLfunction Marquee4(){if(colee_right.scrollLeft<=0)colee_right.scrollLeft+=colee_right2.offsetWidthelse{colee_right.scrollLeft--}}var MyMar4=setInterval(Marquee4,speed)colee_right.onmouseover=function() {clearInterval(MyMar4)}colee_right.onmouseout=function() {MyMar4=setInterval(Marquee4,speed)} </script><!--向右滚动代码结束--></body></html>。
用js函数封装一个上下滑动的轮播图,调用任意
⽤js函数封装⼀个上下滑动的轮播图,调⽤任意<!DOCTYPE html><html><head><meta charset="utf-8"><title></title><style type="text/css">.tab{width: 500px;height: 300px;border: 1px solid red;margin: 0 auto;overflow: hidden;position: relative;}*{margin: 0;padding: 0;}ul{transition: 1s;}ul,ol{list-style: none;}a{text-decoration: none;}ul li{width: 500px;height: 300px;text-align: center;line-height: 300px;color: white;font-size: 100px;}ol .active{background:black;}ul li:nth-child(1){background: red;}ul li:nth-child(2){background:yellow;}ul li:nth-child(3){background:green;}ol{position: absolute;width: 100px;height: 30px;/*background: black;*/bottom: 20px;left: 50%;margin-left: -50px;}ol li{float: left;background: #ccc;width: 30px;height: 30px;border-radius: 50%;margin-right: 3px;font-size: 15px;color: white;text-align: center;line-height: 30px;}</style></head><body><div class="tab" id="tab1"><ul><li>1</li><li>2</li><li>3</li></ul><ol><li class="active">1</li><li>2</li><li>3</li></ol></div><div class="tab" id="tab2"><ul><li>1</li><li>2</li><li>3</li></ul><ol><li class="active">1</li><li>2</li><li>3</li></ol></div></body><script>function $s(x){return document.querySelectorAll(x);}function $(x){return document.querySelector(x);}function tab(id){var btns=$s(id+" ol li");var picbox=$(id+" ul");var length=btns.length;for(i=0;i<length;i++){btns[i].index=i;btns[i].onclick=function(){for(i=0;i<length;i++){btns[i].className="";}picbox.style.marginTop=-300*this.index+"px"; btns[this.index].className="active";}}}tab("#tab1");tab("#tab2");</script></html>。
通过封装scroll.js获取滚动条的值
通过封装scroll.js获取滚动条的值
具体代码如下所⽰:
function Obj(){}
Obj.prototype={
scroll:function(){
/*
主要是做兼容处理
这⾥必须时!=null 因为默认值和每次滚动的时侯都可以值为0
但是 if(0)为假所以就只要不为null 就执⾏
*/
if(window.pageYOffset!=null){
/*IE9 和其他标准浏览器*/
return {
left:window.pageXOffset,
top:window.pageYOffset
}
}
/*声明了<!DOCTYPE html> */
else if(patMode=="CSS1Compat")
{
return{
left:document.documentElement.scrollLeft,
top:document.documentElement.scrollTop
}
}
else{
return {
left:document.body.scrollLeft,
top:document.body.scrollTop
}
}
}
}
var obj=new Obj();
总结
以上所述是⼩编给⼤家介绍的通过封装scroll.js 获取滚动条的值,希望对⼤家有所帮助,如果⼤家有任何疑问请给我留⾔,⼩编会及时回复⼤家的。
在此也⾮常感谢⼤家对⽹站的⽀持!。
MarqueeScroll通用不间断滚动类----演示代码
创建实例:new Marquee("marquee",0,1,760,52,50,5000,3000)
new Marquee("marquee",0,1,760,104,50,5000,3000,52)
(52) 间歇滚动间距(可选)
\***程序制作/版权所有:崔永祥(333) E-Mail:zhadan007@ 网址:***/
</pre>
<script src="MSClass.js" language="javascript"></script>
<b>PCAS (Province City Area Selector 省、市、地区联动选择JS封装类) Ver 2.01 数据压缩完整版</b> <a href="pcas.html"><font color="red">演示及下载</font></a><br><br>
制作时间:2006-08-29 (Ver 0.5)
发布时间:2006-08-31 (Ver 0.8)
更新时间:2006-09-22 (Ver 1.2)
更新说明: + 加入功能 * 修正、完善
1.2.060922
+ 指定范围间歇滚动
* 程序调整
* 连续间歇滚动停止的错误
1.0.060901
js实现列表向上无限滚动
js实现列表向上⽆限滚动本⽂实例为⼤家分享了js实现列表向上⽆限滚动的具体代码,供⼤家参考,具体内容如下先来⼀张效果图html<div class="transdata1"><ul class="tody-table-header2"><li>商品</li><li>数量(kg)</li><li>单价(元)</li><li>⾦额(元)</li></ul><div id="detetion-box2"><div id="detetion-con1"><ul v-for="(item,index) in todayDetetion2" :key="index"><li>{{}}</li><li>{{item.amount}}kg</li><li>{{item.price}}元/kg</li><li style="color:rgba(0,255,204,1);">{{item.money}}元</li></ul></div><div id="detetion-con2"></div></div></div>jsgetData() {var _this = this;this.$axios.get("请求的url").then(res => {this.todayDetetion2 = res.data.data;this.$nextTick(() => {this.ScrollUp2();});}).catch(err => {});},ScrollUp2() {var box = document.getElementById("detetion-box2");var con1 = document.getElementById("detetion-con1");var con2 = document.getElementById("detetion-con2");this.speed = 50;if (con1.offsetHeight >= box.offsetHeight) {con2.innerHTML = con1.innerHTML;var timer1 = setInterval(scrol, this.speed);function scrol() {/*判断滚动内容是否已经滚完,滚完了则滚动的值重新设置到0,否则就每个30默秒向上滚动1px */if (box.scrollTop >= con1.scrollHeight) {box.scrollTop = 0;} else {box.scrollTop++;}/*判断滚动的距离刚好为⼀条公告的⾼度时停掉定时器,隔1s之后重新启动计时器即可实现公告滚动停留效果 */ if (box.scrollTop % 25 == 0) {clearInterval(timer1);setTimeout(() => {timer1 = setInterval(scrol, 30);}, 2000);}}}}css(样式⾃⼰调).transdata1 {background: url("../../../static/img/transdata_bg.png") no-repeat center/100%100%;height: 237px;padding: 36px 28px 16px 20px;box-sizing: border-box;transform: translateY(-12px);}.tody-table-header2 {overflow: hidden;}.tody-table-header2 li {height: 24px;width: 82px;line-height: 24px;list-style: none;float: left;font-size: 13px;margin-right: 48px;font-family: MicrosoftYaHei;color: rgba(127, 250, 255, 1);text-align: center;background: url("../../../static/img/thead_bg.png") no-repeat center/100%;background-size: 100% 100%;}.tody-table-header2 li:last-child {margin-right: 0;}#detetion-box2 {margin-top: 13px;height: 150px;overflow: hidden;}#detetion-box2 ul {overflow: hidden;border-bottom: 1px solid #0e579c;}#detetion-box2 li {width: 82px;height: 24px;line-height: 24px;float: left;margin-right: 48px;font-size: 12px;color: #fff;}#detetion-box2 ul li:last-child {margin-right: 0;}以上就是本⽂的全部内容,希望对⼤家的学习有所帮助,也希望⼤家多多⽀持。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
/*MSClass (Class Of Marquee Scroll通用不间断滚动JS封装类) V er 1.65*\制作时间:2006-08-29 (V er 0.5)发布时间:2006-08-31 (V er 0.8)更新时间:2007-12-28 (V er 1.65)更新说明: + 加入功能* 修正、完善1.65.071228* 横向、纵向滚动格式调整(解决横向滚动换行的问题,无需特殊设置)* 彻底解决由于IE问题导致上下滚动页面留白的问题(本次更新主要解决此问题,感谢天上的书生参与测试)1.6.070131+ 禁止鼠标控制暂停或继续(将第9个参数设置为-1或者动态赋值将ScrollSetp设置为-1)+ 判断是否可以滚动(若内容区域小于显示区域,则自动取消滚动)+ 跳过初始化错误(避免引起其它滚动的停止)+ 默认值(除容器ID必选外,其他参数均可根据情况进行选择设置)+ 参数动态赋值(方向可用英文表示top|up|bottom|down|left|right,使其更直观、方便)* 文字滚动不准确(本次更新主要目的解决此Bug,感谢周珺参与测试)1.4.061211+ 鼠标悬停改变滚动方向(鼠标悬停控制左右滚动)* 由于文档下载过慢而导致获取的高度/宽度不准确* 浏览器兼容问题(IE、FF、Opera、NS、MYIE)1.2.060922+ 指定范围间歇滚动* 程序调整* 连续间歇滚动停止的错误1.0.060901+ 向下、向右滚动+ 开始等待时间+ 连续滚动* 调整时间单位* 滚动误差* 随机死循环* 加强性能* 程序优化0.8.060829翻屏不间断向上、向左滚动演示地址:/script/MSClass.html下载地址:/script/MSClass.js应用说明:页面包含<script type="text/javascript" src="MSClass.js"></script>创建实例://参数直接赋值法new Marquee("marquee")new Marquee("marquee","top")......new Marquee("marquee",0,1,760,52)new Marquee("marquee","top",1,760,52,50,5000)......new Marquee("marquee",0,1,760,104,50,5000,3000,52)new Marquee("marquee",null,null,760,104,null,5000,null,-1)//参数动态赋值法var marquee1 = new Marquee("marquee")*此参数必选marquee1.Direction = "top"; 或者marquee1.Direction = 0;marquee1.Step = 1;marquee1.Width = 760;marquee1.Height = 52;marquee1.Timer = 50;marquee1.DelayTime = 5000;marquee1.WaitTime = 3000;marquee1.ScrollStep = 52;marquee1.Start();参数说明:ID "marquee" 容器ID (必选)Direction (0) 滚动方向(可选,默认为0向上滚动) 可设置的值包括:0,1,2,3,"top","bottom","left","right" (0向上1向下2向左3向右)Step (1) 滚动的步长(可选,默认值为2,数值越大,滚动越快)Width (760) 容器可视宽度(可选,默认值为容器初始设置的宽度)Height (52) 容器可视高度(可选,默认值为容器初始设置的高度)Timer (50) 定时器(可选,默认值为30,数值越小,滚动的速度越快,1000=1秒,建议不小于20)DelayTime (5000) 间歇停顿延迟时间(可选,默认为0不停顿,1000=1秒)WaitTime (3000) 开始时的等待时间(可选,默认或0为不等待,1000=1秒)ScrollStep (52) 间歇滚动间距(可选,默认为翻屏宽/高度,该数值与延迟均为0则为鼠标悬停控制,-1禁止鼠标控制)1、建议直接赋予容器的显示区域的宽度和高度,如(<div id="marquee"style="width:760px;height:52px;">......</div>)2、建议为容器添加样式overflow = auto,如(<div id="marquee"style="width:760px;height:52px;overflow:auto;">......</div>)3、为了更准确的获取滚动区域的宽度和高度,请尽可能将各滚动单位直接赋予正确宽高度4、对于TABLE标记的横向滚动,需要对TABLE添加样式display = inline,如(<div id="marquee"style="width:760px;height:52px;overflow:auto;"><tablestyle="display:inline">......</table></div>)5、对于翻屏滚动或间歇滚动,要注意各滚动单位间的间距,同时需要对容器的可视高度和可视宽度做好准确的设置,对于各滚动单位间的间距可以通过设置行间距或者单元格的高宽度来进行调整6、对于LI自动换行的问题暂时没有更好的解决办法,建议将其转换成表格(TABLE)的形式来达到同等的效果7、针对横向滚动的文字段落,如果最末端是以空格" "结束的,请将空格" "转换成" "8、鼠标悬停滚动思想源自Flash,所以有一定的局限性(容器内仅允许用图片<img>或者带链接的图片<a><img></a>的形式,并需要禁止其自动换行)感谢:天上的书生(QQ:30370740) (IE页面留白的Bug) 2007/12/22周珺zhoujun# (文字滚动跳行的bug) 2007/01/31自本程序发布以来,收到不少朋友的邮件,提出了很多意见和建议,感谢大家的支持!\***程序制作/版权所有:崔永祥(333) E-Mail:zhadan007@ 网址:***/function Marquee(){this.ID = document.getElementById(arguments[0]);if(!this.ID){alert("您要设置的\"" + arguments[0] + "\"初始化错误\r\n请检查标签ID设置是否正确!");this.ID = -1;}this.Direction = this.Width = this.Height = this.DelayTime = this.WaitTime = this.CTL = this.StartID =this.Stop = this.MouseOver = 0;this.Step = 1;this.Timer = 30;this.DirectionArray = {"top":0 , "up":0 , "bottom":1 , "down":1 , "left":2 , "right":3};if(typeof arguments[1] == "number" || typeof arguments[1] == "string")this.Direction = arguments[1];if(typeof arguments[2] == "number")this.Step = arguments[2];if(typeof arguments[3] == "number")this.Width = arguments[3];if(typeof arguments[4] == "number")this.Height = arguments[4];if(typeof arguments[5] == "number")this.Timer = arguments[5];if(typeof arguments[6] == "number")this.DelayTime = arguments[6];if(typeof arguments[7] == "number")this.WaitTime = arguments[7];if(typeof arguments[8] == "number")this.ScrollStep = arguments[8];this.ID.style.overflow = this.ID.style.overflowX = this.ID.style.overflowY = "hidden";this.ID.noWrap = true;this.IsNotOpera = (erAgent.toLowerCase().indexOf("opera") == -1);if(arguments.length >= 7)this.Start();}Marquee.prototype.Start = function(){if(this.ID == -1)return;if(this.WaitTime < 800)this.WaitTime = 800;if(this.Timer < 20)this.Timer = 20;if(this.Width == 0)this.Width = parseInt(this.ID.style.width);if(this.Height == 0)this.Height = parseInt(this.ID.style.height);if(typeof this.Direction == "string")this.Direction = this.DirectionArray[this.Direction.toString().toLowerCase()];this.HalfWidth = Math.round(this.Width / 2);this.HalfHeight = Math.round(this.Height / 2);this.BakStep = this.Step;this.ID.style.width = this.Width + "px";this.ID.style.height = this.Height + "px";if(typeof this.ScrollStep != "number")this.ScrollStep = this.Direction > 1 ? this.Width : this.Height;var templateLeft = "<table cellspacing='0' cellpadding='0' style='border-collapse:collapse;display:inline;'><tr><td noWrap=true style='white-space: nowrap;word-break:keep-all;'>MSCLASS_TEMP_HTML</td><td noWrap=true style='white-space: nowrap;word-break:keep-all;'>MSCLASS_TEMP_HTML</td></tr></table>";var templateTop = "<table cellspacing='0' cellpadding='0' style='border-collapse:collapse;'><tr><td>MSCLASS_TEMP_HTML</td></tr><tr><td>MSCLASS_TEMP_H TML</td></tr></table>";var msobj = this;msobj.tempHTML = msobj.ID.innerHTML;if(msobj.Direction <= 1){msobj.ID.innerHTML = templateTop.replace(/MSCLASS_TEMP_HTML/g,msobj.ID.innerHTML);}else{if(msobj.ScrollStep == 0 && msobj.DelayTime == 0){msobj.ID.innerHTML += msobj.ID.innerHTML;}else{msobj.ID.innerHTML = templateLeft.replace(/MSCLASS_TEMP_HTML/g,msobj.ID.innerHTML);}}var timer = this.Timer;var delaytime = this.DelayTime;var waittime = this.WaitTime;msobj.StartID = function(){msobj.Scroll()}msobj.Continue = function(){if(msobj.MouseOver == 1){setTimeout(msobj.Continue,delaytime);}else{ clearInterval(msobj.TimerID);msobj.CTL = msobj.Stop = 0;msobj.TimerID = setInterval(msobj.StartID,timer);}}msobj.Pause = function(){msobj.Stop = 1;clearInterval(msobj.TimerID);setTimeout(msobj.Continue,delaytime);}msobj.Begin = function(){msobj.ClientScroll = msobj.Direction > 1 ? msobj.ID.scrollWidth / 2 : msobj.ID.scrollHeight/ 2;if((msobj.Direction <= 1 && msobj.ClientScroll <= msobj.Height + msobj.Step) ||(msobj.Direction > 1 && msobj.ClientScroll <= msobj.Width + msobj.Step)) {msobj.ID.innerHTML = msobj.tempHTML;delete(msobj.tempHTML);return;}delete(msobj.tempHTML);msobj.TimerID = setInterval(msobj.StartID,timer);if(msobj.ScrollStep < 0)return;msobj.ID.onmousemove = function(event){if(msobj.ScrollStep == 0 && msobj.Direction > 1){var event = event || window.event;if(window.event){if(msobj.IsNotOpera){msobj.EventLeft =event.srcElement.id == msobj.ID.id ? event.offsetX - msobj.ID.scrollLeft : event.srcElement.offsetLeft -msobj.ID.scrollLeft + event.offsetX;}else{msobj.ScrollStep = null;return;}}else{msobj.EventLeft = yerX -msobj.ID.scrollLeft;}msobj.Direction = msobj.EventLeft > msobj.HalfWidth? 3 : 2;msobj.AbsCenter = Math.abs(msobj.HalfWidth -msobj.EventLeft);msobj.Step = Math.round(msobj.AbsCenter *(msobj.BakStep*2) / msobj.HalfWidth);}}msobj.ID.onmouseover = function(){if(msobj.ScrollStep == 0)return;msobj.MouseOver = 1;clearInterval(msobj.TimerID);}msobj.ID.onmouseout = function(){if(msobj.ScrollStep == 0){if(msobj.Step == 0)msobj.Step = 1;return;}msobj.MouseOver = 0;if(msobj.Stop == 0){clearInterval(msobj.TimerID);msobj.TimerID = setInterval(msobj.StartID,timer);}}}setTimeout(msobj.Begin,waittime);}Marquee.prototype.Scroll = function(){switch(this.Direction){case 0:this.CTL += this.Step;if(this.CTL >= this.ScrollStep && this.DelayTime > 0){this.ID.scrollTop += this.ScrollStep + this.Step - this.CTL;this.Pause();return;}else{if(this.ID.scrollTop >= this.ClientScroll){this.ID.scrollTop -= this.ClientScroll;}this.ID.scrollTop += this.Step;}break;case 1:this.CTL += this.Step;if(this.CTL >= this.ScrollStep && this.DelayTime > 0){this.ID.scrollTop -= this.ScrollStep + this.Step - this.CTL;this.Pause();return;}else{if(this.ID.scrollTop <= 0){this.ID.scrollTop += this.ClientScroll;}this.ID.scrollTop -= this.Step;}break;case 2:this.CTL += this.Step;if(this.CTL >= this.ScrollStep && this.DelayTime > 0){this.ID.scrollLeft += this.ScrollStep + this.Step - this.CTL;this.Pause();return;}else{if(this.ID.scrollLeft >= this.ClientScroll){this.ID.scrollLeft -= this.ClientScroll;}this.ID.scrollLeft += this.Step;}break;case 3:this.CTL += this.Step;if(this.CTL >= this.ScrollStep && this.DelayTime > 0){this.ID.scrollLeft -= this.ScrollStep + this.Step - this.CTL;this.Pause();return;}else{if(this.ID.scrollLeft <= 0){this.ID.scrollLeft += this.ClientScroll;}this.ID.scrollLeft -= this.Step;}break;}}//-->。