使用 swiper 做轮播图

这篇具有很好参考价值的文章主要介绍了使用 swiper 做轮播图。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

swiper自动轮播,web前端,前端,javascript

大好好,我是 17。
虽然我是一个喜欢造轮子的人,但是对于 swiper,我还是直接拿过来用了,功能很多,也很方便。本文介绍一些常用的功能。

版本 Swiper 8.3.0

基本用法

<div class="swiper mySwiper">

      <div class="swiper-wrapper">
        <div class="swiper-slide">Slide 1</div>
        <div class="swiper-slide">Slide 2</div>
        <div class="swiper-slide">Slide 3</div>
      </div>

      <div class="swiper-pagination"></div>
      <div class="swiper-button-next"></div>
      <div class="swiper-button-prev"></div>
</div>
var swiper = new Swiper(".mySwiper", {
 /**
   * 设置Slide的切换效果,默认为"slide"(普通位移切换),
   * 还可设置为"fade"(淡入)、"cube"(方块)、"coverflow"(3d流)、
   * "flip"(3d翻转)、"cards"(卡片式)、"creative"(创意性)。
   */
  effect:slide,
  //自动播放
  autoplay:true,
  // 垂直切换
  direction: "vertical", 
  // slider容器能够同时显示的 slides 数量
  slidesPerView: 3,
  // 在slide之间设置距离(px)
  spaceBetween: 10,
  // 定义slides的数量多少为一组,就是一页切换多少个slides
  slidesPerGroup: 3,
  // 重复
  loop: true,
  /**
   * 默认情况下Swiper 每次滑动时只滑动一个Slide,并且会自动贴合Wrapper。
   * 开启自由模式后,Swiper 会根据惯性滑动可能不止一格且不会贴合。
   * 
   * 自由模式影响的是鼠标拖动或touch移动,分页器不受影响。
   */
  freeMode:false,
  /**
   * 居中幻灯片。设定为true时,当前的active slide 会居中,而不是默认状态下的居左。
   *
   * 一般来说,要配置 loop:true 一起使用,否则初始的时候,并没有居中的效果。
  */
  centeredSlides: true,
  //左右切换按钮
  navigation: {
    nextEl: ".swiper-button-next",
    prevEl: ".swiper-button-prev",
  },
  //分页
  pagination: {
    el: ".swiper-pagination",
    clickable: true,
  },
  on:{
    click: function(e){
      // 打印当前索引
      console.log(e.activeIndex)
    }
  },
});

我把所有常用配置的都写上了,不需要哪个直接删除就好。

最外层的 swiper 的样式

margin-left: auto;
margin-right: auto;
position: relative;

并没有设置高宽,需要使用者来设置宽高,如果外层容器比它宽,它会左右居中显示。

内层的 swiper-wraper 的样式

position: relative;
width: 100%;
height: 100%;
z-index: 1;
display: flex;
transition-property: transform;
box-sizing: content-box;

大小与 swiper 相同。里面的 swiper-slide 从左到右依次排列。默认效果 effect:'slide',就是左路右滑动的效果。通过在 swiper-wraper上 每次更改 transform: translate3d(X,0,0) 的 X 值,形成动画。所以我们可以更改通过改变 animation-timing-function 来更改缓动效果。样式中已经指定的 duration 为 2s ,但不会生效,duration 只能通过 js 由 speed 参数来修改。不过,样式中的 0.2s delay 是有效的。

.swiper-wrapper{
  /* 通过改变animation-timing-function 制作弹性切换效果 */
      transition: 2s cubic-bezier(0.68, -0.4, 0.27, 1.34) 0.2s;
 }
var swiper = new Swiper('.swiper-container', {
  speed: 2000,
    navigation: {
      nextEl: '.swiper-button-next',
      prevEl: '.swiper-button-prev',
    },
 });

swiper-slider 的样式是

.swiper-slide {
    flex-shrink: 0;
    width: 100%;
    height: 100%;
    position: relative;
    transition-property: transform
}

当给 swiper-slider 加 border 的时候,由于外面的 swiper overflow:hidden会导致 边框显示不全。所以我们需要给 swiper-slider class 增加一条样式

 box-sizing:border-box;

分页器

pagination: {
  el: ".swiper-pagination",
  type: "fraction",
}

type有几种

  1. ‘bullets’ 圆点(默认)
  2. ‘fraction’ 分式 ,形如 (1/10)
  3. ‘progressbar’ 进度条 ,在顶部的一个细长条,页码越大,长条越长。

或者是自定义

.swiper-pagination-bullet {
   /*自定义分页器样式 */
}

.swiper-pagination-bullet-active {
  /*自定义 当前 分页器样式 */
}
pagination: {
  el: ".swiper-pagination",
  clickable: true,
  //自定义分页器 html
  renderBullet: function (index, className) {
    return '<span class="' + className + '">' + (index + 1) + "</span>";
  },
},

立体效果

swiper自动轮播,web前端,前端,javascript

.swiper-slide {
  transition-duration: .2s;
  transform: scale(0.8);
}
.swiper-slide-active,.swiper-slide-duplicate-active{
  transform: scale(1);
}
 var swiper = new Swiper('.swiper-container', {
      slidesPerView: 3,
      spaceBetween: 30,
      centeredSlides: true,
      loop: true,
      pagination: {
        el: '.swiper-pagination',
        clickable: true,
      },
 });

从样式可以看出,是中间大,两边小。加上 transition后,尺寸切换会变得平滑。

左右各露出一部分

swiper自动轮播,web前端,前端,javascript

.swiper-slide {
  width: 60%;
}
var swiper = new Swiper('.mySwiper', {
  slidesPerView: 'auto',
  spaceBetween: 60,
  centeredSlides: true,
  loop: true,
  pagination: {
    el: '.swiper-pagination',
    clickable: true,
  },
});

原本是只显示一个 slide,但样式上指定 width: 60%; js 又指定 centeredSlides: true后,左右两边就会有一部分显示出来。

缩略图控制

swiper自动轮播,web前端,前端,javascript

 <div class="swiper swiper-big">
      <div class="swiper-wrapper">
        <div class="swiper-slide">Slide 1</div>
        <div class="swiper-slide">Slide 2</div>
        <div class="swiper-slide">Slide 3</div>
        <div class="swiper-slide">Slide 4</div>
        <div class="swiper-slide">Slide 5</div>
        <div class="swiper-slide">Slide 6</div>
        
      </div>
      <div class="swiper-button-next"></div>
      <div class="swiper-button-prev"></div>

  </div>
  <div class="swiper swiper-small">
    <div class="swiper-wrapper">
      <div class="swiper-slide">Slide 1</div>
      <div class="swiper-slide">Slide 2</div>
      <div class="swiper-slide">Slide 3</div>
      <div class="swiper-slide">Slide 4</div>
      <div class="swiper-slide">Slide 5</div>
      <div class="swiper-slide">Slide 6</div>
      
    </div>
</div>
var swiperSmall = new Swiper(".swiper-small", {
  loop:true,
  spaceBetween: 10,
  slidesPerView: 4,
  freeMode: true,
  watchSlidesProgress: true,
});
new Swiper(".swiper-big", {
  loop:true,
  navigation: {
    nextEl: ".swiper-button-next",
    prevEl: ".swiper-button-prev",
  },
  thumbs: {
    swiper: swiperSmall,
  },
});

大图 swiper 和小图 swiper 是完全分开的。swiper: swiperSmall 将大小图关联在一起。

小图的 watchSlidesProgress: true 是必须的。 slidesPerView 应该大于1。

要想循环的话,两个 swiper 都需要写上 loop:true

定位锚点

<div class="swiper">
    <div class="swiper-wrapper">
	<div class="swiper-slide" data-hash="slide1">slider1</div>
        <div class="swiper-slide" data-hash="slide2">slider2</div>
        <div class="swiper-slide" data-hash="slide3">slider3</div>
	</div>
</div>
new Swiper('.swiper',{ hashNavigation: true, })

视差效果

网页效果

<div class="swiper-slide">
  <div class="title" data-swiper-parallax="-100">从右边100px开始进入</div>
  <div class="subtitle" data-swiper-parallax="-200">从右边200px开始进入</div>
  <div class="text" data-swiper-parallax="-300" data-swiper-parallax-duration="600">
    <p>从右边300px开始进入,时间600ms</p>
  </div>
  <div data-swiper-parallax="0" data-swiper-parallax-opacity="0.5" >透明度变化</div>
  <div data-swiper-parallax-scale="0.15" >缩放变化</div>
</div>
</div>
var mySwiper = new Swiper('.swiper',{ parallax : true, })

响应式设置

缩小放大网页宽度查看
页面效果

breakpoints: {
    640: {
      slidesPerView: 2,
      spaceBetween: 20,
    },
    768: {
      slidesPerView: 4,
      spaceBetween: 40,
    },
    1024: {
      slidesPerView: 5,
      spaceBetween: 50,
    },
 },

不是阶跃式的变化,而是逐渐变化,这样会对内容有较高的要求。

常用函数

  • mySwiper.slideNext(speed, runCallbacks)
  • mySwiper.slidePrev(speed,runCallbacks)
  • mySwiper.slideTo(index, speed, runCallbacks)
  • mySwiper.slideToLoop(index, speed, runCallbacks)

其它应用

除了 slide 切换功能,swiper还可以用作滚动容器,有自定义滚动条。文章来源地址https://www.toymoban.com/news/detail-721966.html

到了这里,关于使用 swiper 做轮播图的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • vue中swiper轮播图的使用

    说明:导入相应js引css import \\\"Swiper\\\" from \\\"swiper\\\" import \\\"swiper/css/swiper.css\\\"; import \\\"swiper/js/swiper\\\"; 说明:必要的结构使用;直接封装成一个组件  说明:(页面当中务必要有结构);注释已经写入代码。 第一:可以解决获取数据在Swiper实例之前;第二:可以解决v-for遍历完后在Swiper之

    2024年02月14日
    浏览(47)
  • 英雄联盟轮播图自动轮播

    六月过去了,七月还会远吗?不知不觉到了六月底的最后一天。你好,七月! 大家好,我是小陈陈呀,上次写了一篇英雄联盟轮播图手动轮播,当天晚上有很多大朋友小朋友私信小陈陈:可以在上次手动轮播的基础上,实现自动轮播的话,那样会不会更炫酷呢?炫不炫酷我不

    2023年04月08日
    浏览(46)
  • 在vue中使用swiper轮播图(搭配watch和$nextTick())

    在组件中使用轮播图展示图片信息: 1.下载swiper,5版本为稳定版本 cnpm install swiper@5 2.在组件中引入swiper包和对应样式,若多组件使用swiper,可以把swiper引入到main.js入口文件中: import \\\'swiper/css/swiper.css\\\' //引入swiper样式 import Swiper from \\\'swiper\\\'; //引入swiper  3.在组件中使用: 由于我

    2024年02月13日
    浏览(46)
  • 解决微信小程序swiper轮播图撑不满有留白 实现swiper轮播图撑满父容器

    问题 :如下图,swiper轮播图两侧会有留白,没有撑满swiper 失败的尝试 : 1.调整图片尺寸 2.设属性设置image的mode为scaleToFill 3.设置item的属性 都没能实现将图片填充满轮播图,图片会有右侧和底部两块留白 通过调试器查看到image区域很小,怀疑是image本身属性的问题 随后尝试在

    2024年04月25日
    浏览(59)
  • 12-web前端轮播图案例 (小米商城)

    说明: 轮播图在前端开发中是一种常见的元素,通常用于展示一系列的图片或者内容,并通过滑动或者点击的方式进行切换。使用JavaScript来实现轮播图有以下几个意义: 提升用户体验:轮播图可以在有限的空间内展示更多的内容,为用户提供更多的信息。同时,轮播图也具

    2024年02月08日
    浏览(46)
  • Swiper轮播图后端接口实现

    2024年01月25日
    浏览(50)
  • 基于html+js实现轮播图(自动轮播、左右按钮、小圆点点击及切换图片)

    使用html和js实现的一个简单小练习轮播图。大概功能主要是: 1、使用时间函数自动切换图片; 2、在图片及按钮及小圆点的父节点身上绑定事件代理,添加mouseenter及mouseleave事件类型,让鼠标移入,图片暂停,移出,图片恢复轮播; 3、在按钮的父节点身上绑定事件代理,事

    2024年02月11日
    浏览(44)
  • 微信小程序swiper实现层叠轮播图

    在微信小程序中,需要实现展示5个,横向层叠的轮播图效果,轮播图由中间到2侧的依次缩小.如下图 使用原生小程序进行开发,没有使用Skyline模式,所以layout-type配置项也无效。所以基于swiper组件进行调整。 主要思路就是设置不同的样式,根据当前激活的项,来动态切换样式。

    2024年01月24日
    浏览(60)
  • JS常用插件 Swiper插件 实现轮播图

    Swiper 是一款免费以及轻量级的移动设备触控滑块的js框架 中文官网地址: https://www.swiper.com.cn/ 点击查看 Swiper演示 ,里面的功能和样式十分丰富,根据自己的需求选择 中文教程 中详细介绍了如何使用Swiper API文档 中介绍了各个模块以及参数的详细信息,遇到不明白的参数可以

    2024年02月01日
    浏览(65)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包