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 相关文章推荐
js禁止页面复制功能禁用页面右键菜单示例代码
Aug 29 Javascript
JS中如何设置readOnly的值
Dec 25 Javascript
javascript中Array数组的迭代方法实例分析
Feb 04 Javascript
javascript实现多级联动下拉菜单的方法
Feb 06 Javascript
js实现的牛顿摆效果
Mar 31 Javascript
Javascript函数的参数
Jul 16 Javascript
Vue ElementUI之Form表单验证遇到的问题
Aug 21 Javascript
BootStrap Table实现server分页序号连续显示功能(当前页从上一页的结束序号开始)
Sep 12 Javascript
Vue.JS项目中5个经典Vuex插件
Nov 28 Javascript
webpack源码之loader机制详解
Apr 06 Javascript
快速解决vue-cli在ie9+中无效的问题
Sep 04 Javascript
JavaScript实现字符串与HTML格式相互转换
Mar 17 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 is_file 判断给定文件名是否为一个正常的文件
2010/05/10 PHP
php上传文件并存储到mysql数据库的方法
2015/03/16 PHP
jquery $.getJSON()跨域请求
2011/12/21 Javascript
js判断设备是否为PC并调整图片大小
2014/02/12 Javascript
jquery选择器大全 全面详解jquery选择器
2014/03/06 Javascript
JavaScript父子窗体间的调用方法
2015/03/31 Javascript
jQuery实现带有洗牌效果的动画分页实例
2015/08/31 Javascript
jQuery formValidator表单验证
2016/01/07 Javascript
jQuery延迟执行的实现方法
2016/12/21 Javascript
javascript cookie的基本操作(添加和删除)
2017/07/24 Javascript
JS基于for语句编写的九九乘法表示例
2018/01/04 Javascript
CSS3 动画卡顿性能优化的完美解决方案
2018/09/20 Javascript
node.js中ws模块创建服务端和客户端,网页WebSocket客户端
2019/03/06 Javascript
简述ES6新增关键字let与var的区别
2019/08/23 Javascript
vue 中 elment-ui table合并上下两行相同数据单元格
2019/12/26 Javascript
基于vue-cli3+typescript的tsx开发模板搭建过程分享
2020/02/28 Javascript
javascript+Canvas实现画板功能
2020/06/23 Javascript
浅谈JavaScript窗体Window.ShowModalDialog使用
2020/07/22 Javascript
Python实现将16进制字符串转化为ascii字符的方法分析
2017/07/21 Python
深入探究Django中的Session与Cookie
2017/07/30 Python
Python的numpy库中将矩阵转换为列表等函数的方法
2018/04/04 Python
python 定义n个变量方法 (变量声明自动化)
2018/11/10 Python
python实现根据给定坐标点生成多边形mask的例子
2020/02/18 Python
使用scrapy ImagesPipeline爬取图片资源的示例代码
2020/09/28 Python
Nuts.com:优质散装,批发坚果、干果和巧克力等
2017/03/21 全球购物
SmartBuyGlasses比利时:购买品牌太阳镜和眼镜
2019/08/09 全球购物
预备党员党课思想汇报
2014/01/13 职场文书
手术室护士长竞聘书
2014/03/31 职场文书
法人授权委托书范本
2014/04/04 职场文书
2014年政风行风自查自纠报告
2014/10/21 职场文书
2015年乡镇工作总结范文
2015/04/22 职场文书
公司晚宴祝酒词
2015/08/11 职场文书
交通事故协议书范本
2016/03/19 职场文书
深入理解java.lang.String类的不可变性
2021/06/27 Java/Android
浅谈Redis中的RDB快照
2021/06/29 Redis
基于PyQT5制作一个桌面摸鱼工具
2022/02/15 Python