jquery+css实现简单的图片轮播效果

发布时间 - 2026-01-11 02:40:21    点击率:

开发过程中需要用到图片轮播的插件,在网上找了几个插件之后还是决定自己码一个,比较简洁的功能,以后说不定还会有用。

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">&lt;</a>
  <a href="javascript:;" class="arrow" id="next">&gt;</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  # css  # 图片轮播  # 12款经典的白富美型—jquery图片轮播插件—前端开发必备  # 原生js和jquery实现图片轮播特效  # jQuery图片轮播的具体实现  # Jquery代码实现图片轮播效果(一)  # 基于JQuery的实现图片轮播效果(焦点图)  # 原生js和jquery实现图片轮播淡入淡出效果  # 基于jquery的图片轮播 tab切换组件  # jQuery插件slicebox实现3D动画图片轮播切换特效  # jQuery手动点击实现图片轮播特效  # 基于jQuery实现左右图片轮播(原理通用)  # 第一张  # 一张图  # 几个  # 还会  # 找了  # 也为  # 并不能  # 应是  # 不包括  # 大家多多  # 过程中  # 说不定  # 自动调节  # 在网上  # id  # span  # buttons  # href  # leftPx  # javascript 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 如何选择可靠的免备案建站服务器?  JS中页面与页面之间超链接跳转中文乱码问题的解决办法  免费制作统计图的网站有哪些,如何看待现如今年轻人买房难的情况?  如何快速查询域名建站关键信息?  BootStrap整体框架之基础布局组件  Python正则表达式进阶教程_复杂匹配与分组替换解析  如何在浏览器中启用Flash_2025年继续使用Flash Player的方法【过时】  Laravel如何使用集合(Collections)进行数据处理_Laravel Collection常用方法与技巧  Laravel如何处理文件上传_Laravel Storage门面实现文件存储与管理  如何在云指建站中生成FTP站点?  购物网站制作费用多少,开办网上购物网站,需要办理哪些手续?  香港服务器网站搭建教程-电商部署、配置优化与安全稳定指南  韩国网站服务器搭建指南:VPS选购、域名解析与DNS配置推荐  高端智能建站公司优选:品牌定制与SEO优化一站式服务  Laravel如何编写单元测试和功能测试?(PHPUnit示例)  如何在阿里云通过域名搭建网站?  QQ浏览器网页版登录入口 个人中心在线进入  JS去除重复并统计数量的实现方法  阿里云网站搭建费用解析:服务器价格与建站成本优化指南  如何构建满足综合性能需求的优质建站方案?  如何做网站制作流程,*游戏网站怎么搭建?  如何用PHP工具快速搭建高效网站?  学生网站制作软件,一个12岁的学生写小说,应该去什么样的网站?  Laravel如何生成URL和重定向?(路由助手函数)  如何在阿里云虚拟服务器快速搭建网站?  PHP的CURL方法curl_setopt()函数案例介绍(抓取网页,POST数据)  北京网页设计制作网站有哪些,继续教育自动播放怎么设置?  Laravel怎么实现一对多关联查询_Laravel Eloquent模型关系定义与预加载【实战】  香港代理服务器配置指南:高匿IP选择、跨境加速与SEO优化技巧  Laravel如何理解并使用服务容器(Service Container)_Laravel依赖注入与容器绑定说明  laravel怎么实现图片的压缩和裁剪_laravel图片压缩与裁剪方法  Win11摄像头无法使用怎么办_Win11相机隐私权限开启教程【详解】  Python高阶函数应用_函数作为参数说明【指导】  香港服务器部署网站为何提示未备案?  实例解析Array和String方法  Python文件操作最佳实践_稳定性说明【指导】  Python文本处理实践_日志清洗解析【指导】  电视网站制作tvbox接口,云海电视怎样自定义添加电视源?  如何用AWS免费套餐快速搭建高效网站?  Laravel项目如何进行性能优化_Laravel应用性能分析与优化技巧大全  javascript日期怎么处理_如何格式化输出  Win11怎么修改DNS服务器 Win11设置DNS加速网络【指南】  电商网站制作多少钱一个,电子商务公司的网站制作费用计入什么科目?  Linux安全能力提升路径_长期防护思维说明【指导】  如何在HTML表单中获取用户输入并用JavaScript动态控制复利计算循环  制作公司内部网站有哪些,内网如何建网站?  Win11怎么关闭透明效果_Windows11辅助功能视觉效果设置  网站广告牌制作方法,街上的广告牌,横幅,用PS还是其他软件做的?  实例解析angularjs的filter过滤器  如何在景安云服务器上绑定域名并配置虚拟主机?