ddc
联网
平面设计 画册 VI欣赏 包装 CG-插画 搜索 个人网页 Alexa排名 CSS 建站资源 下载专区 JS特效 品牌服装 服装院校 专题欣赏 SEO 图标欣赏 专题
广州网站建设 上海网站设计 网站建设 上海网站建设 网站建设 广州网站设计 虚拟主机 域名注册 虚拟主机 广州网站建设 虚拟主机 域名注册 ACG动漫家园 ACG大玩家 上海网站建设 品牌设计 网站建设
网站建设
网站建设
品牌设计
中国设计秀
中国设计秀企业频道
时代网
中资源
当前位置:网站综合首页 >> 建站资源 >> 站长手册 >> 如何实现图片的无缝循环滚动

如何实现图片的无缝循环滚动

来源:中国设计秀    作者:coke    点击:13     加入收藏    发表评论
0
顶一下

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

具体步骤

1.向上滚动。

<base href=http://www.cnwebshow.com>
<div id=demo style=overflow:hidden;height:100;width:90;
background:#214984;color:#ffffff>
<div id=demo1>
 <img src="images/webshow.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="http://www.blueidea.com/logo.gif">
 <img src="images/link/flashskylogo.gif">
 <img src="images/link/5dlogo88.gif">
 <img src="http://www.webshow.com/cgercn/link.gif">
 </div>
 <div id=demo2></div>
 </div>
   <script>
   var speed=30
   demo2.innerHTML=demo1.innerHTML //克隆demo1为demo2
   function Marquee(){
//当滚动至demo1与demo2交界时
if(demo2.offsetTop-demo.scrollTop<=0)  
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>


2.向下滚动。

<base href=http://www.cnwebshow.com>
  <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="http://www.blueidea.com/logo.gif">
  <img src="images/link/flashskylogo.gif">
  <img src="images/link/5dlogo88.gif">
  <img src="http://www.yiiboo.com/cgercn/link.gif">
</div>
<div id=demo2></div>
</div>
    <script>
    var speed=30
    demo2.innerHTML=demo1.innerHTML
    demo.scrollTop=demo.scrollHeight
    function Marquee(){
    if(demo1.offsetTop-demo.scrollTop>=0)
    demo.scrollTop+=demo2.offsetHeight
    else{
    demo.scrollTop--
    }
    }
    var MyMar=setInterval(Marquee,speed)
    demo.onmouseover=function() {clearInterval(MyMar)}
    demo.onmouseout=function() {MyMar=setInterval(Marquee,speed)}
    </script>


3.向左滚动。

<base href=http://www.cnwebshow.com>
<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="http://www.blueidea.com/logo.gif">
<img src="images/link/flashskylogo.gif">
<img src="images/link/5dlogo88.gif">
<img src="http://www.yiiboo.com/cgercn/link.gif">
<img src="images/flash8.gif">
</td>
<td id=demo2 valign=top></td>
</tr>
</table>
</div>
  <script>
  var speed=30
  demo2.innerHTML=demo1.innerHTML
  function Marquee(){
  if(demo2.offsetWidth-demo.scrollLeft<=0)
  demo.scrollLeft-=demo1.offsetWidth
  else{
  demo.scrollLeft++
  }
  }
  var MyMar=setInterval(Marquee,speed)
  demo.onmouseover=function() {clearInterval(MyMar)}
  demo.onmouseout=function() {MyMar=setInterval(Marquee,speed)}
  </script>


4.向右滚动。

<base href=http://www.cnwebshow.com>
<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="http://www.blueidea.com/logo.gif">
<img src="images/link/flashskylogo.gif">
<img src="images/link/5dlogo88.gif">
<img src="http://www.yiiboo.com/cgercn/link.gif">
<img src="images/flash8.gif">
</td>
<td id=demo2 valign=top></td>
</tr>
</table>
</div>
  <script>
  var speed=30
  demo2.innerHTML=demo1.innerHTML
 demo.scrollLeft=demo.scrollWidth
  function Marquee(){
  if(demo.scrollLeft<=0)
  demo.scrollLeft+=demo2.offsetWidth
  else{
  demo.scrollLeft--
  }
  }
  var MyMar=setInterval(Marquee,speed)
  demo.onmouseover=function() {clearInterval(MyMar)}
  demo.onmouseout=function() {MyMar=setInterval(Marquee,speed)}
  </script>

 提示:关于循环滚动的原理,光看本例代码的话可能会觉得枯涩难懂,那样的话可以运行下面修改过的代码,注意滚动条和背景颜色的变化:

<base href=http://www.cnwebshow.com>
 <div id=demo style="overflow-x:hidden;overflow-y:scroll;
height:100;width:90;background:#214984">
 <img src="images/webshow.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="http://www.blueidea.com/logo.gif">
 <img src="images/link/flashskylogo.gif">
 <img src="images/link/5dlogo88.gif">
 </div>
<script>
function Marquee(obj,speed){
  with(obj){
innerHTML=["<div>","</div><div style=’background:green’>","</div>"].join(innerHTML)
onmouseover=function(){clearInterval(MyMar)}
onmouseout=function(){
MyMar=setInterval(function(){
with(obj)
scrollTop+=(scrollTop<=lastChild.offsetTop?1:-lastChild.offsetHeight)},speed)}
      fireEvent("onmouseout")
  }
}
Marquee(demo,30)
</script>

特别提示
运行本例所给的四段代码,将看到图片分别按指定的上、下、左和右四个方向循环滚动。图1.8.29为提示中所给代码的运行效果,可以看到,Y轴的滚动滑块滚动一段距离(在红色背景的那块滚动到顶端时)后又自动跳到顶端。

图1.8.29 循环无缝滚动的原理演示

特别说明


本例主要是对象属性中和滚动相关的几个属性的应用,各属性说明如下:
innerHTML 设置或获取位于对象起始和结束标签内的 HTML。
scrollHeight 获取对象的滚动高度。 
scrollLeft 设置或获取位于对象左边界和窗口中目前可见内容的最左端之间的距离。
scrollTop 设置或获取位于对象最顶端和窗口中可见内容的最顶端之间的距离。
scrollWidth 获取对象的滚动宽度。
offsetHeight 获取对象相对于版面或由父坐标 offsetParent 属性指定的父坐标的高度。
offsetLeft 获取对象相对于版面或由 offsetParent 属性指定的父坐标的计算左侧位置。
offsetTop 获取对象相对于版面或由 offsetTop 属性指定的父坐标的计算顶端位置。
offsetWidth 获取对象相对于版面或由父坐标 offsetParent 属性指定的父坐标的宽度。
2005-09-25 20:58:44    出处:http://www.cnwebshow.com
Google
热点文章/相关文章

音乐
嫁衣 画心 放生 天亮了 牡丹江 那滋味 擦肩而过 怀念过去 北京欢迎你 突然好想你 吻的太逼真 说好的幸福呢 坐上火车去拉萨 没有人比我更爱你
愚爱 心碎 稻香 带我走 醉赤壁 魔杰座 我还想她 明天过后 一定要爱你 等爱的玫瑰 原谅我一次 越单纯越幸福 最后一次的温柔 给我一首歌的时间
白狐 光荣 降临 下雨天 小酒窝 樱花草 恋爱新手 说唱脸谱 红色高跟鞋 寂寞才说爱 深深爱过你 爱上你是个错 即使知道要见面 不是因为寂寞才想你
城府 假如 花海 兰亭序 棉花糖 舍不得 最后一次 女人如烟 外滩十八号 我们的纪念 我们的无奈 心在跳情在烧 爱上你是我的错 爱情里没有谁对谁错
网站地图 | 关于我们 | 联系我们 | 网站建设 | 广告服务 | 版权声明 | 免责声明 | 网站公告 | 友情链接 | 留言 | 旧版入口