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 相关文章推荐
msn上的tab功能Firefox对childNodes处理的一个BUG
Jan 21 Javascript
如何使用Javascript获取距今n天前的日期
Jul 08 Javascript
js处理自己不能定义二维数组的方法详解
Mar 03 Javascript
简介JavaScript中的getUTCFullYear()方法的使用
Jun 10 Javascript
js带前后翻页的图片切换效果代码分享
Sep 08 Javascript
angularjs学习笔记之双向数据绑定
Sep 26 Javascript
Bootstrap复选框和单选按钮美化插件(推荐)
Nov 23 Javascript
如何使用bootstrap框架 bootstrap入门必看!
Apr 13 Javascript
Vue中keep-alive组件作用详解
Feb 04 Javascript
js校验开始时间和结束时间
May 26 Javascript
如何手写一个简易的 Vuex
Oct 10 Javascript
js实现详情页放大镜效果
Oct 28 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中批量替换文件名的实现代码
2011/07/20 PHP
第二章 PHP入门基础之php代码写法
2011/12/30 PHP
php后退一页表单内容保存实现方法
2012/06/17 PHP
PHP打开和关闭文件操作函数总结
2014/11/18 PHP
基于thinkPHP3.2实现微信接入及查询token值的方法
2017/04/18 PHP
PHP使用星号替代用户名手机和邮箱的实现代码
2018/02/07 PHP
php实现websocket实时消息推送
2018/03/30 PHP
ThinkPHP5.1验证码功能实现的示例代码
2020/06/08 PHP
JQuery 网站换肤功能实现代码
2009/11/02 Javascript
javascript客户端解决方案 缓存提供程序
2010/07/14 Javascript
js实时监听文本框状态的方法
2011/04/26 Javascript
前台js改变Session的值(用ajax实现)
2012/12/28 Javascript
jQuery表格插件datatables用法详解
2020/11/23 Javascript
最常见的左侧分类菜单栏jQuery实现代码
2016/11/28 Javascript
基于Vue实现拖拽效果
2018/04/27 Javascript
Vue使用vux-ui自定义表单验证遇到的问题及解决方法
2018/05/10 Javascript
JQuery通过后台获取数据遍历到前台的方法
2018/08/13 jQuery
javascript异常处理实现原理详解
2020/02/17 Javascript
three.js 利用uv和ThreeBSP制作一个快递柜功能
2020/08/18 Javascript
python刷投票的脚本实现代码
2014/11/08 Python
基于Django的python验证码(实例讲解)
2017/10/23 Python
python实现超市扫码仪计费
2018/05/30 Python
python如何求解两数的最大公约数
2018/09/27 Python
对django layer弹窗组件的使用详解
2019/08/31 Python
将matplotlib绘图嵌入pyqt的方法示例
2020/01/08 Python
django 装饰器 检测登录状态操作
2020/07/02 Python
pytorch 把图片数据转化成tensor的操作
2021/03/04 Python
奥地利顶级内衣丝袜品牌英国站:Wolford英国
2016/08/29 全球购物
台湾东南旅游社网站:东南旅游
2019/02/11 全球购物
资深财务管理人员自我评价
2013/09/22 职场文书
管理建议书范文
2014/05/13 职场文书
超市仓管员岗位职责范本
2014/09/18 职场文书
结婚幸福感言
2015/08/01 职场文书
公司车辆管理制度
2015/08/04 职场文书
「月刊Comic Alive」2022年5月号封面公开
2022/03/21 日漫
MySQL选择合适的备份策略和备份工具
2022/06/01 MySQL