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删除指定的html标签并保留标签内文本内容的方法
Apr 02 Javascript
使用jquery选择器如何获取父级元素、同级元素、子元素
May 14 Javascript
用js通过url传参把数据从一个页面传到另一个页面
Sep 01 Javascript
node.js调用C++开发的模块实例
Jul 03 Javascript
AngularJs篇:使用AngularJs打造一个简易权限系统的实现代码
Dec 26 Javascript
jQuery之动画ajax事件(实例讲解)
Jul 18 jQuery
Javascript 严格模式use strict详解
Sep 16 Javascript
详解Vue如何支持JSX语法
Nov 10 Javascript
RequireJS用法简单示例
Aug 20 Javascript
webpack4.x下babel的安装、配置及使用详解
Mar 07 Javascript
JS常见内存泄漏及解决方案解析
May 30 Javascript
js加减乘除精确运算方法实例代码
Jan 17 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动态生成VRML网页
2006/10/09 PHP
php入门学习知识点四 PHP正则表达式基本应用
2011/07/14 PHP
解析PHP中的内存管理,PHP动态分配和释放内存
2013/06/28 PHP
php加密解密函数authcode的用法详细解析
2013/10/28 PHP
PHP多维数组遍历方法(2种实现方法)
2015/12/10 PHP
PHP给文字内容中的关键字进行套红处理
2016/04/12 PHP
PHP简单获取网站百度搜索和搜狗搜索收录量的方法
2016/08/23 PHP
php类的自动加载操作实例详解
2016/09/28 PHP
用正则表达式 动态创建/增加css style script 兼容IE firefox
2009/03/10 Javascript
jValidate 基于jQuery的表单验证插件
2009/12/12 Javascript
Js 获取Gridview选中行的内容操作步骤
2013/02/05 Javascript
浅谈jQuery中事情的动态绑定
2017/02/12 Javascript
vue如何引用其他组件(css和js)
2017/04/13 Javascript
简单分析js中的this的原理
2019/08/31 Javascript
Node.js API详解之 os模块用法实例分析
2020/05/06 Javascript
2分钟实现一个Vue实时直播系统的示例代码
2020/06/05 Javascript
js实现页面导航层级指示效果
2020/08/25 Javascript
Python错误提示:[Errno 24] Too many open files的分析与解决
2017/02/16 Python
老生常谈python函数参数的区别(必看篇)
2017/05/29 Python
Python的地形三维可视化Matplotlib和gdal使用实例
2017/12/09 Python
django 在原有表格添加或删除字段的实例
2018/05/27 Python
python+selenium 定位到元素,无法点击的解决方法
2019/01/30 Python
python批量读取文件名并写入txt文件中
2020/09/05 Python
用Python画小女孩放风筝的示例
2019/11/23 Python
Python谱减法语音降噪实例
2019/12/18 Python
html5中valid、invalid、required的定义
2014/02/21 HTML / CSS
可打印的优惠券、杂货和优惠券代码:Coupons.com
2018/06/12 全球购物
师范学院美术系毕业生自我鉴定
2014/01/29 职场文书
致接力运动员广播稿
2014/02/17 职场文书
校园安全演讲稿
2014/05/09 职场文书
个人作风建设自查报告
2014/10/22 职场文书
党员反对四风思想汇报范文
2014/10/25 职场文书
2014年初级职称工作总结
2014/12/08 职场文书
利用Matlab绘制各类特殊图形的实例代码
2021/07/16 Python
分布式架构Redis中有哪些数据结构及底层实现原理
2022/03/13 Redis
Vue深入理解插槽slot的使用
2022/08/05 Vue.js