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 相关文章推荐
javascript 单选框,多选框美化代码
Aug 01 Javascript
Javascript实现DIV滚动自动滚动到底部的代码
Mar 01 Javascript
左右悬浮可分组的网站QQ在线客服代码(可谓经典)
Dec 21 Javascript
Ext GridPanel加载完数据后进行操作示例代码
Jun 17 Javascript
jQuery实现简洁的导航菜单效果
Nov 23 Javascript
你不需要jQuery(三) 新AJAX方法fetch()
Jun 14 Javascript
Angularjs CURD 详解及实例代码
Sep 14 Javascript
判断数组的最佳方法(推荐)
Oct 11 Javascript
jQuery ajaxForm()的应用
Oct 14 Javascript
详解vue-property-decorator使用手册
Jul 29 Javascript
微信小程序实现拖拽功能
Sep 26 Javascript
Vue中foreach数组与js中遍历数组的写法说明
Jun 05 Vue.js
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+Html+缓存
2006/11/25 PHP
PHP 配置文件中open_basedir选项作用
2009/07/19 PHP
php实现的简单检验登陆类
2015/06/18 PHP
js动画(animate)简单引擎代码示例
2012/12/04 Javascript
js multiple全选与取消全选实现代码
2012/12/04 Javascript
js获取location.href的参数实例代码
2013/08/02 Javascript
使用iframe window的scroll方法控制iframe页面滚动
2014/03/05 Javascript
js获取IP地址的方法小结
2014/07/01 Javascript
jquery滚动到顶部底部代码
2015/04/20 Javascript
AngularJS学习笔记之基本指令(init、repeat)
2015/06/16 Javascript
JS实现为动态添加的元素增加事件功能示例【基于事件委托】
2018/03/21 Javascript
了解JavaScript表单操作和表单域
2019/05/27 Javascript
如何通过Proxy实现JSBridge模块化封装
2020/10/22 Javascript
[03:58]兄弟们,回来开黑了!DOTA2昔日战友招募宣传视频
2016/07/17 DOTA
Python使用urllib2模块抓取HTML页面资源的实例分享
2016/05/03 Python
Python学习笔记之if语句的使用示例
2017/10/23 Python
使用Python搭建虚拟环境的配置方法
2018/02/28 Python
numpy.std() 计算矩阵标准差的方法
2018/07/11 Python
用Python进行websocket接口测试
2020/10/16 Python
微信小程序之html5 canvas绘图并保存到系统相册
2019/06/20 HTML / CSS
法国在线购买汽车轮胎网站:123pneus.fr
2019/02/25 全球购物
女士和男士时尚鞋在线购物:Shoespie
2019/02/28 全球购物
电厂职工自我鉴定
2014/02/20 职场文书
制作部班长职位说明书
2014/02/26 职场文书
学校评语大全
2014/05/06 职场文书
小学优秀班主任事迹材料
2014/05/17 职场文书
模具专业求职信
2014/06/26 职场文书
学生会竞选演讲稿怎么写
2014/08/26 职场文书
世界地球日活动总结
2015/02/09 职场文书
朋友聚会开场白
2015/06/01 职场文书
国家助学金受助感言
2015/08/01 职场文书
2019最新激励员工口号大全!
2019/06/28 职场文书
原生Js 实现的简单无缝滚动轮播图的示例代码
2021/05/10 Javascript
PyTorch梯度裁剪避免训练loss nan的操作
2021/05/24 Python
Vue+Flask实现图片传输功能
2022/04/01 Vue.js
PHP RabbitMQ消息列队
2022/05/11 PHP