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 中关于CSS操作部分使用说明
Jun 10 Javascript
Jquery实现仿新浪微博获取文本框能输入的字数代码
Feb 22 Javascript
浅析JQuery UI Dialog的样式设置问题
Dec 18 Javascript
JavaScript实现单击下拉框选择直接跳转页面的方法
Jul 02 Javascript
逐一介绍Jquery data()、Jquery stop()、jquery delay()函数(详)
Nov 04 Javascript
深入浅析同源策略和跨域访问
Nov 26 Javascript
npm配置国内镜像资源+淘宝镜像的方法
Sep 07 Javascript
Vue 3.x+axios跨域方案的踩坑指南
Jul 04 Javascript
javascript实现评分功能
Jun 24 Javascript
jdk1.8+vue elementui实现多级菜单功能
Sep 24 Javascript
小程序实现点击tab切换左右滑动
Nov 16 Javascript
vue特效之翻牌动画
Apr 20 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代码技巧的小结
2013/06/02 PHP
CI框架整合widget(页面格局)的方法
2016/05/17 PHP
php 自定义函数实现将数据 以excel 表格形式导出示例
2019/11/13 PHP
利用javascript中的call实现继承
2007/01/22 Javascript
$.ajax json数据传递方法
2008/11/19 Javascript
html 锁定页面(js遮罩层弹出div效果)
2009/10/27 Javascript
JavaScript 滚轮事件使用说明
2010/03/07 Javascript
Javascript实现带关闭按钮的网页漂浮广告代码
2014/01/12 Javascript
详解webpack打包vue时提取css
2017/05/26 Javascript
three.js实现3D影院的原理的代码分析
2017/12/18 Javascript
在vue中使用SockJS实现webSocket通信的过程
2018/08/29 Javascript
手动下载Chrome并解决puppeteer无法使用问题
2018/11/12 Javascript
Vue.js递归组件实现组织架构树和选人功能
2019/07/04 Javascript
微信小程序实现收货地址左滑删除
2020/11/18 Javascript
[03:57]DOTA2英雄梦之声_第03期_幻影刺客
2014/06/21 DOTA
Python3中使用urllib的方法详解(header,代理,超时,认证,异常处理)
2016/09/21 Python
解决uWSGI的编码问题详解
2017/03/24 Python
python编程通过蒙特卡洛法计算定积分详解
2017/12/13 Python
python实现简单神经网络算法
2018/03/10 Python
PyCharm 2020.1版安装破解注册码永久激活(激活到2089年)
2020/09/24 Python
如何用python批量调整视频声音
2020/12/22 Python
使用phonegap检测网络状态的方法
2017/03/30 HTML / CSS
Zavvi美国:英国娱乐之家
2017/03/19 全球购物
周仰杰(JIMMY CHOO)英国官方网站:闻名世界的鞋子品牌
2018/10/28 全球购物
自我评价范文点评
2013/12/04 职场文书
《燕子》教学反思
2014/02/18 职场文书
先进工作者申报材料
2014/12/23 职场文书
个人学习总结范文
2015/02/15 职场文书
少年犯观后感
2015/06/11 职场文书
运动会新闻报道稿
2015/07/22 职场文书
医院病假条怎么写
2015/08/17 职场文书
2019旅游导游工作总结
2019/06/27 职场文书
小型企业的绩效考核制度模板
2019/11/21 职场文书
php7中停止php-fpm服务的方法详解
2021/05/09 PHP
Python一行代码实现自动发邮件功能
2021/05/30 Python
使用pipenv管理python虚拟环境的全过程
2021/09/25 Python