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 相关文章推荐
jQuery 鼠标经过(hover)事件的延时处理示例
Apr 14 Javascript
基于jQuery实现音乐播放试听列表
Apr 14 Javascript
JavaScript中的splice方法用法详解
Jul 20 Javascript
AngularJs bootstrap详解及示例代码
Sep 01 Javascript
JS 动态判断PC和手机浏览器实现代码
Sep 21 Javascript
AngularJS实现星星等级评分功能
Sep 24 Javascript
jQuery操作json常用方法示例
Jan 04 Javascript
Vue中计算属性computed的示例解读
Jul 26 Javascript
详解Node.js中的Async和Await函数
Feb 22 Javascript
手把手教你写一个微信小程序(推荐)
Oct 17 Javascript
详解jQuery设置内容和属性
Apr 11 jQuery
何时/使用 Vue3 render 函数的教程详解
Jul 25 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生成带logo二维码方法小结
2016/04/08 PHP
javascript加号&quot;+&quot;的二义性说明
2013/03/04 Javascript
Javascript表格翻页效果实现思路及代码
2013/08/23 Javascript
Extjs4中tree的拖拽功能(可以两棵树之间拖拽) 简单实例
2013/12/08 Javascript
javascript中Number对象的toString()方法分析
2014/12/20 Javascript
基于javascript实现表格的简单操作
2016/05/21 Javascript
浅谈JavaScript中小数和大整数的精度丢失
2016/05/31 Javascript
jQuery获取select选中的option的value值实现方法
2016/08/29 Javascript
js实现4个方向滚动的球
2017/03/06 Javascript
Node.js利用debug模块打印出调试日志的方法
2017/04/25 Javascript
AngularJS折叠菜单实现方法示例
2017/05/18 Javascript
vue和webpack打包项目相对路径修改的方法
2018/06/15 Javascript
JavaScript中为事件指定处理程序的五种方式分析
2018/07/27 Javascript
vuex提交state&amp;&amp;实时监听state数据的改变方法
2018/09/16 Javascript
vue源码中的检测方法的实现
2019/09/26 Javascript
vue elementui 实现搜索栏公共组件封装的实例代码
2020/01/20 Javascript
JS通过识别id、value值对checkbox设置选中状态
2020/02/19 Javascript
ES6对象操作实例详解
2020/05/23 Javascript
Vue中的this.$options.data()和this.$data用法说明
2020/07/26 Javascript
解决Python3.5+OpenCV3.2读取图像的问题
2018/12/05 Python
分享8个非常流行的 Python 可视化工具包
2019/06/05 Python
Django REST Framework序列化外键获取外键的值方法
2019/07/26 Python
selenium中get_cookies()和add_cookie()的用法详解
2020/01/06 Python
Django实现列表页商品数据返回教程
2020/04/03 Python
Django def clean()函数对表单中的数据进行验证操作
2020/07/09 Python
基于css3的属性transition制作菜单导航效果
2015/09/01 HTML / CSS
世界上最好的精品店:Shoptiques
2018/02/05 全球购物
建筑工程管理专业自荐信范文
2013/12/28 职场文书
制药工程专业个人求职自荐信
2014/01/25 职场文书
服装创业计划书范文
2014/02/05 职场文书
弘扬雷锋精神活动演讲稿
2014/03/04 职场文书
竞赛口号大全
2014/06/16 职场文书
大学生第一学年自我鉴定
2014/09/12 职场文书
幼儿园开学通知
2015/04/24 职场文书
python基础之爬虫入门
2021/05/10 Python
利用js实现简单开关灯代码
2021/11/23 Javascript