jquery+css实现简单的图片轮播效果


Posted in jQuery onAugust 07, 2017

开发过程中需要用到图片轮播的插件,在网上找了几个插件之后还是决定自己码一个,比较简洁的功能,以后说不定还会有用。

ps:

功能比较简单,整个框并不能根据图片的大小自动调节,这里所用的图片是1170*500的,如果需要改成其他大小的图片,自行修改.pic-list下img的宽度。

.pic-list中的宽度为整个横幅的宽度,如果需要轮播的图片数量很多,.pic-list的宽度应大于数量*单张宽度,

html

<div class="banner">
    <!--第一张图片为最后一张,用来做轮播连接使用,所以一开始显示的第一章,应是第二张图片,这里图片的宽度为1170px,所以一开始left为-1170px,同理最后一张图也为第一张图。-->
  <div class="pic-list" style="left: -1170px">
    <img src="/static/img/4.jpg" alt="">
    <img src="/static/img/1.jpg" alt="">
    <img src="/static/img/2.jpg" alt="">
    <img src="/static/img/3.jpg" alt="">
    <img src="/static/img/4.jpg" alt="">
    <img src="/static/img/1.jpg" alt="">
  </div>
  <div id="buttons">
    <!-- 确保span的数量跟img数量一样多,不包括第一张img和最后一张img-->
    <span class='on'></span>
    <span></span>
    <span></span>
    <span></span>
  </div>
  <a href="javascript:;" class="arrow" id="prev"><</a>
  <a href="javascript:;" class="arrow" id="next">></a>
</div>

css

.banner{
  width: 100%;
  height: 500px;
  overflow: hidden;
  position: relative;

}
.banner a{
  text-decoration: none;
}
.banner .pic-list{
  width: 10000px;
  height: 500px;
  position: absolute;
  z-index: 1;
}
.banner .pic-list img{
  width: 1170px;
  float: left;
}
#buttons{
  position: absolute;
  z-index: 2;
  height: 10px;
  bottom: 20px;
  left: 550px;

}
#buttons span{
  cursor: pointer;
  float: left;
  border: 1px solid #fff;
  width: 10px;
  height: 10px;
  border-radius: 50%;
  background: #333;
  margin-right: 5px;
}
#buttons .on{
  background: orange;
}
.arrow{
  cursor: pointer;
  line-height: 36px;
  text-align: center;
  font-size: 20px;
  font-weight: bold;
  width: 40px;
  height: 40px;
  position: absolute;
  z-index: 2;
  top: 200px;
  background: rgba(0,0,0,0.5);
  color: #fff;
  display: none;
}
.banner:hover .arrow{display: block;}

#prev{
  left: 20px;
}
#next{
  right:20px;
}

js

$(document).ready(function(){
  var picNum = 4;//图片数量,根据实际修改
  var picWidth = 1170;//图片的宽度,根据实际修改
  var picMaxWidth = -1 * picNum * picWidth;
  var currentPic = 1;
  var next = $('#next');
  var prev = $('#prev');
  var flag = false;

  prev.on('click',function(){
    if(!flag){
      calPx(1170);
      currentPic--;
      if (currentPic < 1) {
        currentPic = picNum;
      }
      $('#buttons span').eq(currentPic-1).addClass('on').siblings().removeClass('on');
    }
  });

  next.on('click',function(){
    if(!flag){
      calPx(-1170);
      currentPic++;
      if (currentPic > picNum) {
        currentPic = 1;
      }
      $('#buttons span').eq(currentPic-1).addClass('on').siblings().removeClass('on');
    }


  });
  $('.banner').on('mouseover',function(){
    stop();
  }).on('mouseout',function(){
    play();
  })
  function nextClick(){
    next.click();
  }
  function play(){
    setInt = setInterval(nextClick,2000);
  }
  function stop(){
    clearInterval(setInt);
  }

  function calPx(leftPx){
    flag = true;
    var left = parseInt($('.pic-list').css('left'));
    var newLeft = left+leftPx;
    var time = 300;
    var interval = 10;
    var speed = leftPx/(time/interval);

    function go(){
      var left = parseInt($('.pic-list').css('left'));
      if((speed < 0 && left > newLeft) || (speed > 0 && left < newLeft)){
        $('.pic-list').css('left', (left + speed) + 'px');
        setTimeout(go,interval);
      }else{
        flag = false;
        if( newLeft > -1170){
          newLeft = picMaxWidth;
        }else if (newLeft < picMaxWidth ) {
          newLeft = -1170;
        }
        $('.pic-list').css('left',newLeft + 'px');
      }
    }
    go();

  }
  play();

});

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

jQuery 相关文章推荐
jQuery中clone()函数实现表单中增加和减少输入项
May 13 jQuery
jQuery实现菜单栏导航效果
Aug 15 jQuery
jQuery判断网页是否已经滚动到浏览器底部的实现方法
Oct 27 jQuery
原生JS与jQuery编写简单选项卡
Oct 30 jQuery
jQuery EasyUI 折叠面板accordion的使用实例(分享)
Dec 25 jQuery
通过jquery.cookie.js实现记住用户名、密码登录功能
Jun 20 jQuery
jquery+php后台实现省市区联动功能示例
May 23 jQuery
jquery ui 实现 tab标签功能示例【测试可用】
Jul 25 jQuery
jquery实现弹窗(系统提示框)效果
Dec 10 jQuery
jQuery实现的图片点击放大缩小功能案例
Jan 02 jQuery
详解jQuery中的prop()使用方法
Jan 05 jQuery
多种类型jQuery网页验证码插件代码实例
Jan 09 jQuery
使用jQuery实现鼠标点击左右按钮滑动切换
Aug 04 #jQuery
jQuery选取所有复选框被选中的值并用Ajax异步提交数据的实例
Aug 04 #jQuery
原生js jquery ajax请求以及jsonp的调用方法
Aug 04 #jQuery
jQuery实现上传图片前预览效果功能
Aug 03 #jQuery
jQuery初级教程之网站品牌列表效果
Aug 02 #jQuery
基于jquery实现多选下拉列表
Aug 02 #jQuery
jQuery接受后台传递的List的实例详解
Aug 02 #jQuery
You might like
php下统计用户在线时间的一种尝试
2010/08/26 PHP
使用PHP强制下载PDF文件示例
2014/01/17 PHP
php中fsockopen用法实例
2015/01/05 PHP
PHP AjaxForm提交图片上传并显示图片源码
2016/11/29 PHP
PHP下用Swoole实现Actor并发模型的方法
2019/06/12 PHP
JS如何判断移动端访问设备并解析对应CSS
2013/11/27 Javascript
js中function()使用方法
2013/12/24 Javascript
使用jquery prev()方法找到同级的前一个元素
2014/07/11 Javascript
javascript中bind函数的作用实例介绍
2014/09/28 Javascript
JS+CSS实现表格高亮的方法
2015/08/05 Javascript
利用jquery制作滚动到指定位置触发动画
2016/03/26 Javascript
浅谈Jquery中Ajax异步请求中的async参数的作用
2016/06/06 Javascript
原生js实现jquery函数animate()动画效果的简单实例
2016/08/21 Javascript
深入理解Node.js的HTTP模块
2016/10/12 Javascript
详解如何在 vue 项目里正确地引用 jquery 和 jquery-ui的插件
2017/06/01 jQuery
vue自定义指令的创建和使用方法实例分析
2018/12/04 Javascript
微信小程序动态添加和删除组件的现实
2020/02/28 Javascript
跟老齐学Python之有容乃大的list(1)
2014/09/14 Python
python分析作业提交情况
2017/11/22 Python
详解用python实现简单的遗传算法
2018/01/02 Python
TensorFlow平台下Python实现神经网络
2018/03/10 Python
Pycharm 字体大小调整设置的方法实现
2019/09/27 Python
Python 类,property属性(简化属性的操作),@property,property()用法示例
2019/10/12 Python
Pycharm+Python工程,引用子模块的实现
2020/03/09 Python
美国眼镜在线零售商:Dualens
2019/12/07 全球购物
荷兰家电销售网站:Welhof
2020/12/08 全球购物
超市中秋节促销方案
2014/03/21 职场文书
党员活动日总结
2014/05/05 职场文书
债务追讨授权委托书范本
2014/10/16 职场文书
2015入党自传书范文
2015/06/26 职场文书
环保建议书作文500字
2015/09/14 职场文书
2016教师年度考核评语大全
2015/12/01 职场文书
应届毕业生的自我评价
2019/06/21 职场文书
十一月早安语录:把心放轻,人生就是一朵自在的云
2019/11/04 职场文书
Python读取文件夹下的所有文件实例代码
2021/04/02 Python
Linux中Nginx的防盗链和优化的实现代码
2021/06/20 Servers