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 相关文章推荐
最新的10款jQuery内容滑块插件分享
Sep 18 Javascript
JS 获取鼠标左右键的键值方法
Oct 11 Javascript
JavaScript中数据结构与算法(五):经典KMP算法
Jun 19 Javascript
jquery插件uploadify实现带进度条的文件批量上传
Dec 13 Javascript
Vue.js中用webpack合并打包多个组件并实现按需加载
Feb 17 Javascript
AngularJS中下拉框的高级用法示例
Oct 11 Javascript
vue2手机APP项目添加开屏广告或者闪屏广告
Nov 28 Javascript
jQuery实现获取动态添加的标签对象示例
Jun 28 jQuery
Vue2.0使用嵌套路由实现页面内容切换/公用一级菜单控制页面内容切换(推荐)
May 08 Javascript
JavaScript封闭函数及常用内置对象示例
May 13 Javascript
JavaScript代码实现微博批量取消关注功能
Feb 05 Javascript
Vue3.0中Ref与Reactive的区别示例详析
Jul 07 Vue.js
浅析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.ini中添加extension=php_mysqli.dll指令的说明
2007/06/14 PHP
php adodb连接不同数据库
2009/03/19 PHP
php 购物车完整实现代码
2014/06/05 PHP
PHP获得数组交集与差集的方法
2015/06/10 PHP
PHP语法小结之基础和变量
2015/11/22 PHP
php使用redis的有序集合zset实现延迟队列应用示例
2020/02/20 PHP
再谈querySelector和querySelectorAll的区别与联系
2012/04/20 Javascript
原生js实现跨浏览器获取鼠标按键的值
2013/04/08 Javascript
Jquery动态改变图片IMG的src地址示例
2013/06/25 Javascript
js获取多个tagname的节点数组
2013/09/22 Javascript
解析URI与URL之间的区别与联系
2013/11/22 Javascript
jQuery简单几行代码实现tab切换
2015/03/10 Javascript
jQuery同步提交示例代码
2015/12/12 Javascript
javascript cookie的简单应用
2016/02/24 Javascript
JavaScript-html标题滚动效果的简单实现
2016/09/08 Javascript
JavaScript 中 apply 、call 的详解
2017/03/21 Javascript
yarn的使用与升级Node.js的方法详解
2017/06/04 Javascript
使用原生js封装的ajax实例(兼容jsonp)
2017/10/12 Javascript
elementUI中Table表格问题的解决方法
2018/12/04 Javascript
vue不操作dom实现图片轮播的示例代码
2019/12/18 Javascript
[01:09:50]VP vs Pain 2018国际邀请赛小组赛BO2 第二场
2018/08/20 DOTA
Python 中urls.py:URL dispatcher(路由配置文件)详解
2017/03/24 Python
python读取文本中的坐标方法
2018/10/14 Python
Flask框架钩子函数功能与用法分析
2019/08/02 Python
在keras 中获取张量 tensor 的维度大小实例
2020/06/10 Python
python如何控制进程或者线程的个数
2020/10/16 Python
Python join()函数原理及使用方法
2020/11/14 Python
解决Pyinstaller打包软件失败的一个坑
2021/03/04 Python
AE美国鹰美国官方网站:American Eagle Outfitters
2016/08/22 全球购物
【魔兽争霸3重制版】原版画面与淬火MOD画面对比
2021/03/26 魔兽争霸
金融专业毕业生推荐信
2013/11/26 职场文书
促销活动策划方案
2014/01/12 职场文书
期末自我鉴定
2014/02/02 职场文书
致跳高运动员加油稿
2014/02/12 职场文书
禁毒心得体会范文
2016/01/15 职场文书
tensorboard 可视化之localhost:6006不显示的解决方案
2021/05/22 Python