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常见面试题之DOM操作详析
Jul 05 jQuery
快速掌握jquery分页插件jqPaginator的使用方法
Aug 09 jQuery
详解jQuery同步Ajax带来的UI线程阻塞问题及解决办法
Aug 09 jQuery
简单实现jQuery手风琴效果
Aug 18 jQuery
jQuery中.attr()和.data()的区别分析
Sep 03 jQuery
jQuery实现的简单前端搜索功能示例
Oct 28 jQuery
jQuery解析json格式数据示例
Sep 01 jQuery
jQuery实现的五星点评功能【案例】
Feb 18 jQuery
jQuery选择器之基本选择器用法实例分析
Feb 19 jQuery
jquery.pager.js实现分页效果
Jul 29 jQuery
JQuery事件委托(适用于给动态生成的脚本元素添加事件)
Feb 01 jQuery
jQuery实现tab栏切换效果
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图片上传类带图片显示
2006/11/25 PHP
codeigniter框架The URI you submitted has disallowed characters错误解决方法
2014/05/06 PHP
Laravel 的数据库迁移的方法
2017/07/31 PHP
PHP实现求解最长公共子串问题的方法
2017/11/17 PHP
PHP simplexml_load_string()函数实例讲解
2019/02/03 PHP
javascript结合ajax读取txt文件内容
2014/12/05 Javascript
js文本框走动跑马灯效果代码分享
2015/08/25 Javascript
jQuery改变form表单的action,并进行提交的实现代码
2016/05/25 Javascript
jQuery实现的选择商品飞入文本框动画效果完整实例
2016/08/10 Javascript
利用Vue.js指令实现全选功能
2016/09/08 Javascript
Vue.Js中的$watch()方法总结
2017/03/23 Javascript
在 Node.js 中使用 async 函数的方法
2017/11/17 Javascript
微信小程序使用wxParse解析html的方法示例
2019/01/17 Javascript
如何在Angular应用中创建包含组件方法示例
2019/03/23 Javascript
微信小程序使用Vant Weapp组件库的方法步骤
2019/08/01 Javascript
Vue 3.0 全家桶抢先体验
2020/04/28 Javascript
[01:28]一分钟告诉你DOTA2 TI9不朽宝藏Ⅱ中有什么!
2019/07/09 DOTA
python通过smpt发送邮件的方法
2015/04/30 Python
Python实现删除当前目录下除当前脚本以外的文件和文件夹实例
2015/07/27 Python
python开发之str.format()用法实例分析
2016/02/22 Python
简单谈谈Python流程控制语句
2016/12/04 Python
Python使用 Beanstalkd 做异步任务处理的方法
2018/04/24 Python
Pycharm无法打开双击没反应的问题及解决方案
2020/08/17 Python
css3实现一款模仿iphone样式的注册表单
2013/03/20 HTML / CSS
美国猫狗药物和用品网站:PetCareRx
2017/01/05 全球购物
电子商务应届生自我鉴定
2014/01/13 职场文书
运动会入场词100字
2014/02/06 职场文书
《雷雨》教学反思
2014/02/20 职场文书
环保倡议书范文
2014/05/12 职场文书
酒店开业庆典策划方案
2014/05/28 职场文书
趣味运动会策划方案
2014/06/02 职场文书
法制宣传口号
2014/06/16 职场文书
学校法制宣传月活动总结
2014/07/03 职场文书
十佳好少年事迹材料
2014/08/21 职场文书
《微笑着面对生活》优秀演讲稿范文
2014/09/23 职场文书
Python Parser的用法
2021/05/12 Python