JS实现的N多简单无缝滚动代码(包含图文效果)


Posted in Javascript onNovember 06, 2015

本文实例讲述了JS实现的N多简单无缝滚动代码。分享给大家供大家参考,具体如下:

实现原理很简单,注册事件之后,立即将元素的innerHTML累加一次。

接着滚动开始,当滚动条到达元素的中间位置时:

不要在子元素上设置margin和padding,因为CSS对margin或padding的叠加机制,会导致滚动出现“跳跃”。稳妥的办法是套一个内联元素,然后再在里面设置margin或者padding!

运行效果截图如下:

JS实现的N多简单无缝滚动代码(包含图文效果)

在线演示地址如下:

具体代码如下:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<style type="text/css">
body{width:80%;margin:0 auto;color:#00a;}
h2{font-size:120%;margin:1em auto;text-align:center;}
div{border:solid 1px #0a0;font-size:12px;overflow:hidden;width:500px;margin:1em auto;}
p{padding:0;margin:0;}
p span{display:inline-block;margin:1em;}
p b{margin:1em .5em;display:inline-block;font-size:120%;color:red;}
.tips{border:solid 1px red;background:#FFC;padding:.5em;}
</style>
<title>无缝滚动</title>
</head>
<body>
<h1>较简单的无缝滚动实现办法</h1>
<p class="tips">切记:不要在子元素上设置margin和padding,因为CSS对margin或padding的叠加机制,会导致滚动出现“跳跃”。稳妥的办法是套一个内联元素,然后再在里面设置margin或者padding!为什么滚动到一半就跳转到顶部了呢?因为obj.innerHTML=obj.innerHTML+obj.innerHTML,它迷惑了你。。。。</p>
<h2>第一个,设置非标准属性delay,所以要快些</h2>
<div class="seamless" style="height:100px;" id="obj" delay="10">
 <p><span>蓝色理想维基是一个以蓝色理想社区 用户为基础的维基系统。 只要是社区的用户,并达到初级用户级别,就能对本站的页面进行增加和编辑。</span></p>
 <p><span>我们目前使用这套系统来完成我们网站的各项帮助。比如论坛怎么使用,怎么找回密码一类的问题。另外还用来记录一些网站,会员的各项历史信息。</span></p>
 <p><span>长期的打算是解决社区的技术版块中重复提出的基础问题。因为论坛回复很不规范,需要用户自己从回复中整理和测试,另外很容易被帖子内容淹没,没有有效地进行整理和规范。</span></p>
 <p><span>我们想利用高素质的网站会员在HTML方面的专业知识,来完成一个协作的WEB知识库,造福大众。</span></p>
 <p><span>蓝色理想维基标识设计师是:bobpop,标识版权属于支付宝。</span></p>
</div>
<h2>第二个,如果未设置delay,则默认100毫秒的频率滚动</h2>
<div class="seamless" style="height:50px;">
 <p><span>缺陷:不能对子标签设置margin或者padding。</span></p>
 <p><span>怎么办呢?跟上面一样,里面套一个span标签,然后就可以设置margin,padding了。</span></p>
 <p><span>算是一个缺点吧。</span></p>
</div>
<h2>第三个,可以停止的,因为class="seamless <strong style="color:red;">allowStop</strong>"</h2>
<div class="seamless allowStop" style="height:90px;width:150px;" delay="9">
 <p><span><img src="images/frown.gif" width="50" /></span></p>
 <p><span><img src="images/redface.gif" /></span></p>
 <p><span><img src="images/biggrin.gif" width="90" /></span></p>
 <p><span><img src="images/wink.gif" width="120" /></span></p>
 <p><span><img src="images/tongue.gif" width="40" /></span></p>
 <p><span><img src="images/cool.gif" align="right" height="40" /></span></p>
 <p><span><img src="images/rolleyes.gif" width="70" /></span></p>
 <p><span><img src="images/confused.gif" /></span></p>
 <p><span><img src="images/han.gif" /></span></p>
</div>
</body>
</html>
<script type="text/javascript">
(function(c){
 var obj=document.getElementsByTagName("div");
 var _l=obj.length;
 var o;
 for(var i=0;i<_l;i++){
  o=obj[i];
  var n2=o.clientHeight;
  var n3=o.scrollHeight;
  o.s=0;
  if(o.className.indexOf(c)>=0){
   if(n3<=n2){return false;}
   var delay=parseInt(o.getAttribute("delay"),10);
   if(isNaN(delay)){delay=100;}
   if(o.className.indexOf("allowStop")>=0){
    o.onmouseover=function(){this.Stop=true;}
    o.onmouseout=function(){this.Stop=false;}
   }
   giveInterval(autoRun,delay,o);
   //关键之处!!
   o.innerHTML=o.innerHTML+o.innerHTML;
  }
 }
 //注册函数
 function giveInterval(funcName,time){var args=[];for(var i=2;i<arguments.length;i++){args.push(arguments[i]);}return window.setInterval(function(){funcName.apply(this,args);},time);}
 function autoRun(o,s){
  if(o.Stop==true){return false;}
  var n1=o.scrollTop;
  var n3=o.scrollHeight;
  o.s++;
  o.scrollTop=o.s;
  if(n1>=n3/2){
   o.scrollTop=0;
   o.s=0;
  }
 }
})('seamless')
</script>

希望本文所述对大家JavaScript程序设计有所帮助。

Javascript 相关文章推荐
JS日历 推荐
Dec 03 Javascript
javascript学习笔记(十二) RegExp类型介绍
Jun 20 Javascript
JS中setTimeout()的用法详解
Apr 14 Javascript
Javascript中的匿名函数与封装介绍
Mar 15 Javascript
php常见的页面跳转方法汇总
Apr 15 Javascript
IE8下jQuery改变png图片透明度时出现的黑边
Aug 30 Javascript
jQuery Ajax 实例代码 ($.ajax、$.post、$.get)
Apr 29 Javascript
详解webpack3如何正确引用并使用jQuery库
Aug 26 jQuery
vue的mixins属性详解
Mar 14 Javascript
关于TypeScript模块导入的那些事
Jun 12 Javascript
JQuery animate动画应用示例
May 14 jQuery
Vue实现拖放排序功能的实例代码
Jul 08 Javascript
javascript中的altKey 和 Event属性大全
Nov 06 #Javascript
JS日期加减,日期运算代码
Nov 05 #Javascript
程序员必知35个jQuery 代码片段
Nov 05 #Javascript
js如何实现淡入淡出效果
Nov 18 #Javascript
JavaScript数组去重的五种方法
Nov 05 #Javascript
javascript实现tab切换的两个实例
Nov 05 #Javascript
Javascript中的return作用及javascript return关键字用法详解
Nov 05 #Javascript
You might like
PHP安全防范技巧分享
2011/11/03 PHP
PHP以mysqli方式连接类完整代码实例
2014/07/15 PHP
PHP使用curl模拟post上传及接收文件的方法
2016/03/04 PHP
Symfony2使用Doctrine进行数据库查询方法实例总结
2016/03/18 PHP
PHP序列化/对象注入漏洞分析
2016/04/18 PHP
这段js代码得节约你多少时间
2011/12/20 Javascript
jquery分页插件AmSetPager(自写)
2013/04/15 Javascript
通过遮罩层实现浮层DIV登录的js代码
2014/02/07 Javascript
jquery高级编程的最佳实践详解
2014/03/23 Javascript
JsRender for index循环索引用法详解
2014/10/31 Javascript
JavaScript中的ArrayBuffer详细介绍
2014/12/08 Javascript
javascript模拟命名空间
2015/04/17 Javascript
jquery实现邮箱自动填充提示功能
2015/11/17 Javascript
简单理解vue中el、template、replace元素
2016/10/27 Javascript
vue2.0+webpack环境的构造过程
2016/11/08 Javascript
微信小程序实现两边小中间大的轮播效果的示例代码
2018/12/07 Javascript
你或许不知道的一些npm实用技巧
2019/07/04 Javascript
js实现3D照片墙效果
2019/10/28 Javascript
javascript使用链接跨域下载图片
2019/11/01 Javascript
[02:52]DOTA2新手基础教程 米波
2014/01/21 DOTA
Django返回json数据用法示例
2016/09/18 Python
Apache如何部署django项目
2017/05/21 Python
Python 打印中文字符的三种方法
2018/08/14 Python
Python日志syslog使用原理详解
2020/02/18 Python
Python3实现建造者模式的示例代码
2020/06/28 Python
HTML5中使用postMessage实现两个网页间传递数据
2016/06/22 HTML / CSS
Bulk Powders意大利:运动补充在线商店
2019/02/09 全球购物
生物技术研究生自荐信
2013/11/12 职场文书
商务日语毕业生自荐信范文
2013/11/14 职场文书
教师工作失职检讨书
2014/09/18 职场文书
世界环境日活动总结
2015/02/11 职场文书
2015年网络管理员工作总结
2015/05/21 职场文书
预备党员考察表党小组意见
2015/06/01 职场文书
2016廉政教育学习心得体会
2016/01/25 职场文书
音乐课《小猫钓鱼》教学反思
2016/02/18 职场文书
Canvas如何做个雪花屏版404的实现
2021/09/25 HTML / CSS