Swiper6+版本 在vue中的应用,竖向滚动

5 篇文章 0 订阅
2 篇文章 0 订阅
Swiper6+版本 在vue中的应用,竖向滚动

本文采用的Swiper6.7.0版本
安装swiper

 cnpm install swiper@6.7.0 -S
注意:如果需要设置禁止鼠标拖动,但是每条slide需要点击是这个属性allowTouchMove: false
数据结构:
WarnData: [
{ path: 'WarnTable', title: 'slide1', code: '1', quantity: 20, amount: 100 },
{ path: 'WarnTable', title: 'slide2', code: '1', quantity: 20, amount: 100 },
{ path: 'WarnTable', title: 'slide3', code: '1', quantity: 20, amount: 100 },
{ path: 'WarnTable', title: 'slide3', code: '1', quantity: null, amount: 100 },
{ path: 'WarnTable', title: 'slide5', quantity: null, code: '1', amount: 100 }
]
<template>
  <div class="swiper-container">
    <div class="swiper-wrapper warn_table_ul">
      <div v-for="(item, index) in value" :key="index" :data-code="item.wtype" data-path="DetailTable" :data-title="item.wtypeText" class="flex-center-space warn_table_li swiper-slide">
        <div class="flex-center-start">
          <img :src="icon">
          {{ item.wtypeText }}
        </div>
        <div class="flex-center-end">
          <span>{{ item.quantity ? item.quantity + '/' : '' }}{{ item.amount }}</span>
          {{ item.quantity ? '台/' : '' }}<i class="el-icon-caret-right" />
        </div>
      </div>
    </div>
  </div>
</template>

<script>
// Swiper6+版本  配置参考:https://swiperjs.com/migration-guide
import Swiper, { Autoplay } from 'swiper'
import 'swiper/swiper.min.css'
Swiper.use([Autoplay])
let vm = null
export default {
  components: {
  },
  props: {
    value: {
      type: Array,
      default() {
        return []
      }
    }
  },
  data() {
    return {
      icon: require('@/assets/main_images/icon_warn_02.png')
    }
  },
  activated() {
  // 看自己的需求,本项目点击slide之后需要跳转到详情,但是这个页面没有关闭,所以需要重新初始化,不然再回到这个页面,slide就不会自动滚动了
    this.init()
  },
  mounted() {
    this.init()
  },
  methods: {
    init() {
      vm = this
      new Swiper('.swiper-container', {
        direction: 'vertical', // 垂直切换
        loop: true,
        allowTouchMove: false,
        observer: true, // 修改swiper自己或子元素时,自动初始化swiper
        observeParents: true,
        autoplay: {
          disableOnInteraction: false, // 触碰后不会停止自动切换
          delay: 3000,
          pauseOnMouseEnter: false // 鼠标置于swiper时暂停自动切换,鼠标离开时恢复自动切换
        },
        slidesPerView: 'auto', // 能够同时显示的slides数量:'auto'则自动根据slides的高度来设定数量
        on: {
          click: function(swiper, event) { // 在此处实现相关业务逻辑
            const data = {
              code: swiper.clickedSlide.attributes['data-code'].value,
              path: swiper.clickedSlide.attributes['data-path'].value,
              title: swiper.clickedSlide.attributes['data-title'].value
            }
            vm.goto(data)
          }
        }
      })
    },
    goto(item) {
      const query = {
        code: item.code,
        title: item.title,
        psiType: 'warn'
      }
      this.$emit('goto', item.path, query)
    }
  }
}
</script>

<style lang="scss" scoped>
// @import 'swiper.css';
  .warn_table_ul {
    margin: 0;
    width: calc(100% - 10px);
    padding: 0 5px;
    .warn_table_li {
      width: 100%;
      height: 3.0625rem;
      background: #062B57;
      font-size: 1rem;
      color: #D7E9EE;
      margin-bottom: 1.5rem;
      &:hover{
        cursor: pointer;
        background: #143C6C;
      }
      &:last-child{
        margin-bottom: 0;
      }
      img{
        width: 1.5rem;
        height:1.5rem;
        margin-left: 0.8125rem;
        margin-right: 1.0625rem;
      }
      .flex-center-start{
        font-size: 1.125rem;
      }
      .flex-center-end{
        font-size: 1rem;
        color: #D7E9EE;
        span{
          margin-right: 0.8125rem;
          font-size: 1.25rem;
          font-family: Source Han Sans SC;
          font-weight: 400;
          color: #FF3636;
        }
        .el-icon-caret-right{
          color: #3FADCC;
          font-size: 1rem;
          margin-left: 1.25rem;
          margin-right: 0.625rem;
        }
      }
    }
  }
</style>

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要实现Vue向无缝滚动轮播图,你可以使用一些Vue插件或自定义组件来实现。下面是一个简单的示例,演示了如何使用Vuevue-awesome-swiper插件来实现这个效果: 首先,确保你已经安装了vue-awesome-swiper插件。你可以通过npm或yarn进行安装: ```bash npm install vue-awesome-swiper --save ``` 然后,在你的Vue组件,引入vue-awesome-swiper: ```javascript import 'swiper/css/swiper.css'; import VueAwesomeSwiper from 'vue-awesome-swiper'; Vue.use(VueAwesomeSwiper); ``` 接下来,你可以在Vue组件使用vue-awesome-swiper来创建一个向无缝滚动的轮播图: ```html <template> <div class="swiper-container"> <div class="swiper-wrapper"> <div class="swiper-slide" v-for="news in newsList" :key="news.id"> <!-- 这里是你的新闻内容 --> <h3>{{ news.title }}</h3> <p>{{ news.content }}</p> </div> </div> </div> </template> <script> export default { data() { return { newsList: [ // 这里是你的新闻数据 { id: 1, title: '新闻标题1', content: '新闻内容1' }, { id: 2, title: '新闻标题2', content: '新闻内容2' }, { id: 3, title: '新闻标题3', content: '新闻内容3' }, // ... ] }; } }; </script> <style> .swiper-container { height: 300px; /* 设置轮播图容器的高度 */ } </style> ``` 最后,你可以在组件的生命周期钩子初始化swiper: ```javascript mounted() { this.$nextTick(() => { new Swiper('.swiper-container', { direction: 'vertical', loop: true, autoplay: { delay: 3000, // 自动切换的间隔时间 disableOnInteraction: false // 用户操作后是否停止自动切换 } }); }); } ``` 上述代码swiper-container类名和swiper-wrapper类名是vue-awesome-swiper插件要求的类名,需要保持一致。 希望这个示例能帮助到你实现向无缝滚动的轮播图。如果有任何问题,请随时向我提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值