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 相关文章推荐
HTML5+jQuery实现搜索智能匹配功能
Mar 24 jQuery
jQuery EasyUI之验证框validatebox实例详解
Apr 10 jQuery
jquery实现简单实用的轮播器
May 23 jQuery
jQuery实现 RadioButton做必选校验功能
Jun 15 jQuery
基于jQuery的表单填充实例
Aug 22 jQuery
jquery在vue脚手架中的使用方式示例
Aug 29 jQuery
jQuery动态添加.active 实现导航效果代码思路详解
Aug 29 jQuery
基于jQuery解决ios10以上版本缩放问题
Nov 03 jQuery
jquery.picsign图片标注组件实例详解
Feb 02 jQuery
jQuery实现列表的增加和删除功能
Jun 14 jQuery
jQuery实现菜单的显示和隐藏功能示例
Jul 24 jQuery
jQuery轮播图实例详解
Aug 15 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
简单介绍下 PHP5 中引入的 MYSQLI的用途
2007/03/19 PHP
20个2014年最优秀的PHP框架回顾
2014/10/22 PHP
PHP面向对象程序设计实例分析
2016/01/26 PHP
Open and Print a Word Document
2007/06/15 Javascript
MooBox 基于Mootools的对话框插件
2012/01/20 Javascript
js特效,页面下雪的小例子
2013/06/17 Javascript
JS小功能(列表页面隔行变色)简单实现
2013/11/28 Javascript
js计算任意值之间随机数的方法
2015/01/16 Javascript
jquery+Jscex打造游戏力度条
2020/09/12 Javascript
详解Vue 实例中的生命周期钩子
2017/03/21 Javascript
JS实现的缓冲运动效果示例
2018/04/30 Javascript
vue select选择框数据变化监听方法
2018/08/24 Javascript
浅谈v-for 和 v-if 并用时筛选条件方法
2019/11/07 Javascript
Node.js API详解之 tty功能与用法实例分析
2020/04/27 Javascript
详解React 条件渲染
2020/07/08 Javascript
[36:29]2018DOTA2亚洲邀请赛 4.1 小组赛 A组加赛 LGD vs TNC
2018/04/02 DOTA
[53:10]Secret vs Pain 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/20 DOTA
[35:29]Secret vs VG 2018国际邀请赛淘汰赛BO3 第三场 8.23
2018/08/24 DOTA
python中使用mysql数据库详细介绍
2015/03/27 Python
详解python中requirements.txt的一切
2017/03/03 Python
Python中int()函数的用法浅析
2017/10/17 Python
python爬虫之xpath的基本使用详解
2018/04/18 Python
mac下给python3安装requests库和scrapy库的实例
2018/06/13 Python
深入浅析Python传值与传址
2018/07/10 Python
PyCharm 2020.2下配置Anaconda环境的方法步骤
2020/09/23 Python
美国花布包包品牌:Vera Bradley
2017/08/11 全球购物
最新的小工具和卓越的产品设计:Oh That Tech!
2019/08/07 全球购物
俄罗斯宠物用品网上商店:ZooMag
2019/12/12 全球购物
Calphalon美国官网:美国顶级锅具品牌
2020/02/05 全球购物
公务员职业生涯规划书范文  
2014/01/19 职场文书
工作过失检讨书
2014/02/23 职场文书
领导班子个人对照检查材料(群众路线)
2014/09/26 职场文书
2016年小学生清明节广播稿
2015/12/17 职场文书
nginx 防盗链防爬虫配置详解
2021/03/31 Servers
MySQL时间设置注意事项的深入总结
2021/05/06 MySQL
R9700摩机记
2022/04/05 无线电