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返回定位插件详解
May 15 jQuery
jQuery实现radio第一次点击选中第二次点击取消功能
May 15 jQuery
jquery加载单文件vue组件的方法
Jun 20 jQuery
文本溢出插件jquery.dotdotdot.js使用方法详解
Jun 22 jQuery
jquery图片放大镜效果
Jun 23 jQuery
原生JS与jQuery编写简单选项卡
Oct 30 jQuery
利用JQUERY实现多个AJAX请求等待的实例
Dec 14 jQuery
解决jQuery使用append添加的元素事件无效的问题
Aug 30 jQuery
利用jquery和BootStrap实现动态滚动条效果
Dec 03 jQuery
jQuery操作元素的内容和样式完整实例分析
Jan 10 jQuery
jQuery实现鼠标拖拽登录框移动效果
Sep 13 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
微信公众平台实现获取用户OpenID的方法
2015/04/15 PHP
使用PHP生成图片的缩略图的方法
2015/08/18 PHP
简单谈谈PHP中strlen 函数
2016/02/27 PHP
PHP实现生成带背景的图形验证码功能
2016/10/03 PHP
Yii框架表单提交验证功能分析
2017/01/07 PHP
Thinkphp开发--集成极光推送
2017/09/15 PHP
jQuery学习总结之元素的相对定位和选择器(持续更新)
2011/04/26 Javascript
jQuery的deferred对象使用详解
2011/08/20 Javascript
AngularJS 路由详解和简单实例
2016/07/28 Javascript
详解Vue.js动态绑定class
2016/12/20 Javascript
jQuery中ztree 点击文本框弹出下拉框的实例代码
2017/02/05 Javascript
angularjs实现table增加tr的方法
2018/02/27 Javascript
vue项目tween方法实现返回顶部的示例代码
2018/03/02 Javascript
微信公众平台 客服接口发消息的实现代码(Java接口开发)
2019/04/17 Javascript
JavaScript实现简单计算器
2020/03/19 Javascript
antd多选下拉框一行展示的实现方式
2020/10/31 Javascript
python调用Moxa PCOMM Lite通过串口Ymodem协议实现发送文件
2014/08/15 Python
python中关于for循环的碎碎念
2017/06/30 Python
Python基于回溯法子集树模板解决全排列问题示例
2017/09/07 Python
Python爬虫实例_城市公交网络站点数据的爬取方法
2018/01/10 Python
Python之两种模式的生产者消费者模型详解
2018/10/26 Python
python读取txt文件中特定位置字符的方法
2018/12/24 Python
python获取本机所有IP地址的方法
2018/12/26 Python
详解Python中的正斜杠与反斜杠
2019/08/09 Python
Python selenium爬虫实现定时任务过程解析
2020/06/08 Python
Python3开发环境搭建详细教程
2020/06/18 Python
python3中布局背景颜色代码分析
2020/12/01 Python
Python爬虫scrapy框架Cookie池(微博Cookie池)的使用
2021/01/13 Python
PHP面试题及答案一
2012/06/18 面试题
Linux操作面试题
2012/05/16 面试题
中学生英语演讲稿
2014/04/26 职场文书
文秘自荐信
2014/06/28 职场文书
综合素质评价个性发展自我评价
2015/03/06 职场文书
网吧温馨提示
2015/07/17 职场文书
2016寒假社会实践心得体会范文
2015/10/09 职场文书
慰问信(范文3篇)
2019/10/23 职场文书