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的简单&amp;简陋Tabs插件代码
Feb 09 Javascript
js实现的真正的iframe高度自适应(兼容IE,FF,Opera)
Mar 07 Javascript
使用js Math.random()函数生成n到m间的随机数字
Oct 09 Javascript
html+js实现简单的计算器代码(加减乘除)
Jul 12 Javascript
jQuery Ajax请求后台数据并在前台接收
Dec 10 Javascript
JavaScript 详解预编译原理
Jan 22 Javascript
JavaScript函数节流的两种写法
Apr 07 Javascript
关于webpack代码拆分的解析
Jul 20 Javascript
如何抽象一个Vue公共组件
Oct 17 Javascript
基于js文件加载优化(详解)
Jan 03 Javascript
原生javascript AJAX 三级联动的实现代码
May 04 Javascript
微信小程序自定义轮播图
Nov 04 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中文本操作的类
2007/03/17 PHP
PHP下操作Linux消息队列完成进程间通信的方法
2010/07/24 PHP
php用正则判断是否为数字的方法
2016/03/25 PHP
php正则修正符用法实例详解
2016/12/29 PHP
PHP实现的只保留字符串首尾字符功能示例【隐藏部分字符串】
2019/03/11 PHP
php实现网页上一页下一页翻页过程详解
2019/06/28 PHP
Laravel 集成微信用户登录和绑定的实现
2019/12/27 PHP
基于jQuery的消息提示插件 DivAlert之旅(二)
2010/04/01 Javascript
JS性能优化笔记搜索整理
2013/08/21 Javascript
使用DNode实现php和nodejs之间通信的简单实例
2015/07/06 NodeJs
javascript实现的网站访问量统计代码
2015/12/20 Javascript
Ext JS动态加载JavaScript创建窗体的方法
2016/06/23 Javascript
JS制作图形验证码实现代码
2020/10/19 Javascript
JavaScript实现点击按钮复制指定区域文本(推荐)
2016/11/25 Javascript
Angularjs使用指令做表单校验的方法
2017/03/31 Javascript
vue抽出组件并传值实例
2020/07/31 Javascript
Vue+scss白天和夜间模式切换功能的实现方法
2021/01/05 Vue.js
[01:00:06]加油DOTA_EP01_网络版
2014/08/09 DOTA
[03:46]DAC趣味视频-中文考试.mp4
2017/04/02 DOTA
进一步理解Python中的函数编程
2015/04/13 Python
介绍Python的Django框架中的静态资源管理器django-pipeline
2015/04/25 Python
python 爬取微信文章
2016/01/30 Python
遍历python字典几种方法总结(推荐)
2016/09/11 Python
pyinstaller参数介绍以及总结详解
2019/07/12 Python
Python qrcode 生成一个二维码的实例详解
2020/02/12 Python
倩碧美国官网:Clinique美国
2016/07/20 全球购物
奥地利领先的在线药房:SHOP APOTHEKE
2019/10/07 全球购物
DC Shoes荷兰官方网站:美国极限运动品牌
2019/10/22 全球购物
C#如何进行LDAP用户校验
2012/11/21 面试题
静态成员和非静态成员的区别
2012/05/12 面试题
JPA的优势都有哪些
2013/07/04 面试题
微电影大赛策划方案
2014/06/05 职场文书
民主评议党员工作总结
2014/10/20 职场文书
2014年护士个人工作总结
2014/11/11 职场文书
欠款纠纷起诉状
2015/05/19 职场文书
PyQt5爬取12306车票信息程序的实现
2021/05/14 Python