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 相关文章推荐
jQuery库与其他JS库冲突的解决办法
Feb 07 Javascript
jquery 事件对象属性小结
Apr 27 Javascript
$.format,jquery.format 使用说明
Jul 13 Javascript
jquery 利用show和hidden实现级联菜单示例代码
Aug 09 Javascript
js文本框输入内容智能提示效果
Dec 02 Javascript
原生js配合cookie制作保存路径的拖拽
Dec 29 Javascript
浅谈angularjs module返回对象的坑(推荐)
Oct 21 Javascript
JS键盘版计算器的制作方法
Dec 03 Javascript
纯JS实现只能输入数字的简单代码
Jun 21 Javascript
浅谈vue的iview列表table render函数设置DOM属性值的方法
Sep 30 Javascript
jQuery实现的自定义轮播图功能详解
Dec 28 jQuery
微信小程序获取当前时间及星期几的实例代码
Sep 20 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中FTP函数ftp_connect、ftp_login与ftp_chmod用法
2014/11/18 PHP
php中解析带中文字符的url函数分享
2015/01/20 PHP
php实现递归抓取网页类实例
2015/04/03 PHP
php解决和避免form表单重复提交的几种方法
2016/08/31 PHP
PHP基于DOM创建xml文档的方法示例
2017/02/08 PHP
jquery 简短右键菜单 多浏览器兼容
2010/01/01 Javascript
javascript窗口宽高,鼠标位置,滚动高度(详细解析)
2013/11/18 Javascript
asp.net+js实现金额格式化
2015/02/27 Javascript
微信小程序 实现拖拽事件监听实例详解
2016/11/16 Javascript
JavaScript数据结构学习之数组、栈与队列
2017/05/02 Javascript
node下使用UglifyJS压缩合并JS文件的方法
2018/03/07 Javascript
动态加载、移除js/css文件的示例代码
2018/03/20 Javascript
vue动态注册组件实例代码详解
2019/05/30 Javascript
在vue项目中使用codemirror插件实现代码编辑器功能
2019/08/27 Javascript
微信小程序 wx:for遍历循环使用实例解析
2019/09/09 Javascript
ES6函数和数组用法实例分析
2020/05/23 Javascript
Vue自定义组件双向绑定实现原理及方法详解
2020/09/03 Javascript
python使用beautifulsoup从爱奇艺网抓取视频播放
2014/01/23 Python
Python中django学习心得
2017/12/06 Python
pandas重新生成索引的方法
2018/11/06 Python
python Qt5实现窗体跟踪鼠标移动
2019/12/13 Python
python GUI库图形界面开发之PyQt5 Qt Designer工具(Qt设计师)详细使用方法及Designer ui文件转py文件方法
2020/02/26 Python
Python基于requests实现模拟上传文件
2020/04/21 Python
opencv python 图片读取与显示图片窗口未响应问题的解决
2020/04/24 Python
使用python批量修改XML文件中图像的depth值
2020/07/22 Python
python 制作网站筛选工具(附源码)
2021/01/21 Python
详解pandas apply 并行处理的几种方法
2021/02/24 Python
CSS3田字格列表的样式编写方法
2018/11/22 HTML / CSS
HTML5的download属性详细介绍和使用实例
2014/04/23 HTML / CSS
英国排名第一的在线宠物用品商店:Monster Pet Supplies
2018/05/20 全球购物
Java基础类库面试题
2013/09/04 面试题
组织生活会发言材料
2014/12/15 职场文书
小学生班干部竞选稿
2015/11/20 职场文书
外出考察学习心得体会
2016/01/18 职场文书
创业计划书之儿童理发店
2019/09/27 职场文书
一定要知道的 25 个 Vue 技巧
2021/11/02 Vue.js