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实现文章图片弹出放大效果
Apr 06 jQuery
jquery.guide.js新版上线操作向导镂空提示jQuery插件(推荐)
May 20 jQuery
使用jQuery实现页面定时弹出广告效果
Aug 24 jQuery
jQuery阻止事件冒泡实例分析
Jul 03 jQuery
jQuery实现table表格checkbox全选的方法分析
Jul 04 jQuery
解决jQuery使用append添加的元素事件无效的问题
Aug 30 jQuery
jQuery实现的别踩白块小游戏完整示例
Jan 07 jQuery
jQuery实现的3D版图片轮播示例【滑动轮播】
Jan 18 jQuery
jQuery对底部导航进行跳转并高亮显示的实例代码
Apr 23 jQuery
jQuery实现提交表单时不提交隐藏div中input的方法
Oct 08 jQuery
jQuery HTML css()方法与css类实例详解
May 20 jQuery
jQuery实现简单弹幕制作
Dec 10 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
全国FM电台频率大全 - 9 上海市
2020/03/11 无线电
几种显示数据的方法的比较
2006/10/09 PHP
php中cookie的作用域
2008/03/27 PHP
Notice: Trying to get property of non-object problem(PHP)解决办法
2012/03/11 PHP
php抽奖小程序的实现代码
2013/06/18 PHP
PHP实现采集中国天气网未来7天天气
2014/10/15 PHP
使用PHP Socket 编程模拟Http post和get请求
2014/11/25 PHP
javascript各浏览器中option元素的表现差异
2011/04/07 Javascript
原生js写的放大镜效果
2012/08/22 Javascript
常用的jquery模板插件——jQuery Boilerplate介绍
2014/09/23 Javascript
jquery判断复选框是否被选中的方法
2015/10/16 Javascript
jQuery easyui的validatebox校验规则扩展及easyui校验框validatebox用法
2016/01/18 Javascript
Knockoutjs 学习系列(二)花式捆绑
2016/06/07 Javascript
使用递归遍历对象获得value值的实现方法
2016/06/14 Javascript
简洁实用的BootStrap jQuery手风琴插件
2016/08/31 Javascript
微信小程序 生命周期详解
2016/10/12 Javascript
JavaScript计算值然后把值嵌入到html中的实现方法
2016/10/29 Javascript
vue.js开发环境安装教程
2017/03/17 Javascript
微信小程序实现tab页面切换功能
2018/07/13 Javascript
jquery实现手风琴案例
2020/05/04 jQuery
Python实现字符串逆序输出功能示例
2017/06/24 Python
Python3的介绍、安装和命令行的认识(推荐)
2018/10/20 Python
Python批处理更改文件名os.rename的方法
2018/10/26 Python
使用sklearn对多分类的每个类别进行指标评价操作
2020/06/11 Python
python中绕过反爬虫的方法总结
2020/11/25 Python
荷兰美妆护肤品海淘网站:Beautinow(中文)
2020/11/22 全球购物
C# Debug和Testing相关面试题
2015/10/25 面试题
关于爱情的广播稿
2014/01/16 职场文书
《月球之谜》教学反思
2014/04/10 职场文书
厨房管理计划书
2014/04/27 职场文书
路政管理求职信
2014/06/18 职场文书
2014最新毕业证代领委托书
2014/09/26 职场文书
基层医务人员三严三实心得体会
2016/01/05 职场文书
幼儿园六一儿童节开幕词
2016/03/04 职场文书
详解MySQL中的主键与事务
2021/05/27 MySQL
【js设计模式】SOLID五大设计原则
2022/03/24 Javascript