网站优化

 找回密码
 立即注册
JS实现无缝循环marquee滚动效果
查看: 3327|回复: 20

JS实现无缝循环marquee滚动效果

lplwx123 发表于 2017-6-6 17:35:32 | 显示全部楼层 |阅读模式
无缝循环marquee滚动JS代码实现,兼容IE, FireFox, Chrome,供大家参考,具体内容如下
首先是CSS和HTML如下:

  #marquee_zxd {
    border: 1px solid red;
    white-space: nowrap;
    overflow: hidden;
    width: 500px;
    padding-top: 5px;

  }

  #marquee_zxd img {
    height: 100px;
  }

<!-- 横向一定要是span -->
    <div id="marquee_zxd"><span>
      <!-- 内嵌一个div很重要,里面的元素必须是一个整体的移动。另外横移时,必须是行级元素只占自己的空间。 -->
      <div id="marquee_inner" style="position:relative; display: inline-block;">
      <img src="img/duck.png"/>
      <img src="img/donkey.png"/>
      <img src="img/eggbird.png"/>
      <img src="img/elephant.png"/>
      <img src="img/butterfly.png"/>
    </div>
    </span></div>

<script type="text/javascript" src="${cpath}/js/marquee_zxd.js"></script>
下面是JS实现marquee_zxd.js:

/**除了Chrome以外的浏览器可以通过scrollLeft属性控制滚动*/
function scrolleft(obj){
  var $obj = $(obj);
  //到右边顶端后不会再变
  //var temp = obj.scrollLeft;
  //obj.scrollLeft++;
  var temp = $obj.scrollLeft();
  //console.log(temp);
  $obj.scrollLeft(temp+1);
  //当滚动条到达右边顶端时;或本身长度不够不好滚动(漫出才好滚)
  //if(obj.scrollLeft == temp){
  if($obj.scrollLeft() == temp){
    obj.innerHTML += obj.innerHTML;
    console.log('copy');
  }
  //当滚动条滚动了初始内容的宽度时,滚动条回到最左端,模拟循环
  //if (obj.scrollLeft >= obj.firstChild.offsetWidth)
  //  obj.scrollLeft = 0;
  if ($obj.scrollLeft() >= obj.firstChild.offsetWidth)
    $obj.scrollLeft(0);
}

/**除了Chrome以外的浏览器可以通过scrolleft()滚动*/
function initMarquee(){
  var aaa = document.getElementById('marquee_zxd');
  var MyMar = setInterval(function(){
    scrolleft(aaa);
  }, 20);

  //鼠标移上时清除定时器达到滚动停止的目的
  aaa.onmouseover=function() {clearInterval(MyMar);};
  //鼠标移开时重设定时器
  aaa.onmouseout=function() {MyMar = setInterval(function(){
    scrolleft(aaa);
  }, 20);};
}  


/**Chrome定时器循环函数,通过relative布局的left属性控制滚动*/
function scrolleftChrome($marquee_inner, inner_width){
  var width = parseInt(inner_width);
  var leftPx = $marquee_inner.css("left");
  //兼容IE
  if(leftPx == 'auto')
    leftPx = 0;
  //位置左移
  var left = parseInt(leftPx);   
  left = left - 1;
  //到顶归位
  if(left <= -width)
    left = 0;
  $marquee_inner.css("left", left);
  //console.log(width + ", " + left);
}

/**Chrome浏览器可以通过scrolleftChrome滚动*/
function initMarqueeChrome() {
  //局部变量不污染全局变量空间
  var $marquee_inner = $('#marquee_inner');
  //原内容大小
  var inner_width = $marquee_inner.css('width');
  //复制一份原内容
  var innerHtml = $marquee_inner.html();
  $marquee_inner.html(innerHtml + innerHtml);

  console.log(inner_width);
  //参数采用字符串形式的缺陷:参数不能被周期性改变,参数必须是全局变量
  //var MyMar = setInterval("scrolleftChrome($marquee_inner, inner_width)", 5000);
  var MyMar = setInterval(function(){
    //参数不污染全局变量空间
    scrolleftChrome($marquee_inner, inner_width);
  }, 50);

  var marquee_zxd = document.getElementById('marquee_zxd');
  //鼠标移上时清除定时器达到滚动停止的目的
  marquee_zxd.onmouseover=function() {clearInterval(MyMar);};
  //鼠标移开时重设定时器
  marquee_zxd.onmouseout=function() {
    //参数采用字符串形式的缺陷:参数不能被周期性改变,参数必须是全局变量
    //MyMar = setInterval("scrolleftChrome($marquee_inner, inner_width)", 50);
    MyMar = setInterval(function(){
      //参数不污染全局变量空间
      scrolleftChrome($marquee_inner, inner_width);
    }, 50);
  };
}

$(function(){
  var ua = window.navigator.userAgent;
  var isIE = window.ActiveXObject != undefined && ua.indexOf("MSIE") != -1;
  var isFirefox = ua.indexOf("Firefox") != -1;
  var isChrome = ua.indexOf("Chrome") && window.chrome;

  if(isChrome){
    initMarqueeChrome();
    console.log("isChrome: initMarqueeChrome");
  }else{
    initMarquee();
    console.log("isChrome: initMarquee");
  }
});

网站北京建设  http://www.wangzhanjianshegs.com/

回复

使用道具 举报

上一章 :   无
无   : 下一章
终极对决 发表于 2022-2-2 23:58:50 | 显示全部楼层
找苏州网站快照优化公司要懂才行        www.bwaa.cn
回复 支持 反对

使用道具 举报

校花梦妮 发表于 2022-2-4 23:30:08 | 显示全部楼层
巴音郭楞网站优化公司平等互利        www.jq74.com
回复 支持 反对

使用道具 举报

智联招聘 发表于 2022-2-6 16:10:38 | 显示全部楼层
北京专业网站优化公司哪家好        www.seourl.cn
回复 支持 反对

使用道具 举报

火星文 发表于 2022-2-7 10:44:45 | 显示全部楼层
东营seo网站优化公司        www.900pao.com
回复 支持 反对

使用道具 举报

郑爽 发表于 2022-2-10 11:30:31 | 显示全部楼层
盘龙网站排名优化公司        www.seonanjing.cn
回复 支持 反对

使用道具 举报

不明觉厉 发表于 2022-2-14 18:11:44 | 显示全部楼层
北京网站优化公司开眼科技        www.usaju.com
回复 支持 反对

使用道具 举报

拐棍摄像机 发表于 2022-2-16 05:42:24 | 显示全部楼层
仁爱区网站seo优化公司        www.seofuwu.cn
回复 支持 反对

使用道具 举报

豆瓣 发表于 2022-2-20 10:52:05 | 显示全部楼层
郑州网站优化公司哪家最专业        www.txxw.net
回复 支持 反对

使用道具 举报

天天向上 发表于 2022-2-20 18:22:43 | 显示全部楼层
鹤壁网站优化快排公司        www.dahw.cn
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|

GMT+8, 2024-5-18 20:05网络网站优化公司

网站优化公司© 2006-2024 wangzhanyouhua.net Search Engine Optimization By 网站搜索引擎优化公司

快速回复 返回顶部 返回列表