JS无缝滚动,鼠标放上暂停

合集下载

js使用transition效果实现无缝滚动

js使用transition效果实现无缝滚动

js使⽤transition效果实现⽆缝滚动作者:李⼤雷前⾔⽆缝轮播⼀直是⾯试的热门题⽬,⽽⼤部分答案都是复制第⼀张到最后。

诚然,这种⽅法是⾮常标准,那么有没有另类⼀点的⽅法呢?第⼀种⽅法是需要把所有图⽚⼀张张摆好,然后慢慢移动的,但是我能不能直接不摆就硬移动呢?如果你使⽤过vue的transition,我们是可以通过给每⼀张图⽚来添加⼊场动画和离场动画来模拟这个移动•进场动画就是从最右侧到屏幕中央•出场动画是从屏幕中央到左侧移出这样看起来的效果就是图⽚从右边⼀直往左移动,但是这个不⼀样的地⽅是,我们每⼀个元素都有这个进场动画和离场动画,我们根本不⽤关⼼它是第⼏个元素,你只管轮播就是。

如果不⽤vue呢?很简单,我们⾃⼰实现⼀个transtition的效果就好啦,主要做的是以下两点•元素显⽰的时候,即display属性不为none的时候,添加xx-enter-active动画•元素消失的时候,先添加动画xx-leave-active, 注意要让动画播完才消失••••••••••••••functionhide( el) { el.className = el.className.replace( ' slide-enter-active', '') el.className += ' slide-leave-active' el.addEventListener( 'animationend',animationEvent) } functionanimationEvent( e) { e.target.className =e.target.className.replace( ' slide-leave-active', '') e.target.style.display = 'none' e.target.removeEventListener('animationend',animationEvent) } functionshow( el) { el.style.display = 'flex' el.className += ' slide-enter-active' }这⾥我们使⽤了animationend来监听动画结束,注意这⾥每次从新添加类的时候需要重新添加监听器,不然会⽆法监听。

js实现表格无缝滚动效果

js实现表格无缝滚动效果

js实现表格⽆缝滚动效果<!doctype html><html><head><meta charset="utf-8"><title>table表格⽆缝向上滚动</title><script src="/jquery/1.11.3/jquery.min.js"></script><style>.tablebox {height: 500px;overflow: hidden;position: relative;width: 1000px;margin: 100px auto;background-color: rgba(6,26,103,1);}.tbl-header {width: 100%;position: absolute;top: 0;left: 0;z-index: 999;}.tbl-body {width: 100%;position: absolute;top: 0;left: 0;}.tablebox table {width: 100%;}.tablebox table th,.tablebox table td {font-size: 24px;color: #7ca6f4;line-height: 45px;text-align: center;}.tablebox table tr th {background-color: #1f1f9c;cursor: pointer;}.tablebox table tr td {background-color: transparent;}.tbl-body tr:nth-child(even) td,.tbl-body1 tr:nth-child(even) td {background-color: rgba(31, 31, 156, .5);}.tablebox table tr td span,.tablebox table tr td span {font-size: 24px;}</style></head><body><div class="tablebox"><div class="tbl-header"><table border="0" cellspacing="0" cellpadding="0"><thead><tr><th>排名</th><th>地市</th><th>销售收⼊(万元)</th><th>同⽐(%)</th><th>环⽐(%)</th><th>销售计划(万元)</th><th>计划完成率(%)</th></tr></thead><tbody style="opacity:0;"></tbody></table></div><div class="tbl-body"><table border="0" cellspacing="0" cellpadding="0"><thead><tr><th>排名</th><th>地市</th><th>销售收⼊(万元)</th><th>同⽐(%)</th><th>环⽐(%)</th><th>销售计划(万元)</th><th>计划完成率(%)</th></tr></thead><tbody></tbody></table></div></div><script>var MyMarhq = '';clearInterval(MyMarhq);$('.tbl-body tbody').empty();$('.tbl-header tbody').empty();var str = '';var Items = [{"Ranking":"1","City":"保定","SaleIncome":"2506734.43","SaleRough":"296071.96","SalePlan":"7200000","PlanFinish":"34.82","TonOilincome":"264.15","OilTransform":"29.62","An":"53.00","Mom":"-13.00" {"Ranking":"2","City":"沧州","SaleIncome":"1425935.58","SaleRough":"93717.83","SalePlan":"3200000","PlanFinish":"44.56","TonOilincome":"366.59","OilTransform":"11.23","An":"65.00","Mom":"43.00"},{"Ranking":"3","City":"秦皇岛","SaleIncome":"1372207.38","SaleRough":"241071.82","SalePlan":"3000000","PlanFinish":"45.74","TonOilincome":"342.32","OilTransform":"6.61","An":"34.00","Mom":"7.00"},{"Ranking":"4","City":"衡⽔","SaleIncome":"972451.15","SaleRough":"87638.60","SalePlan":"2700000","PlanFinish":"36.02","TonOilincome":"246.03","OilTransform":"11.56","An":"15.00","Mom":"-18.00"},{"Ranking":"5","City":"⽯家庄","SaleIncome":"939010.52","SaleRough":"140217.37","SalePlan":"7200000","PlanFinish":"13.04","TonOilincome":"139.44","OilTransform":"19.23","An":"-57.00","Mom":"-48.00"},{"Ranking":"6","City":"邢台","SaleIncome":"774274.70","SaleRough":"124693.90","SalePlan":"3700000","PlanFinish":"20.93","TonOilincome":"138.87","OilTransform":"9.44","An":"-20.00","Mom":"-44.00"},{"Ranking":"7","City":"唐⼭","SaleIncome":"680456.79","SaleRough":"50542.14","SalePlan":"3600000","PlanFinish":"18.90","TonOilincome":"243.60","OilTransform":"16.95","An":"-29.00","Mom":"-49.00"},{"Ranking":"8","City":"张家⼝","SaleIncome":"613319.87","SaleRough":"176075.96","SalePlan":"3000000","PlanFinish":"20.44","TonOilincome":"87.09","OilTransform":"7.97","An":"2.00","Mom":"-24.00"},{"Ranking":"9","City":"中油华奥","SaleIncome":"596575.25","SaleRough":"387024.26","SalePlan":"11000000","PlanFinish":"5.42","TonOilincome":"93.58","OilTransform":"19.06","An":"35.00","Mom":"6.00"},{"Ranking":"10","City":"承德","SaleIncome":"589048.12","SaleRough":"68966.73","SalePlan":"2200000","PlanFinish":"26.77","TonOilincome":"193.24","OilTransform":"11.29","An":"30.00","Mom":"-28.00"},{"Ranking":"11","City":"廊坊","SaleIncome":"515448.14","SaleRough":"137934.72","SalePlan":"3500000","PlanFinish":"14.73","TonOilincome":"95.47","OilTransform":"8.80","An":"-48.00","Mom":"-3.00"},{"Ranking":"12","City":"瑞州","SaleIncome":"399875.26","SaleRough":"85371.46","SalePlan":"2000000","PlanFinish":"19.99","TonOilincome":"114.42","OilTransform":"11.42","An":"128.00","Mom":"-30.00"},{"Ranking":"13","City":"⽯家庄中油","SaleIncome":"90543.62","SaleRough":"20065.14","SalePlan":"430000","PlanFinish":"21.06","TonOilincome":"213.44","OilTransform":"20.45","An":"-24.00","Mom":"-17.00"},{"Ranking":"14","City":"⾟集中油","SaleIncome":"49255.52","SaleRough":"8743.12","SalePlan":"250000","PlanFinish":"19.70","TonOilincome":"202.67","OilTransform":"29.95","An":"19.00","Mom":"-6.00"},{"Ranking":"15","City":"井陉中油","SaleIncome":"29682.60","SaleRough":"2175.66","SalePlan":"140000","PlanFinish":"21.20","TonOilincome":"730.20","OilTransform":"25.55","An":"-74.00","Mom":"-52.00"},{"Ranking":"16","City":"保定中油","SaleIncome":"11887.73","SaleRough":"2944.97","SalePlan":"100000","PlanFinish":"11.89","TonOilincome":"118.12","OilTransform":"34.16","An":"-64.00","Mom":"-72.00"}]$.each(Items,function (i, item) {str = '<tr>'+'<td>'+item.Ranking+'</td>'+'<td>'+item.City+'</td>'+'<td>'+(+item.SaleIncome/10000).toFixed(2)+'</td>'+'<td>'+(+item.An).toFixed(2)+'</td>'+'<td>'+(+item.Mom).toFixed(2)+'</td>'+'<td>'+(item.SalePlan/10000).toFixed(2)+'</td>'+'<td>'+(+item.PlanFinish).toFixed(2)+'</td>'+'</tr>'$('.tbl-body tbody').append(str);$('.tbl-header tbody').append(str);});if(Items.length > 10){$('.tbl-body tbody').html($('.tbl-body tbody').html()+$('.tbl-body tbody').html());$('.tbl-body').css('top', '0');var tblTop = 0;var speedhq = 50; // 数值越⼤越慢var outerHeight = $('.tbl-body tbody').find("tr").outerHeight();function Marqueehq(){if(tblTop <= -outerHeight*Items.length){tblTop = 0;} else {tblTop -= 1;}$('.tbl-body').css('top', tblTop+'px');}MyMarhq = setInterval(Marqueehq,speedhq);// ⿏标移上去取消事件$(".tbl-header tbody").hover(function (){clearInterval(MyMarhq);},function (){clearInterval(MyMarhq);MyMarhq = setInterval(Marqueehq,speedhq);})}</script></body></html>。

js无缝滚动代码

js无缝滚动代码
<a href="#"><img src="/other/link/Clear_logo.gif" border="0" /></a>
<a href="#"><img src="/other/link/Clear_logo.gif" border="0" /></a>
<!--
var speed=10; //数字越大速度越慢
var tab=document.getElementById("demo");
var tab1=document.getElementById("demo1");
var tab2=document.getElementById("demo2");
<a href="#"><img src="/other/link/Clear_logo.gif" border="0" /></a>
<a href="#"><img src="/other/link/Clear_logo.gif" border="0" /></a>
tab.onmouseout=function() {MyMar=setInterval(Marquee,speed)};//鼠标移开时重设定时器
-->
</script>
图片下无缝滚动
程序代码

js不间断滚动的简单教程

js不间断滚动的简单教程

js不间断滚动的简单教程内容不间断向左滚动,相当于不断向右移动滚动条,内容向左滚动。

要点一:scrollLeft 使用:id.scrollLeft例如下面的简单的例子,当文字向左滚动的时候,就可以看到滚动条在向右移动要点二:setInterval 使用:var timer = setInterval(func,100);每隔多长时间,执行一次&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN""/TR/xhtml1/DTD/xhtml1-transitional.dtd"& gt;&lt;html xmlns="/1999/xhtml"&gt;&lt;head&gt;&lt;meta http-equiv="Content-Type" content="text/html; charset=gb2312" /&gt;&lt;title&gt;无标题文档&lt;/title&gt;&lt;style&gt;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;}&lt;/style&gt;&lt;/head&gt;&lt;body&gt;&lt;div id="s" class="wrapper"&gt; &lt;div class="w1"&gt;内容1内容2内容3内容4内容5内容6内容7&lt;/div&gt;&lt;/div&gt;&lt;script&gt;function scroll(){var a = document.getElementById("s");a.scrollLeft++;}var timer = setInterval(scroll,50);&lt;/script&gt;&lt;/body&gt;&lt;/html&gt;复制代码要点三:offsetWidth 对象的可见宽度,包括滚动条等边线,会随窗口的显示大小改变要点四:innerHTML 设置或获取位于对象起始和结束标签内的HTML&lt;!DOCTYPE html&gt;&lt;html&gt;&lt;head&gt;&lt;meta http-equiv="Content-Type" content="text/html; charset=gb2312" /&gt;&lt;title&gt;无标题文档&lt;/title&gt;&lt;style&gt;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;}&lt;/style&gt;&lt;/head&gt;&lt;body&gt;&lt;div id="box"&gt;&lt;div id="c"&gt;&lt;div id="c1"&gt;内容1内容2内容3内容4内容5内容6内容7&lt;/div&gt;&lt;div id="c2"&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;script&gt;var c1 = document.getElementById("c1");var c2 = document.getElementById("c2");c2.innerHTML = c1.innerHTML; function scroll(){var a = document.getElementById("box");if(a.scrollLeft &gt;= c2.offsetWidth){a.scrollLeft=0;}else{a.scrollLeft++;}}var timer = setInterval(scroll,60);&lt;/script&gt;&lt;/body&gt;&lt;/html&gt;复制代码说明:让box的scrollLeft++,就可以向左滚动。

js实现图片无缝滚动特效

js实现图片无缝滚动特效

js实现图⽚⽆缝滚动特效⾸先,⽆缝滚动的第⼀个重点就是——动。

关于怎么让页⾯的元素节点动起来,这就得学明⽩关于JavaScript中定时器的相关知识。

JS中的创建定时器的⽅法包括两种:setTimeout和setInterval。

⾸先它们接收的参数相同:第⼀个参数是⼀个函数,⽤于定时器执⾏,第⼆个参数是⼀个数字,代表过多少毫秒之后定时器执⾏函数。

它们的不同在于:setTimeout 是在经过指定的时间之后,只执⾏⼀次函数,⽽setInterval,则是每间隔指定时间,就执⾏函数⼀次,说简单点的话,就是setInterval是setTimeout的循环版。

关于定时器还有⼀个⽤法:消除定时器,⽅法同样有两种:clearTimeout 和 clearInterval,它们分别对应不同类型的定时器。

另外,它们都只接收⼀个参数,这个参数是定时器返回的⼀个值(我在chrome中调试发现这个返回值都是数字),⽤于指定消除那个定时器。

定时器的知识掌握之后,就开始分析怎样使⽤定时器让元素动起来。

其实这个很简单,就是类似电影的原理⼀样,让元素在很短的时间内发⽣连续的位移,我们看起来的话这个元素就想是在不停地运动啦。

关于怎么让元素产⽣位移,通过JS修改元素的样式就可以实现,例如oUl.style.left = oUl.offsetLeft + speed + 'px'; 上⾯的代码中speed就是每次产⽣的位移。

关于speed使⽤还挺有意思的:我们可以修改speed的正负值来修改滚动的⽅向。

另外,关于元素的属性 offsetLeft 我个⼈认为需要注意两点:offsetLeft的值由它⾃⼰通过定位的left和⾃⼰设定的margin的和、offsetLeft它是相对于它的包含层的距离(offsetTop类似)。

当然这都是我⾃⼰的理解,肯定不是很准确,这个坑记着,下次专门解决它。

让元素动起来的原理基本就是这样,下⾯开始分析这个⽆缝滚动展⽰图⽚的实现⽅法,我举得例⼦都是向左滚动的,向右的原理⼀样,代码中有提到: ⾸先假设需要循环滚动的图⽚只有4张,为了满⾜图⽚滚动起来有循环的要求,就需要把图⽚如图(1)这样做: 这样当第⼀张图⽚1滚动出边框时,后⾯的图⽚1则出现在图⽚4的后⾯,这样效果看起来就和循环⼀样~ 当图⽚滚动到下⾯的这种情况时: 继续滚动就会导致图⽚后⾯出现空⽩,就不是循环滚动的效果了,其实这点也是程序的关键所在,每当图⽚滚动到图(2)这种情况时,就应该让图⽚重新回到图(1)那种状态再继续滚动,这样的话就形成了⽆缝循环滚动的效果。

无缝滚动-js原理分析和css分析

无缝滚动-js原理分析和css分析

学习情景四图片(文字)无缝滚动4.1任务目标4.1.1任务引入滚动效果,是网页中很常见,用途也很广的一种效果。

就是HTML自带的标签也有专门表示滚动的标签<marquee>。

Marquee标签可以很轻松的实现页面中的文字或者图片的滚动。

如下:但是,marquee标签有个致命的缺陷--滚动中会有空白出现。

这些空白,会让网页的界面效果大打折扣。

如果能让滚动的时候没有空白,那么整个页面效果就舒服多了!这种没有空白的滚动,我们通常称之“无缝滚动”――就是“没有缝隙(空白)的滚动效果”。

怎么才能让图片滚动的时候没有空白呢?HTML自带的滚动标签<marquee>自然满足不了这种视觉特效要求(也正是因为这点,marquee标签现在已经逐渐的淡出人们的视线,处于被淘汰的境地了)。

因此,需要借助我们神通广大的Javascript来实现这个效果。

现在很多网站都喜欢使用无缝滚动的图片或者文字来突出内容,以此来吸引浏览者的注意。

特别是一些企业网站的产品展示、人物介绍或者新闻公告部分,更是滚动特效的常用部分。

图4.1.1-1 某网站的产品展示部分――该部分就是用js实现了产品图片的水平滚动。

图4.1.1-2 某网站的客户动态部分――该部分用js实现了客户信息的垂直向上滚动。

4.1.2任务目标利用js效果,实现如下样式的新闻动态向上无缝滚动。

图 4.1.2-1 新闻动态无缝滚动效果图4.2设计思路任何网站网页都是从效果图切片后,再通过各种方式布局而成(现在主要使用div+css)。

一个特效做的再好看,它的“前身”还是一张静静的效果图。

(本例效果图见源码中“学习情景四无缝滚动”――“无缝滚动效果图.jpg”,并附有psd源文件以供参考切片)因此,我们在制作绚丽的JS特效的先前步骤一般是:1.根据策划和页面的效果图,完成效果图的切片,做成静态html页面――这里采用时下流行的div+css布局。

2.在html静态页面的基础之上,再添加JS代码,完成特效。

js实现无缝循环滚动

js实现无缝循环滚动
以上就是本文的全部内容,希望对大家的学习有所帮助。
这篇文章主要为大家详细介绍了js实现无缝循环滚动的具体代码文中示例代码介绍的非常详细具有一定的参考价值感兴趣的小伙伴们可以参考一下
js实 现 无 缝 循 环 滚 动
本文实例为大家分享了js无缝循环滚动实现代码,供大家参考,具使用循环定时器轻松实现
<!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <title>无缝滚动</title> </head> <style type="text/css"> .row{ width: 1298px; height: 400px; border: 1px solid; box-shadow:2px 2px 2px #000; overflow: hidden; } .box{ position: relative; } .box1,.box2{ width: 1298px; position: absolute; } .box2{ left:1298px; } img{ float: left; } </style> <body> <div class="row"> <div class="box" id="box">
<div class="box1" id="box1"> <img src="images/1.jpg"> <img src="images/2.jpg"> <img src="images/3.jpg"> <img src="images/4.jpg"> <img src="images/5.jpg"> </div> <div class="box2" id="box2"> <img src="images/1.jpg"> <img src="images/2.jpg"> <img src="images/3.jpg"> <img src="images/4.jpg"> <img src="images/5.jpg"> </div> </div> </div> </body> <script type="text/javascript"> window.onload = function(){ var _box1 = document.getElementById("box1"); var _box2 = document.getElementById("box2"); var x = 0; var fun = function(){ _box1.style.left = x + 'px'; _box2.style.left = (x +1298) + 'px'; x--; if((x +1298) == 0){ x = 0; } } setInterval(fun,1); } </script> </html>

JS实现图片无缝滚动的完美解决 无间隙滚动

JS实现图片无缝滚动的完美解决 无间隙滚动

想必大家都注意到<marquee>的不循环滚动,所以出现了很多替代脚本,或iframe或JS输出<marquee>,不管怎么做,都略显麻烦。

下面说一下这个相对简单的实现思路:一个设定宽度并且隐藏超出它宽度的内容的容器demo,里面放demo1和demo2,demo1是滚动内容,demo2为demo1的直接克隆,通过不断改变demo1的scrollTop或者scrollLeft达到滚动的目的,当滚动至demo1与demo2的交界处时直接跳回初始位置,因为demo1与demo2一样,所以分不出跳动的瞬间,从而达到“无缝”滚动的目的。

先了解一下对象的几个的属性:innerHTML:设置或获取位于对象起始和结束标签内的HTMLscrollHeight: 获取对象的滚动高度。

scrollLeft:设置或获取位于对象左边界和窗口中目前可见内容的最左端之间的距离scrollTop:设置或获取位于对象最顶端和窗口中可见内容的最顶端之间的距离scrollWidth:获取对象的滚动宽度offsetHeight:获取对象相对于版面或由父坐标offsetParent 属性指定的父坐标的高度offsetLeft:获取对象相对于版面或由offsetParent 属性指定的父坐标的计算左侧位置offsetTop:获取对象相对于版面或由offsetTop 属性指定的父坐标的计算顶端位置offsetWidth:获取对象相对于版面或由父坐标offsetParent 属性指定的父坐标的宽度好,先看这个向上滚动的代码:<base href=""><div id=demo style=overflow:hidden;height:100;width:90;background:#214984;color:#ffffff><div id=demo1><img src="images/flash8.gif"><img src="images/link/flashempire.gif"><img src="images/linklogo/shlogo.gif"><img src="images/link/deskcity.gif"><img src="images/linklogo/5dmeng.gif"><img src="/Upload/2004_Pack/logo.gif"><img src="images/link/flashskylogo.gif"><img src="images/link/5dlogo88.gif"><img src="/Upload/2004_Pack/link.gif"></div><div id=demo2></div></div><script>var speed=30demo2.innerHTML=demo1.innerHTML //克隆demo1为demo2function Marquee(){if(demo2.offsetTop-demo.scrollTop<=0) //当滚动至demo1与demo2交界时demo.scrollTop-=demo1.offsetHeight //demo跳到最顶端else{demo.scrollTop++}}var MyMar=setInterval(Marquee,speed) //设置定时器demo.onmouseover=function() {clearInterval(MyMar)}//鼠标移上时清除定时器达到滚动停止的目的demo.onmouseout=function() {MyMar=setInterval(Marquee,speed)}//鼠标移开时重设定时器</script>向下滚动:<base href=""><div id=demo style=overflow:hidden;height:100;width:90;background:#214984;color:#ffffff> <div id=demo1><img src="images/flash8.gif"><img src="images/link/flashempire.gif"><img src="images/linklogo/shlogo.gif"><img src="images/link/deskcity.gif"><img src="images/linklogo/5dmeng.gif"><img src="/Upload/2004_Pack/logo.gif"><img src="images/link/flashskylogo.gif"><img src="images/link/5dlogo88.gif"><img src="/Upload/2004_Pack/link.gif"></div><div id=demo2></div></div><script>var speed=30demo2.innerHTML=demo1.innerHTMLdemo.scrollTop=demo.scrollHeightfunction Marquee(){if(demo1.offsetTop-demo.scrollTop>=0)demo.scrollTop+=demo2.offsetHeightelse{demo.scrollTop--}}var MyMar=setInterval(Marquee,speed)demo.onmouseover=function() {clearInterval(MyMar)}demo.onmouseout=function() {MyMar=setInterval(Marquee,speed)}</script>向左滚动:<base href=""><div id=demo style=overflow:hidden;height:33;width:500;background:#214984;color:#ffffff> <table align=left cellpadding=0 cellspace=0 border=0><tr><td id=demo1 valign=top><img src="images/link/flashempire.gif"><img src="images/linklogo/shlogo.gif"><img src="images/link/deskcity.gif"><img src="images/linklogo/5dmeng.gif"><img src="/Upload/2004_Pack/logo.gif"><img src="images/link/flashskylogo.gif"><img src="images/link/5dlogo88.gif"><img src="/Upload/2004_Pack/link.gif"><img src="images/flash8.gif"></td><td id=demo2 valign=top></td></tr></table></div><script>var speed=30demo2.innerHTML=demo1.innerHTMLfunction Marquee(){if(demo2.offsetWidth-demo.scrollLeft<=0)demo.scrollLeft-=demo1.offsetWidthelse{demo.scrollLeft++}}var MyMar=setInterval(Marquee,speed)demo.onmouseover=function() {clearInterval(MyMar)}demo.onmouseout=function() {MyMar=setInterval(Marquee,speed)}</script>向右滚动:<base href=""><div id=demo style=overflow:hidden;height:33;width:500;background:#214984;color:#ffffff> <table align=left cellpadding=0 cellspace=0 border=0><tr><td id=demo1 valign=top><img src="images/link/flashempire.gif"><img src="images/linklogo/shlogo.gif"><img src="images/link/deskcity.gif"><img src="images/linklogo/5dmeng.gif"><img src="/Upload/2004_Pack/logo.gif"><img src="images/link/flashskylogo.gif"><img src="images/link/5dlogo88.gif"><img src="/Upload/2004_Pack/link.gif"><img src="images/flash8.gif"></td><td id=demo2 valign=top></td></tr></table></div><script>var speed=30demo2.innerHTML=demo1.innerHTMLdemo.scrollLeft=demo.scrollWidthfunction Marquee(){if(demo.scrollLeft<=0)demo.scrollLeft+=demo2.offsetWidthelse{demo.scrollLeft--}}var MyMar=setInterval(Marquee,speed)demo.onmouseover=function() {clearInterval(MyMar)}demo.onmouseout=function() {MyMar=setInterval(Marquee,speed)}</script>。

使用JavaScript实现无限滚动效果

使用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成立,我们可以在这里编写加载更多内容的代码。

JS实现自动滚屏滚动效果

JS实现自动滚屏滚动效果

JS实现自动滚屏滚动效果对于一些特殊的模板,可能为了展示的更加丰富、全面会在一个页面放置很多图表、表格等内容。

由于内容过多,超出了浏览器窗口的大小导致内容展示不全的情况。

这样我们就需要用到js滚屏效果来解决,下面我们来介绍制作方法。

2. cpt的自动滚屏/滚动编辑下面我们进行如下设置。

2.1 添加加载结束事件点击菜单模板>模板web属性>分页预览设置,选择“为该模板单独设置”,添加一个“加载结束”后事件,如下图所示:js代码如下:注:使用自定义滚动条插件时(1.2版本),需要将代码中的content-container换成scrollDiv1.setTimeout(function(){2.//鼠标点击结束3.$('.content-container').click(function(){4.if(timer){5.clearInterval(timer);6.}7.})8.var h=-1;9.var timer = setInterval(function(){10.//获取当前滚动条高度11.var current = $('.content-container')[0].scrollT op;12.if(current==h){13.//滚动到底端,刷新屏幕,并返回顶端14.clearInterval(timer);15.window.location.reload();16.contentPane.$contentPane.scrollT op(0);17.}18.else19.{20.//以25ms/3.5px的速度滚动21.h=current;22.$('.content-container')[0].scrollT op=h+3.5;23.}24.},25);25.},2000)2.2 保存并预览保存模板,点击分页预览,就会出现上面的自动滚动效果。

JS实现无缝循环marquee滚动效果

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实现的简单无缝滚动轮播图的示例代码

原生Js实现的简单无缝滚动轮播图的示例代码

原⽣Js实现的简单⽆缝滚动轮播图的⽰例代码 简单⽆缝滚动轮播图存在很多漏洞,就是后期增加图⽚时会很不⽅便,需要改动的地⽅也很多,耦合性也很强,只适⽤于⼀部分程序,所以我们可以通过改动图⽚结构和计算折算点的⽅式,升级代码。

原简单的滚动轮播代码<html><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>*{margin: 0;padding: 0;}.scroll{position: relative;width: 830px;/*展⽰宽度展⽰4个图+3个边框=830*/height: 130px;border: 10px solid rgb(15, 15, 15);margin: 100px auto;overflow: hidden;}.scroll ul{position: absolute;width: 5000px;/*ul能存下所有li的宽*/height: 130px;top: 0;left: 0;}.scroll ul li{float: left;width: 200px;height: 130px;margin-right: 10px;overflow: hidden;}</style></head><body><div id="scroll" class="scroll"><ul id="munit"><li><img src="../BOM/shuzi/3.png" alt=""></li><li><img src="../BOM/shuzi/4.png" alt=""></li><li><img src="../BOM/shuzi/5.png" alt=""></li><li><img src="../BOM/shuzi/6.png" alt=""></li><li><img src="../BOM/shuzi/7.png" alt=""></li><li><img src="../BOM/shuzi/8.png" alt=""></li><li><img src="../BOM/shuzi/9.png" alt=""></li><li><img src="../BOM/shuzi/3.png" alt=""></li><li><img src="../BOM/shuzi/4.png" alt=""></li><li><img src="../BOM/shuzi/5.png" alt=""></li><li><img src="../BOM/shuzi/6.png" alt=""></li><li><img src="../BOM/shuzi/7.png" alt=""></li><li><img src="../BOM/shuzi/8.png" alt=""></li><li><img src="../BOM/shuzi/9.png" alt=""></li></ul></div><script>//获取元素var scroll = document.getElementById("scroll");var munit = document.getElementById("munit");var li = munit.children;// 进⾏滚动var nowLeft = 0;//要找到ul元素运动的折返点var back = -1470;//图和边框是li的宽度,展⽰的有4张图,所以折返点就是1260//定时器var timer = setInterval(run,20);// ⿏标移上scroll停⽌scroll.onmouseover = function(){clearInterval(timer);}// 移开轮播scroll.onmouseout = function(){timer = setInterval(run,20);}//运动函数function run(){nowLeft -= 2;//判断是否⾛到了折返点,⾛到了,则瞬间切换到0位置if(nowLeft <= back){nowLeft = 0;}munit.style.left = nowLeft + "px";}</script></body></html> 在<div id="scroll">结构给ul新增的⼀个⽗级div,这样之后添加图⽚,后期通过获取ul宽度就可以了计算折算点 1、折返点计算需要通过Js⾃动计算 var back = -munit.offsetWidth;//元素左移,值为负数 2、⾃动⽣成另⼀组对应的图⽚结构 li munit.innerHTML = munit.innerHTML + munit.innerHTML;//这样就会增加⼀组li标签,后期增加图⽚也会随之增加修改部分代码,css改写部分:/*给ul新增的⼀个⽗级div,这样添加图⽚后期获取ul宽度就可以了 */.scroll .inner{position: relative;width: 5000px;}.scroll ul{position: absolute;height: 130px;top: 0;left: 0;list-style: none;body改写部分:<body><div id="scroll" class="scroll"><div class="inner"><ul id="munit"><li><img src="../BOM/shuzi/3.png" alt=""></li><li><img src="../BOM/shuzi/4.png" alt=""></li><li><img src="../BOM/shuzi/5.png" alt=""></li><li><img src="../BOM/shuzi/6.png" alt=""></li><li><img src="../BOM/shuzi/7.png" alt=""></li><li><img src="../BOM/shuzi/8.png" alt=""></li><li><img src="../BOM/shuzi/9.png" alt=""></li><li><img src="../BOM/shuzi/10.png" alt=""></li></ul></div></div>JS改写部分:<script>//获取元素var scroll = document.getElementById("scroll");var munit = document.getElementById("munit");//改写部分//1 折返点计算需要通过Js⾃动计算var back = -munit.offsetWidth;//元素左移,值为负数//2 ⾃动⽣成另⼀组对应的图⽚结构 limunit.innerHTML = munit.innerHTML + munit.innerHTML;// 进⾏滚动var nowLeft = 0;//定时器var timer = setInterval(run,20);// ⿏标移上scroll停⽌scroll.onmouseover = function(){clearInterval(timer);}// 移开轮播scroll.onmouseout = function(){timer = setInterval(run,20);}//运动函数function run(){nowLeft -= 1;//判断是否⾛到了折返点,⾛到了,则瞬间切换到0位置if(nowLeft <= back){nowLeft = 0;}munit.style.left = nowLeft + "px";}</script></body></html>这样的代码耦合性低,也适合任意个数的li、任意⼤⼩的图⽚的加⼊以上就是原⽣Js 实现的简单⽆缝滚动轮播图的⽰例代码的详细内容,更多关于Js 实现的简单⽆缝滚动轮播图的资料请关注其它相关⽂章!。

JavaScript实现页面无缝滚动效果

JavaScript实现页面无缝滚动效果

JavaScript实现页⾯⽆缝滚动效果本⽂实例为⼤家分享了JavaScript实现页⾯⽆缝滚动效果的具体代码,供⼤家参考,具体内容如下⽬前我只使⽤两种⽅式,如果还有其他⽅式,希望推荐⼀下。

1、js+transform使⽤定时器动态增加⼤⼩,再把值赋给 transform,实现位置偏移,来实现⽆缝滚动。

html⼀定要循环两遍数据,这样的话,会出现两个⼀样的数据,在⼀个数据消失后,不会使页⾯空⽩,⽽这时transform归0,有从头开始,因为两个数据相同,归0后视觉上就像⽆缝滚动。

<div style="height: 100%" @mouseenter="moveStar()" @mouseleave="moveLeave()"><table id="rollOne" border="1" :style="{transform:'translate(0px,'+flvPlayerTimer+'px)'}"><tr v-for="item in tableData" :key="item.index"><td width="25%">{{item.fxsj}}</td><td width="15%">{{item.gjbh}}</td><td width="35%">{{item.pzgs}}个</td><td width="25%" style="cursor: pointer" @click="popu(2,item)"><span>详情</span></td></tr></table><table border="1" :style="{transform:'translate(0px,'+flvPlayerTimer+'px)'}"><tr v-for="item in tableData" :key="item.index"><td width="25%">{{item.fxsj}}</td><td width="15%">{{item.gjbh}}</td><td width="35%">{{item.pzgs}}个</td><td width="25%" style="cursor: pointer" @click="popu(2,item)"><span>详情</span></td></tr></table></div>jsexport default {name: "rolling",data() {return {flvPlayerTimer:0,timer:null}},props: {tableData: {type: Array},},mounted(){this.timer = setInterval(()=>{this.flvPlayerTimer-=1if(this.flvPlayerTimer== -($('#rollOne').height())){this.flvPlayerTimer =0}},100)// 别忘了定时器清除this.$once('hook:beforeDestroy',()=>{clearInterval(this.timer);this.timer = null;})},methods:{// ⿏标触碰停⽌moveStar(){clearInterval(this.timer);this.timer2 = null;},// ⿏标离开始moveLeave(){this.timer = setInterval(()=>{this.flvPlayerTimer-=1if(this.flvPlayerTimer== -($('#rollOne').height())){this.flvPlayerTimer =0}},100)},}}css.fxlx{height: 16vh;width: 100%;table,table tr td {border:1px solid rgba(41,143,229,0.3);}table{width: 90%;margin: 0 auto;th{opacity: 0.7;background: linear-gradient(rgba(53,123,203,0.7), rgba(9,57,113,0.7));font-size: 9rem;font-family: PingFang SC Regular, PingFang SC Regular-Regular;font-weight: 400;color: #ffffff;height: 28rem;}td{opacity: 0.8;font-size: 9rem;height: 30rem;font-family: PingFang SC Regular, PingFang SC Regular-Regular;font-weight: 400;color: #ffffff;background:#001c38}}}2、使⽤vue-seamless-scroll插件1、安装vue-seamless-scrollnpm install vue-seamless-scroll --save2、引⼊组件在某些时候实际页⾯渲染后会出现点击事件失效的情况。

JS实现无缝滚动轮播图的原理

JS实现无缝滚动轮播图的原理

JS实现⽆缝滚动轮播图的原理⽤JS实现⽆缝滚动轮播图的⽅法有很多,我⾃⼰瞎琢磨了⼀个,原理⾮常简单,就是点击按钮的⼀瞬间,把 ul 拉到某⼀个位置,然后再滑动,这样就成了⽆缝滑动为了说明原理,我特意简化了代码,整个JS加⼀起只有15⾏,这样也⽅便⼤家看明⽩,只要看懂了原理,再按⾃⼰的需求改就⾮常⽅便了上代码<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta http-equiv="X-UA-Compatible" content="ie=edge"><title>Document</title><style>*{ margin: 0; padding: 0;}#box{width: 600px;margin: 0 auto;overflow: hidden;position: relative;}ul{overflow: hidden;list-style: none;position: relative;left: 0;}li{width: 200px;height: 100px;line-height: 100px;float: left;color: #fff;font-size: 30px;text-align: center;}</style></head><body><div id="box"><ul><li style="background: red">1</li><li style="background: yellow">2</li><li style="background: blue">3</li></ul></div><input type="button" value="左边" id="btn1"><input type="button" value="右边" id="btn2"><script src="https:///jquery/2.2.2/jquery.js"></script><script>window.onload = function(){var ul = document.querySelector('ul');var btn1 = document.querySelector('#btn1');var btn2 = document.querySelector('#btn2');ul.style.width = '1200px'ul.innerHTML += ul.innerHTML;btn1.onclick = function(){if ( ul.offsetLeft == 0 ) {ul.style.left = '-600px';}var num = ul.offsetLeft + 200;$("ul").animate({left: num}, "slow"); }btn2.onclick = function(){if ( ul.offsetLeft == -600 ) {ul.style.left = 0;}var num = ul.offsetLeft - 200;$("ul").animate({left: num}, "slow"); }}</script></body></html>。

文字向上滚动,鼠标放上去暂停

文字向上滚动,鼠标放上去暂停

文字向上滚动,鼠标放上去暂停实例一:无缝滚动,鼠标放上暂停内容的offsetHeight小于容器的高度时,scrollTop就没有用.<div align="center" id="demo" style="overflow:hidden;height:200px;width:600px;border:1px solid #000;"><div id="demo1">JS实现文字无缝滚动,鼠标放上暂停</div><div id="demo2"></div></div><script language="javascript" type="text/javascript"><!--var demo = document.getElementById("demo");var demo1 = document.getElementById("demo1");var demo2 = document.getElementById("demo2");var speed=10; //滚动速度值,值越大速度越慢var nnn=200/demo1.offsetHeight;for(i=0;i<nnn;i++){demo1.innerHTML+="<br />"+ demo1.innerHTML}demo2.innerHTML = demo1.innerHTML //克隆demo2为demo1function Marquee(){if(demo2.offsetTop-demo.scrollT op<=0) //当滚动至demo1与demo2交界时demo.scrollTop-=demo1.offsetHeight //demo跳到最顶端else{demo.scrollTop++}}var MyMar = setInterval(Marquee,speed); //设置定时器demo.onmouseover = function(){clearInterval(MyMar)} //鼠标经过时清除定时器达到滚动停止的目的demo.onmouseout = function(){MyMar = setInterval(Marquee,speed)} //鼠标移开时重设定时器--></script>实例二:跑马灯文字一行一行地向上滚动让项目列表<li>中的文字一行一行地向上滚动:<div align="center" id="demo" style="overflow:hidden;height:200px;width:600px;border:1px solid #000;"><div id="demo1">跑马灯文字一行一行地向上滚动</div><div id="demo2"></div></div><script language="javascript" type="text/javascript"><!--var demo = document.getElementById("demo");var demo1 = document.getElementById("demo1");var demo2 = document.getElementById("demo2");var speed=10; //滚动速度值,值越大速度越慢var nnn=200/demo1.offsetHeight;for(i=0;i<nnn;i++){demo1.innerHTML+="<br />"+ demo1.innerHTML}demo2.innerHTML = demo1.innerHTML //克隆demo2为demo1function Marquee(){if(demo2.offsetTop-demo.scrollT op<=0) //当滚动至demo1与demo2交界时demo.scrollTop-=demo1.offsetHeight //demo跳到最顶端else{demo.scrollTop++}}var MyMar = setInterval(Marquee,speed); //设置定时器demo.onmouseover = function(){clearInterval(MyMar)} //鼠标经过时清除定时器达到滚动停止的目的demo.onmouseout = function(){MyMar = setInterval(Marquee,speed)} //鼠标移开时重设定时器--></script>。

vue-seamless-scroll 参数

vue-seamless-scroll 参数

vue-seamless-scroll 参数Vue-seamless-scroll是一个Vue.js的插件,它提供了无缝滚动的功能。

对于需要实现滚动效果的网页或应用程序来说,无缝滚动是一种常见的需求。

Vue-seamless-scroll能够帮助开发者快速地实现无缝滚动效果,并且具有丰富的参数和配置选项,下面将对一些常用的参数进行详细介绍。

1. :list-类型:Array-默认值:[]-描述:要滚动的列表数据。

每个元素可以是一个基本类型,也可以是一个对象。

2. :scrollAmount-类型:Number-默认值:1-描述:每次滚动的数量。

例如,如果设置为2,每次滚动将会滚动两个元素。

3. :scrollDelay-类型:Number-默认值:1500-描述:每次滚动之间的延迟时间,单位为毫秒。

设置一个较短的延迟时间可以加快滚动速度。

4. :direction-类型:String-默认值:'vertical'-描述:滚动的方向。

可选值为'vertical'(垂直滚动)或'horizontal'(水平滚动)。

5. :hoverToStop-类型:Boolean-默认值:true-描述:设置是否在鼠标悬停时停止滚动。

如果设置为true,在鼠标移入时滚动将会停止,鼠标移出时滚动将继续。

6. :loop-类型:Boolean-默认值:true描述:设置是否循环滚动。

如果设置为true,滚动将会无限循环。

如果设置为false,滚动到列表末端后将会停止。

7. :duration-类型:Number-默认值:1000-描述:每次滚动的持续时间,单位为毫秒。

设置一个较短的持续时间可以加快滚动速度。

8. :easing-类型:String-默认值:'linear'-描述:滚动的缓动函数。

可选值有'linear'、'easeInQuad'、'easeOutQuad'、'easeInOutQuad'等。

js向上无缝滚动效果,每次只滚动一行,鼠标移上去停止

js向上无缝滚动效果,每次只滚动一行,鼠标移上去停止

js向上无缝滚动效果,每次只滚动一行,鼠标移上去停止js向上无缝滚动效果,每次只滚动一行,鼠标移上去停止显示效果:<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN”“/TR/xhtml1/DTD/xhtml1-transitional.dtd”><html xmlns=”/1999/xhtml”><head><meta http-equiv=”Content-Type”content=”text/html; charset=utf-8″/><title>js向上无缝滚动效果,每次只滚动一行,鼠标移上去停止</title><style type=”text/css”>.r_upload {width: 218px; padding: 0 10px; *padding: 0 10px 8px 10px; }.r_upload li {float: left; width: 218px; height: 30px; line-height: 30px; border-bottom: dashed 1px #BFBFBF; overflow: hidden; font-size: 12px; }</style></head><body><ul class=”r_uploadmbm”><div id=”newlist”style=”width:218px; height:100px; overflow:hidden”onmouseover=”iScrollAmount = 0″onmouseout=”iScrollAmount = 1″><li>海韵上传广播电视新闻学专详细解析1</li><li>海韵上传广播电视新闻考研详细解析2</li><li>海韵上传广播电视专业考研详细解析3</li><li>海韵上传广播电视专业考研详细解析4</li><li>海韵上传广播电视专业考研详细解析5</li><li>海韵上传广播电学专业考研详细解析6</li><li>海韵上传广播电视专业考研详细解析7</li><li>海韵上传广播电学专业考研详细解析8</li></div></ul><script type=”text/javascript”>oMarquee = document.getElementById(‘newlist’); //滚动对象variLineHeight = 31; //单行高度,像素variLineCount = 20; //实际行数variScrollAmount = 1; //每次滚动高度,像素oMarquee.innerHTML += oMarquee.innerHTML;//元素内部html代码window.setTimeout(“scroll_list()”, 2000);function scroll_list() { //定义函数oMarquee.scrollTop += iScrollAmount;if (oMarquee.scrollTop == iLineCount * iLineHeight)oMarquee.scrollTop = 0;if(oMarquee.scrollTop % iLineHeight == 0){window.setTimeout( “scroll_list()”, 2000 );}else{window.setTimeout( “scroll_list()”, 50 );}}</script></body></html>。

如何使用JavaScript实现无缝滚动自动播放轮播图效果

如何使用JavaScript实现无缝滚动自动播放轮播图效果

如何使⽤JavaScript实现⽆缝滚动⾃动播放轮播图效果在⼀些项⽬开发中,我们经常需要使⽤到轮播图,但是没有深⼊学习的情况下做轮播图是⾮常困难的。

思路分成⼩问题来解决1. 动态⽣成序号12345页⾯有多少li(图⽚),就有多少序号2. 点击序号、显⽰⾼亮、切换图⽚2.1 给序号注册onclick事件2.2 取消其他序号⾼亮显⽰,让当前点击的序号⾼亮显⽰2.3 点击序号,动画的⽅式切换到当前点击的图⽚位置(设置⾃定义属性,记录当前索引,有了索引就可⽤动画进⾏移动)3. ⿏标放到盒⼦上的时候显⽰左右箭头,移开时候隐藏onmouseenter和onmouseleave4. 实现左右箭头播放上⼀张下⼀张(⽆缝滚动)5. 隔多少时间⾃动播放setInterval和element1..click()联合即可实现代码: index.html:<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><title></title><style type="text/css">* {padding: 0;margin: 0;list-style: none;border: 0;}body {margin: 0;background-color: rgb(55, 190, 89);}.all {width: 500px;height: 200px;padding: 4px;margin: 100px auto;position: relative;background-color: #fff;border-radius: 20px; }.screen {width: 500px;height: 200px;border-radius: 17px; overflow: hidden;position: relative;}.screen li {width: 500px;height: 200px;overflow: hidden;float: left;}.screen ul {position: absolute;left: 0;top: 0px;width: 3000px;}.all ol {position: absolute;right: 180px;bottom: 10px;line-height: 20px;text-align: center;}.all ol li {float: left;width: 20px;height: 20px;background: #fff;border-radius: 10px; border: 1px solid #ccc; margin-left: 10px;cursor: pointer;opacity: 0.5;/* 透明度 */}.all ol li.current {opacity: 1.0;}#arr {display: none;z-index: 1000;}#arr span {width: 40px;height: 40px;position: absolute;left: 5px;top: 50%;margin-top: -20px;background: #000;cursor: pointer;line-height: 40px;text-align: center;font-weight: bold;font-family: '⿊体';font-size: 30px;color: #fff;opacity: 0.5;border: 1px solid #fff; border-radius: 5px;}#arr #right {right: 5px;left: auto;}</style></head><body><div class="all" id='box'><div class="screen"><ul><li><img src="images/wf1.jpg" width="500" height="200" /></li><li><img src="images/wf2.jpg" width="500" height="200" /></li><li><img src="images/wf3.jpg" width="500" height="200" /></li><li><img src="images/wf4.jpg" width="500" height="200" /></li><li><img src="images/wf5.jpg" width="500" height="200" /></li></ul><ol></ol></div><div id="arr"><span id="left"><</span><span id="right">></span></div></div><script src="common.js"></script><script src="animate.js"></script><script src="index.js"></script></body></html>index.js//获取元素var box = my$('box');var screen = box.children[0];var ul = screen.children[0];var ol = screen.children[1]//获取箭头var arr = my$('arr');var arrLeft = my$('left');var arrRight = my$('right');var count = ul.children.length; /* 获取图⽚数量还没有放cloneLi,所以数值是5*/var imgWidth = screen.offsetWidth; /* 获取的图⽚(盒⼦)的宽⾼ *///1.动态⽣成序号for (i = 0; i < count; i++) {// 在ol内创建livar li = document.createElement('li');ol.appendChild(li);// li内赋予数值setInnerText(li, i + 1);li.onclick = liClick;// 设置标签的⾃定义属性(创建索引)li.setAttribute('index', i);}// 2.点击序号,切换,显⽰⾼亮function liClick() {// 取消其他的li的⾼亮,显⽰当前li⾼亮for (i = 0; i < ol.children.length; i++) {var li = ol.children[i];li.className = '';this.className = 'current';}// 获取的⾃定义属性是字符串类型,要转成整数var liIndex = parseInt(this.getAttribute('index'));animate(ul, -liIndex * imgWidth);//使得后⾯定义的全局变量index等于li的属性liIndexindex = liIndex;}//ol内的第⼀个li显⽰⾼亮⾊ol.children[0].className = 'current';//3.⿏标放上去的时候显⽰箭头// onmouseover和onmouseout会触发事件冒泡;onmouseleave和onmouseenter不会触发事件冒泡box.onmouseenter = function () {arr.style.display = 'block';clearInterval(timeId);}box.onmouseleave = function () {arr.style.display = 'none';timeId = setInterval(function () {arrRight.click();}, 2500)}// 4.实现上⼀张,下⼀张的功能var index = 0; //第⼀张图⽚的索引arrRight.onclick = function () {// 判断是否是克隆的第⼀张图⽚,如果是克隆的第⼀张图⽚,此时修改ul的坐标,显⽰真正的第⼀张图⽚ if (index === count) {ul.style.left = '0px';index = 0;}// 如果是最后⼀张图⽚,不让index++index++;// 有5张图⽚,但是还有⼀张克隆的图⽚,克隆图⽚索引是5if (index < count) {//获取图⽚对应的序号,让序号进⾏点击ol.children[index].click();} else {animate(ul, -index * imgWidth);// 取消所有的⾼亮现实,让第⼀个序号⾼亮显⽰for (var i = 0; i < ol.children.length; i++) {var li = ol.children[i];li.className = '';}ol.children[0].className = 'current';}//}arrLeft.onclick = function () {if (index === 0) {index = count;ul.style.left = -index * imgWidth + 'px';}index--;ol.children[index].click();}// ⽆缝滚动var firstLi = ul.children[0];// 克隆li//cloneNode() 复制节点:参数 true 复制节点中的内容 ;false 只复制当前节点,不复制⾥⾯的内容var cloneLi = firstLi.cloneNode(true);ul.appendChild(cloneLi)// 5.⾃动播放var timeId = setInterval(function () {// 切换到下⼀张图⽚arrRight.click();}, 2500)common.jsfunction my$(id) {return document.getElementById(id);}// 处理浏览器兼容性// 获取第⼀个⼦元素function getFirstElementChild(element) {var node, nodes = element.childNodes, i = 0;while (node = nodes[i++]) {if (node.nodeType === 1) {return node;}}return null;}// 处理浏览器兼容性// 获取下⼀个兄弟元素function getNextElementSibling(element) {var el = element;while (el = el.nextSibling) {if (el.nodeType === 1) {return el;}}return null;}// 处理innerText和textContent的兼容性问题// 设置标签之间的内容function setInnerText(element, content) {// 判断当前浏览器是否⽀持 innerTextif (typeof element.innerText === 'string') {element.innerText = content;} else {element.textContent = content;}}// 处理注册事件的兼容性问题// eventName, 不带on, click mouseover mouseoutfunction addEventListener(element, eventName, fn) {// 判断当前浏览器是否⽀持addEventListener ⽅法if (element.addEventListener) {element.addEventListener(eventName, fn); // 第三个参数默认是false} else if (element.attachEvent) {element.attachEvent('on' + eventName, fn);} else {// 相当于 element.onclick = fn;element['on' + eventName] = fn;}}// 处理移除事件的兼容性处理function removeEventListener(element, eventName, fn) {if (element.removeEventListener) {element.removeEventListener(eventName, fn);} else if (element.detachEvent) {element.detachEvent('on' + eventName, fn);} else {element['on' + eventName] = null;}}// 获取页⾯滚动距离的浏览器兼容性问题// 获取页⾯滚动出去的距离function getScroll() {var scrollLeft = document.body.scrollLeft || document.documentElement.scrollLeft; var scrollTop = document.body.scrollTop || document.documentElement.scrollTop; return {scrollLeft: scrollLeft,scrollTop: scrollTop}}// 获取⿏标在页⾯的位置,处理浏览器兼容性function getPage(e) {var pageX = e.pageX || e.clientX + getScroll().scrollLeft;var pageY = e.pageY || e.clientY + getScroll().scrollTop;return {pageX: pageX,pageY: pageY}}//格式化⽇期对象,返回yyyy-MM-dd HH:mm:ss的形式function formatDate(date) {// 判断参数date是否是⽇期对象// instanceof instance 实例(对象) of 的// console.log(date instanceof Date);if (!(date instanceof Date)) {console.error('date不是⽇期对象')return;}var year = date.getFullYear(),month = date.getMonth() + 1,day = date.getDate(),hour = date.getHours(),minute = date.getMinutes(),second = date.getSeconds();month = month < 10 ? '0' + month : month;day = day < 10 ? '0' + day : day;hour = hour < 10 ? '0' + hour : hour;minute = minute < 10 ? '0' + minute : minute;second = second < 10 ? '0' + second : second;return year + '-' + month + '-' + day + ' ' + hour + ':' + minute + ':' + second; }// 获取两个⽇期的时间差function getInterval(start, end) {// 两个⽇期对象,相差的毫秒数var interval = end - start;// 求相差的天数/⼩时数/分钟数/秒数var day, hour, minute, second;// 两个⽇期对象,相差的秒数// interval = interval / 1000;interval /= 1000;day = Math.round(interval / 60 / 60 / 24);hour = Math.round(interval / 60 / 60 % 24);minute = Math.round(interval / 60 % 60);second = Math.round(interval % 60);return {day: day,hour: hour,minute: minute,second: second}}animage.js// var timerId = null;// 封装动画的函数function animate(element, target) {// 通过判断,保证页⾯上只有⼀个定时器在执⾏动画if (element.timerId) {clearInterval(element.timerId);element.timerId = null;}element.timerId = setInterval(function () {// 步进每次移动的距离var step = 10;// 盒⼦当前的位置var current = element.offsetLeft;// 当从400 到 800 执⾏动画// 当从800 到 400 不执⾏动画// 判断如果当前位置 > ⽬标位置此时的step 要⼩于0if (current > target) {step = - Math.abs(step);}// Math.abs(current - target) <= Math.abs(step)if (Math.abs(current - target) <= Math.abs(step)) {// 让定时器停⽌clearInterval(element.timerId);// 让盒⼦到target的位置element.style.left = target + 'px';return;}// 移动盒⼦current += step;element.style.left = current + 'px';}, 5);}总结到此这篇关于如何使⽤JavaScript实现⽆缝滚动⾃动播放轮播图效果的⽂章就介绍到这了,更多相关js⽆缝滚动⾃动播放内容请搜索以前的⽂章或继续浏览下⾯的相关⽂章希望⼤家以后多多⽀持!。

原生JS实现各个方向无缝滚动

原生JS实现各个方向无缝滚动

原生JS实现各个方向无缝滚动思路:1.创建一个容器,用于显示内容,并设置其样式属性;2.将内容元素复制一份,插入到容器的后面,以实现无缝滚动的效果;3. 通过设置定时器,不断改变容器的left或top属性值,从而实现滚动效果;4.监听鼠标移入和移出事件,当鼠标移入时暂停滚动,移出时恢复滚动;5.监听窗口大小改变事件,自适应调整容器和内容元素的位置。

具体实现如下:HTML结构:```html<div class="container"><div class="content"><!--内容元素--></div></div>```CSS样式:```css.containerposition: relative;overflow: hidden;width: 500px; /* 容器宽度 */height: 300px; /* 容器高度 */.contentposition: absolute;white-space: nowrap;/*水平方向滚动*//* left: 0; *//*垂直方向滚动*//* top: 0; */```JS代码:```javascriptwindow.onload = functiovar container = document.querySelector('.container');var content = document.querySelector('.content');var contentClone = content.cloneNode(true); // 复制内容元素container.appendChild(contentClone); // 将复制的内容元素插入容器中var speed = 1; // 滚动速度,自定义var direction = 'horizontal'; // 滚动方向,水平或垂直,自定义//滚动函数function scrolif (direction === 'horizontal')//水平方向滚动if (container.scrollLeft >= content.offsetWidth)container.scrollLeft = 0;} elsecontainer.scrollLeft++;}} else if (direction === 'vertical')//垂直方向滚动if (container.scrollTop >= content.offsetHeight)container.scrollTop = 0;} elsecontainer.scrollTop++;}}}//启动滚动//鼠标移入暂停滚动,移出恢复滚动container.onmouseover = functio};container.onmouseout = functio};//监听窗口大小改变事件,自适应调整容器和内容元素的位置window.onresize = functioif (direction === 'horizontal')container.scrollLeft = 0;container.style.width = container.offsetWidth + 'px'; content.style.width = content.offsetWidth * 2 + 'px'; } else if (direction === 'vertical')container.scrollTop = 0;container.style.height = container.offsetHeight + 'px';content.style.height = content.offsetHeight * 2 + 'px';}};};```以上就是使用原生JS实现各个方向无缝滚动的方法,通过定时器和DOM操作来实现滚动效果,并通过事件监听来实现暂停和恢复滚动的功能,最后在窗口大小改变时可以自适应调整容器和内容元素的位置。

原生JS实现各个方向无缝滚动

原生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">&lt;&lt;</div><div id="right" style="cursor:pointer">&gt;&gt;</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>[文档可能无法思考全面,请浏览后下载,另外祝您生活愉快,工作顺利,万事如意!]。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
else{
demo.scrollTop++
}
}
var MyMar = setInterval(Marquee,speed); //设置定时器
demo.onmouseover = function(){clearInterval(MyMar)} //鼠标经过时清除定时器达到滚动停止的目的
demo2.innerHTML = demo1.innerHTML //克隆demo2为demo1
function Marquee(){
if(demo2.offsetTop-demo.scrollTop<=0) //当滚动至demo1与demo2交界时
demo.scrollTop-=demo1.offsetHeight //demo跳到最顶端
var demo2 = document.getElementById("demo2");
var speed=10; //滚动速度值,值越大速度越慢
var nnn=200/demo1.offsetHeight;
for(i=0;i<nnn;i++){demo1.innerHTML+="<br />"+ demo1.innerHTML}
</div>
<div id="demo2"></div>
</div>
<script language="javascript" type="text/javascript">
<!--
var demo = document.getElementById("demo");
var demo1 = dmo1");
<div align="center" id="demo" style="overflow:hidden;height:200px;width:600px;border:1px solid #000;">
<div id="demo1">
标准之路——DIV+CSS教程,网而布局,web2.0,常用代码,水晶图标,幻灯图片
demo.onmouseout = function(){MyMar = setInterval(Marquee,speed)} //鼠标移开时重设定时器
-->
</script>
文章出处:标准之路(/code/244.shtml)�
相关文档
最新文档