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 相关文章推荐
脚本收藏iframe
Jul 21 Javascript
javascript 触发事件列表 比较不错
Sep 03 Javascript
JS.getTextContent(element,preformatted)使用介绍
Sep 21 Javascript
jquery 通过name快速取值示例
Jan 24 Javascript
javascript实现全局匹配并替换的方法
Apr 27 Javascript
使用JavaScript判断手机浏览器是横屏还是竖屏问题
Aug 02 Javascript
微信小程序 开发之快递查询功能的实现
Jan 09 Javascript
完美实现js选项卡切换效果(一)
Mar 08 Javascript
关于 angularJS的一些用法
Nov 29 Javascript
vue项目中使用tinymce编辑器的步骤详解
Sep 11 Javascript
OpenLayers3实现对地图的基本操作
Sep 28 Javascript
原生js实现滑块区间组件
Jan 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
雄兵连三大错觉:凯莎没了,凉冰阵亡了,华烨觉得自己又行了
2020/04/09 国漫
判断PHP数组是否为空的代码
2011/09/08 PHP
PHP Warning: Module 'modulename' already loaded in问题解决办法
2015/03/16 PHP
PHP准确取得服务器IP地址的方法
2015/06/02 PHP
Laravel5权限管理方法详解
2016/07/26 PHP
Fleaphp常见函数功能与用法示例
2016/11/15 PHP
php写一个函数,实现扫描并打印出自定目录下(含子目录)所有jpg文件名
2017/05/26 PHP
pjblog修改技巧汇总
2007/03/12 Javascript
javascript 当前日期加(天、周、月、年)
2009/08/09 Javascript
一个基于jquery的图片切换效果
2010/07/06 Javascript
jQuery中绑定事件的命名空间详解
2011/04/05 Javascript
NodeJs中的非阻塞方法介绍
2012/06/05 NodeJs
中国地区三级联动下拉菜单效果分析
2012/11/15 Javascript
jquery获取iframe中的dom对象(两种方法)
2013/07/02 Javascript
利用jQuery中的ajax分页实现代码
2016/02/25 Javascript
简单实现jQuery进度条轮播实例代码
2016/06/20 Javascript
JavaScript中定义对象原型的两种使用方法
2016/12/15 Javascript
为什么我们要做三份 Webpack 配置文件
2017/09/18 Javascript
vue打包后显示空白正确处理方法
2017/11/01 Javascript
axios取消请求的实践记录分享
2018/09/26 Javascript
详解easyui 切换主题皮肤
2019/04/04 Javascript
详解Vue中的基本语法和常用指令
2019/07/23 Javascript
纯js+css实现在线时钟
2020/08/18 Javascript
Vue循环中多个input绑定指定v-model实例
2020/08/31 Javascript
比较详细Python正则表达式操作指南(re使用)
2008/09/06 Python
python使用PIL模块获取图片像素点的方法
2019/01/08 Python
ActiveMQ:使用Python访问ActiveMQ的方法
2019/01/30 Python
Python selenium根据class定位页面元素的方法
2019/02/26 Python
python 机器学习之支持向量机非线性回归SVR模型
2019/06/26 Python
Python3 hashlib密码散列算法原理详解
2020/03/30 Python
Python extract及contains方法代码实例
2020/09/11 Python
美国领先的精品家居照明和装饰产品在线零售商:LightsOnline.com
2018/01/23 全球购物
员工三分钟演讲稿
2014/08/19 职场文书
信仰纪录片观后感
2015/06/08 职场文书
告知书格式
2015/07/01 职场文书
彻底解决MySQL使用中文乱码的方法
2022/01/22 MySQL