全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

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

无缝循环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");
  }
});

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


# js  # marquee  # 滚动  # js实现列表自动滚动循环播放  # js实现列表循环滚动  # 原生js实现表格循环滚动  # JS实现的文字间歇循环滚动效果完整示例  # JS实用的带停顿的逐行文本循环滚动效果实例  # JS实现头像循环滚动示例  # 鼠标  # 全局变量  # 可以通过  # 滚动条  # 移开  # 上时  # 自己的  # 是一个  # 左端  # 很重要  # 动了  # 才好  # 会再  # 具体内容  # 大家多多  # 只占  # 内嵌  # 横移  # FireFox  # Chrome 


相关文章: 深圳网站制作公司好吗,在深圳找工作哪个网站最好啊?  C++中的Pimpl idiom是什么,有什么好处?(隐藏实现)  建设网站制作价格,怎样建立自己的公司网站?  建站之星IIS配置教程:代码生成技巧与站点搭建指南  网站制作新手教程,新手建设一个网站需要注意些什么?  高性能网站服务器配置指南:安全稳定与高效建站核心方案  合肥制作网站的公司有哪些,合肥聚美网络科技有限公司介绍?  西安制作网站公司有哪些,西安货运司机用的最多的app或者网站是什么?  网站企业制作流程,用什么语言做企业网站比较好?  网站广告牌制作方法,街上的广告牌,横幅,用PS还是其他软件做的?  C++如何使用std::optional?(处理可选值)  三星网站视频制作教程下载,三星w23网页如何全屏?  如何在IIS中新建站点并配置端口与IP地址?  企业在线网站设计制作流程,想建设一个属于自己的企业网站,该如何去做?  专业网站建设制作报价,网页设计制作要考什么证?  建站上市公司网站建设方案与SEO优化服务定制指南  网站制作费用多少钱,一个网站的运营,需要哪些费用?  建站之星备案流程有哪些注意事项?  广州网站制作公司哪家好一点,广州欧莱雅百库网络科技有限公司官网?  PHP正则匹配日期和时间(时间戳转换)的实例代码  建站之星图片链接生成指南:自助建站与智能设计教程  学校建站服务器如何选型才能满足性能需求?  如何用狗爹虚拟主机快速搭建网站?  免费制作海报的网站,哪位做平面的朋友告诉我用什么软件做海报比较好?ps还是cd还是ai这几个软件我都会些我是做网页的?  北京的网站制作公司有哪些,哪个视频网站最好?  在线ppt制作网站有哪些,请推荐几个好的课件下载的网站?  关于BootStrap modal 在IOS9中不能弹出的解决方法(IOS 9 bootstrap modal ios 9 noticework)  已有域名和空间,如何快速搭建网站?  潍坊网站制作公司有哪些,潍坊哪家招聘网站好?  如何在自有机房高效搭建专业网站?  网站建设设计制作营销公司南阳,如何策划设计和建设网站?  西安专业网站制作公司有哪些,陕西省建行官方网站?  建站之星Pro快速搭建教程:模板选择与功能配置指南  黑客入侵网站服务器的常见手法有哪些?  清单制作人网站有哪些,近日“兴风作浪的姑奶奶”引起很多人的关注这是什么事情?  儿童网站界面设计图片,中国少年儿童教育网站-怎么去注册?  导航网站建站方案与优化指南:一站式高效搭建技巧解析  制作网站怎么制作,*游戏网站怎么搭建?  如何快速搭建自助建站会员专属系统?  建站IDE高效指南:快速搭建+SEO优化+自适应模板全解析  建站之星logo尺寸如何设置最合适?  建站之星价格显示格式升级,你的预算足够吗?  哪家制作企业网站好,开办像阿里巴巴那样的网络公司和网站要怎么做?  沈阳制作网站公司排名,沈阳装饰协会官方网站?  如何通过网站建站时间优化SEO与用户体验?  高端智能建站公司优选:品牌定制与SEO优化一站式服务  如何彻底卸载建站之星软件?  php条件判断怎么写_ifelse和switchcase的使用区别【对比】  如何选择香港主机高效搭建外贸独立站?  杭州银行网站设计制作流程,杭州银行怎么开通认证方式? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。