jQuery实现的无缝广告图片左右滚动功能详解


Posted in Javascript onDecember 24, 2016

本文实例讲述了jQuery实现的无缝广告图片左右滚动功能。分享给大家供大家参考,具体如下:

先是写了一个此功能的jQuery插件,但是一时写不出如何使用鼠标进行滚动方向的切换,于是又写了另一个可以实现切换的版本...

原理:

1.把滚动的内容复制2份放到原内容左右,这样无论向左右滚动都不会出现断掉的情况

2.改变内容样式的left值实现滚动效果,向左或向右滚动一个内容的长度后,还原并继续滚动,这样看起来就像无缝一直滚动的样子了(视觉上的效果,^_^)

3.鼠标放上去则clearInterval,移开后继续setInterval

4.移动效果写成一个方法,切换方向时调用一次即可

<style>
* { margin:0; padding:0;}
ul { list-style:none; margin:0; padding:0;}
img { border:none;}
.bar {
  margin:0 auto;
  width:800px; height:48px; overflow:hidden;
  line-height:48px; border:2px solid #EEE;}
.bar a.a_left,
.bar a.a_right{
  float:left;
  width:11px; height:48px;
  background:url(a_left.png) no-repeat left center;}
.bar a.a_right { float:right; background-image:url(a_right.png);}
.bar_wrap { float:left; position:relative; width:776px; height:48px; white-space:nowrap; overflow:hidden;}
.bar_inner { position:relative; height:48px; line-height:48px; left:0; width:2880px; white-space:nowrap;}
.bar_inner ul { height:48px; overflow:hidden; float:left; width:960px;}
.bar_inner ul li{ float:left;}
.bar_inner ul li a{ padding:0 16px; display:block; height:48px; line-height:48px;}
</style>
<body>
<div class="bar">
  <a href="#" class="a_left"></a>
  <div class="bar_wrap">
  <div class="bar_inner">
    <ul>
      <li><a href="#" title="" ><img src="pic.png" alt="" /></a></li>
      <li><a href="#" title="" ><img src="pic.png" alt="" /></a></li>
      <li><a href="#" title="" ><img src="pic.png" alt="" /></a></li>
      <li><a href="#" title="" ><img src="pic.png" alt="" /></a></li>
      <li><a href="#" title="" ><img src="pic.png" alt="" /></a></li>
      <li><a href="#" title="" ><img src="pic.png" alt="" /></a></li>
      <li><a href="#" title="" ><img src="pic.png" alt="" /></a></li>
      <li><a href="#" title="" ><img src="pic.png" alt="" /></a></li>
      <li><a href="#" title="" ><img src="pic.png" alt="" /></a></li>
      <li><a href="#" title="" ><img src="pic.png" alt="" /></a></li>
    </ul>  </div>
  </div>
  <a href="#" class="a_right"></a>
</div>
var scrollBar = function(){
  this.step = 14;
  this.speed = 100;
  this.inner = $(".bar_inner");
  this.wrap = $(".bar_wrap");
  this.ini = 0;
  this.pos = "l";
  this.s ;
  }
scrollBar.prototype = {
  check : function(){
    return this.inner.width() < this.wrap.width() ? false : true;
    } ,
  init : function(){
    if( this.check() ){
      this.inner
        .html( this.inner.html() + this.inner.html() + this.inner.html() )
        .css("left",- this.inner.width()/3 + "px");
      }
    },
  run : function(pos){
    if (! this.check()){ return;}
    if( this.ini == 0) {this.init();}
    this.ini = 1;
    this.pos = pos;
    var that = this;
    var f = function(){
      if(that.pos == "l"){
        var l = parseInt( that.inner.css("left") ) - that.step;
        that.inner.css("left",l + "px");
        //console.log(l);
        if ( parseInt(that.inner.css("left")) <= -( that.inner.width()/ 3 * 2) ){
          that.inner.css("left",- that.inner.width() /3 + "px");
          }
        }
      else {
        var l = parseInt( that.inner.css("left") ) + that.step;
        that.inner.css("left",l + "px");
        //console.log( l );
        if( parseInt(that.inner.css("left")) >= 0 ){
          that.inner.css("left", - that.inner.width()/3 + "px");
          }
        }
      }
    if(this.s) {clearInterval(that.s);};
    this.s = setInterval( f ,that.speed);
    that.inner.hover(
      function(){ clearInterval(that.s);},
      function(){clearInterval(that.s); that.s = setInterval( f ,that.speed); }
      )
    }
  }
var s = new scrollBar();
s.run("r");
$(".a_left").mouseover(function(){
  clearInterval( s.s);
  s.run("l");
  })
$(".a_right").mouseover(function(){
     clearInterval( s.s);
  s.run("r");
})

希望本文所述对大家jQuery程序设计有所帮助。

Javascript 相关文章推荐
复制Input内容的js代码_支持所有浏览器,修正了Firefox3.5以上的问题
Jun 21 Javascript
JSON无限折叠菜单编写实例
Dec 16 Javascript
jquery实现类似淘宝星星评分功能有截图
Sep 15 Javascript
jQuery+PHP星级评分实现方法
Oct 02 Javascript
onclick和onblur冲突问题的快速解决方法
Apr 28 Javascript
ionic3+Angular4实现接口请求及本地json文件读取示例
Oct 11 Javascript
Angular4学习教程之HTML属性绑定的方法
Jan 04 Javascript
bootstrap模态框弹出和隐藏,动态改变中间内容的实例
Aug 10 Javascript
vue项目开发中setTimeout等定时器的管理问题
Sep 13 Javascript
JS实现获取自定义属性data值的方法示例
Dec 19 Javascript
Vue.js实现tab切换效果
Jul 24 Javascript
vue 中 elment-ui table合并上下两行相同数据单元格
Dec 26 Javascript
浅析BootStrap中Modal(模态框)使用心得
Dec 24 #Javascript
纯JS实现表单验证实例
Dec 24 #Javascript
jQuery实现加入收藏夹功能(主流浏览器兼职)
Dec 24 #Javascript
JS绘制微信小程序画布时钟
Dec 24 #Javascript
jQuery弹出窗口打开链接的实现代码
Dec 24 #Javascript
DropDownList控件绑定数据源的三种方法
Dec 24 #Javascript
Bootstrap源码学习笔记之bootstrap进度条
Dec 24 #Javascript
You might like
PHP 开发环境配置(Zend Studio)
2010/04/28 PHP
php实现保存submit内容之后禁止刷新
2014/03/19 PHP
CI框架Session.php源码分析
2014/11/03 PHP
php实现Mongodb自定义方式生成自增ID的方法
2015/03/23 PHP
php断点续传之文件分割合并详解
2016/12/13 PHP
PHP实现时间比较和时间差计算的方法示例
2017/07/24 PHP
windows 2008r2+php5.6.28环境搭建详细过程
2019/06/18 PHP
Laravel5.1 框架数据库操作DB运行原生SQL的方法分析
2020/01/07 PHP
通过PHP的Wrapper无缝迁移原有项目到新服务的实现方法
2020/04/02 PHP
PHP 实现缩略图
2021/03/09 PHP
js window.onload 加载多个函数的方法
2009/11/02 Javascript
基于jQuery的左右滚动实现代码
2010/12/03 Javascript
jQuery使用attr()方法同时设置多个属性值用法实例
2015/03/26 Javascript
javascript中eval解析JSON字符串
2016/02/27 Javascript
移动端日期插件Mobiscroll.js使用详解
2016/12/19 Javascript
select标签设置默认选中的选项方法
2018/03/02 Javascript
大转盘抽奖小程序版 转盘抽奖网页版
2020/04/16 Javascript
vue实现树形结构样式和功能的实例代码
2019/10/15 Javascript
Vuex,iView UI面包屑导航使用扩展详解
2019/11/04 Javascript
[01:22:29]真视界:2019年国际邀请赛总决赛
2020/01/29 DOTA
python基础教程之常用运算符
2014/08/29 Python
Python多进程并发(multiprocessing)用法实例详解
2015/06/02 Python
python读取oracle函数返回值
2016/07/18 Python
简单实现python画圆功能
2018/01/25 Python
对Python中的@classmethod用法详解
2018/04/21 Python
Python实现简易过滤删除数字的方法小结
2019/01/09 Python
详解解决Python memory error的问题(四种解决方案)
2019/08/08 Python
屏蔽Django admin界面添加按钮的操作
2020/03/11 Python
Numpy 多维数据数组的实现
2020/06/18 Python
Python scrapy爬取小说代码案例详解
2020/07/09 Python
英国门把手公司:Door Handle Company
2019/05/12 全球购物
护理自荐信
2013/10/22 职场文书
最经典的大学生职业生涯规划范文
2014/03/05 职场文书
查摆问题整改措施范文
2014/10/11 职场文书
贫困证明书范文
2015/06/16 职场文书
阿里面试Nacos配置中心交互模型是push还是pull原理解析
2022/07/23 Java/Android