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 EasyUI tree增加搜索功能的实现方法
Apr 27 jQuery
Jquery+Ajax+xml实现中国地区选择三级联动菜单效果(推荐)
Jun 09 jQuery
jQuery正则验证注册页面经典实例
Jun 10 jQuery
基于jQuery Easyui实现登陆框界面
Jul 10 jQuery
jQuery读取本地的json文件(实例讲解)
Oct 31 jQuery
js和jQuery以及easyui实现对下拉框的指定赋值方法
Jan 23 jQuery
jQuery 点击获取验证码按钮及倒计时功能
Sep 20 jQuery
jquery的$().each和$.each的区别
Jan 18 jQuery
Jquery ajax书写方法代码实例解析
Jun 12 jQuery
jQuery实现动态加载瀑布流
Sep 01 jQuery
jQuery实现电梯导航模块
Dec 22 jQuery
jQuery实现增删改查
Dec 22 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获取表单textarea数据中的换行问题
2010/09/10 PHP
php中error与exception的区别及应用
2014/07/28 PHP
基于swoole实现多人聊天室
2018/06/14 PHP
PHP高并发和大流量解决方案整理
2021/03/09 PHP
Prototype使用指南之form.js
2007/01/10 Javascript
在textarea文本域中显示HTML代码的方法
2007/03/06 Javascript
解析JSON对象与字符串之间的相互转换
2013/12/18 Javascript
了不起的node.js读书笔记之mongodb数据库交互
2014/12/22 Javascript
jquery控制背景音乐开关与自动播放提示音的方法
2015/02/06 Javascript
javascript实现网页字符定位的方法
2015/07/14 Javascript
js插件dropload上拉下滑加载数据实例解析
2016/07/27 Javascript
简单实现js浮动框
2016/12/13 Javascript
详谈commonjs模块与es6模块的区别
2017/10/18 Javascript
vue实现打印功能的两种方法
2018/09/07 Javascript
原生JS实现随机点名项目的实例代码
2019/04/30 Javascript
小程序和web画三角形实现解析
2019/09/02 Javascript
解决vuex数据异步造成初始化的时候没值报错问题
2019/11/13 Javascript
纯JS开发baguetteBox.js响应式画廊插件
2020/06/28 Javascript
编写Python CGI脚本的教程
2015/06/29 Python
python实现NB-IoT模块远程控制
2018/06/20 Python
python实现反转部分单向链表
2018/09/27 Python
python实现异常信息堆栈输出到日志文件
2019/12/26 Python
python GUI库图形界面开发之PyQt5布局控件QVBoxLayout详细使用方法与实例
2020/03/06 Python
pycharm安装及如何导入numpy
2020/04/03 Python
CSS3+HTML5+JS 实现一个块的收缩与展开动画效果
2020/11/17 HTML / CSS
住房公积金接收函
2014/01/09 职场文书
光信息科学与技术专业职业生涯规划
2014/03/13 职场文书
艺术设计专业个人求职信
2014/04/10 职场文书
2014红色之旅心得体会
2014/10/07 职场文书
廉政承诺书
2015/01/19 职场文书
检讨书怎么写
2015/01/23 职场文书
幽灵公主观后感
2015/06/09 职场文书
2016年“世界环境日”校园广播稿
2015/12/18 职场文书
2016年幼儿园教师政治学习心得体会
2016/01/23 职场文书
Python面向对象编程之类的概念
2021/11/01 Python
Android开发 使用文件储存的方式保存QQ密码
2022/04/24 Java/Android