不吃猫的鱼y 2024-04-21 18:13 采纳率: 81%
浏览 22
已结题

vue3使用swiper轮播图循环失败

这个轮播图使用v-for循环遍历,逐个输出图片,但是没形成我想要的轮播图效果,我想要一个正常的轮播图,左右两边有按钮可以点击下一张的,然后下方需要指示点,每3秒自动切换一次

img

<template>
    <div>
        <swiper :options="swiperOptions">
            <swiper-slide v-for="(item, index) in swiperList" :key="index">
                <p>{{ item.title }}</p>
                <img :src="item.img" alt="" width="200px">
            </swiper-slide>
        </swiper>
    </div>
</template>

<script setup lang="ts">

import { Swiper, SwiperSlide } from "swiper/vue"
import axios from 'axios'
import { ref, reactive, onMounted } from 'vue'
const swiperList = ref([])

//组件加载后,调用服务器端接口
onMounted(() => {
    axios.get("http://localhost:3000/banners").then((res) => {
        console.log(res);
        swiperList.value = res.data;
    });
})

const swiperOptions = {
    //轮播图的配置参数
    slidesPerView: 1, //每个页面显示的图片数量
    spaceBetween: 10, //图片之间的间隔
    navigation: {
        nextEl: ".swiper-button-next", //下一页按钮的样式选择器
        prevEl: ".swiper-button-prev" //上一页按钮的样式选择器
    }
}
</script>

<style lang="scss" scoped></style>


  • 写回答

8条回答

  • 别报错别报错 2024-04-21 21:14
    关注
    
    <template>
      <div class="swiper-container">
        <div class="swiper-button-prev"></div>
        <div class="swiper-button-next"></div>
        <swiper  :autoplay="{ delay:5000, disableOnInteraction: false }"
          :navigation="{ nextEl: '.swiper-button-next', prevEl: '.swiper-button-prev' }" :pagination="{ clickable: true }"
          :options="swiperOptions" class="swiper">
          <swiper-slide v-for="(item, index) in swiperList" :key="index">
            <p>{{ item.title }}</p>
            <img :src="item.img" alt="" width="200px">
          </swiper-slide>
          <div class="swiper-pagination"></div>
        </swiper>
      </div>
    </template>
    
    <script setup lang="ts">
    import { Swiper, SwiperSlide } from 'swiper/vue';
    import { Autoplay, Pagination, Navigation } from 'swiper/modules';
    import SwiperCore from 'swiper';
    import 'swiper/scss';
    import 'swiper/scss/navigation';
    import 'swiper/scss/pagination';
    import axios from "axios";
    import { ref, onMounted } from "vue";
    
    const swiperList = ref([]);
    SwiperCore.use([Navigation, Pagination, Autoplay]);
    onMounted(() => {
      axios.get("http://localhost:3000/banners").then((res) => {
        swiperList.value = res.data;
      });
    });
    const swiperOptions = {
      slidesPerView: 1,
      spaceBetween: 10,
      loop: true, // 开启循环模式
    };
    </script>
    
    <style lang="scss" scoped>
    .swiper-container {
      width: 100%;
      margin: 0 auto;
    }
    .swiper {
      width: 100%;
      height: 300px;
      /* 根据需要调整高度 */
    }
    .swiper-slide {
      text-align: center;
      font-size: 18px;
      background: #fff;
      display: flex;
      justify-content: center;
      align-items: center;
    }
    </style>
    
    

    这个代码你试试,有问题私信我

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(7条)

报告相同问题?

问题事件

  • 系统已结题 4月29日
  • 已采纳回答 4月21日
  • 赞助了问题酬金15元 4月21日
  • 修改了问题 4月21日
  • 展开全部