美文网首页
vue-awesome-swiper 简单使用以及常见问题

vue-awesome-swiper 简单使用以及常见问题

作者: RadishHuang | 来源:发表于2019-10-08 11:56 被阅读0次

    当我们做轮播的时候,首先想到的基本上都是swiper,在vue脚手架上也有对swiper进行了封装。vue-awesome-swiper GitHub 地址。在GitHub上的点赞还是蛮高的一个类库。这里讲下遇到的常用的用法。细节方面还是移步swiper官方文档

    安装类库和引入类库

    • 终端下执行命令
    npm install vue-awesome-swiper --save
    
    • 在main.js中引入swiper组件
    // 全局加载轮播
    import VueAwesomeSwiper from 'vue-awesome-swiper'
    import 'swiper/dist/css/swiper.css'
    Vue.use(VueAwesomeSwiper);
    
    // 组件加载
    import 'swiper/dist/css/swiper.css'
    
    import { swiper, swiperSlide } from 'vue-awesome-swiper'
    
    export default {
      components: {
        swiper,
        swiperSlide
      }
    }
    

    垂直全屏轮播配置

    • 实例代码,仅供参考
      <template>
        <div class="home_page">
            <swiper ref="vSwiper" :options="vSwiper" class="v_contain">
                <swiper-slide v-for="(item, index) in pages" :key="index">
                    <div class="single">
                        <component :is="item" :ref="item" @next="next"></component>
                    </div>
                </swiper-slide>
            </swiper>
            <div class="arrow arrow_animate" >
                <img v-show="isShow" src="../../assets/image/arrow.png">
            </div>
        </div>
    </template>
    
    
    <script>
    
    import 'swiper/dist/css/swiper.css'
    import { swiper, swiperSlide } from 'vue-awesome-swiper';
    import onePage from '../../components/one';
    import twoPage from '../../components/two';
    import threePage from '../../components/three';
    import fourPage from '../../components/four';
    
    export default {
        data() {
            return {
                vSwiper: {
                    direction: 'vertical',
                    on: {
                        slideChangeTransitionEnd: ()=>{
                            const activeIndex = this.$refs.vSwiper.swiper.activeIndex;
                        }
                    }
                },
                pages:['onePage', 'twoPage', 'threePage', 'fourPage'],
            }
        },
        components: {
            swiper, 
            onePage,
            twoPage,
            threePage,
            fourPage
        },
        methods: {
            next() {
                this.$refs.vSwiper.swiper.slideNext();
            }
        }
    }
    </script>
    
    
    <style lang="scss" scoped>
        @import '../../common/css/mixin.scss';
        .home_page{
            width: 100%;
            height: 100%;
            .v_contain {
                width: 100%;
                height: 100%;
                .single {
                    width: 100%;
                    height: 100%;
                    overflow: hidden;
                }
            }
        }
    </style>
    
    
    

    这里引用了四个组件,通过for来依次把组件加到单个swiper-slide中。<component></component> 标签是Vue框架自定义的标签,它的用途就是可以动态绑定我们的组件,根据数据的不同更换不同的组件。通过is来绑定所依赖的组件。
    不太准确,通俗的说,它就像是组件的泛类。不管什么组件,通过component都可以直接动态绑定。

    常见方法

    • swiperOption配置和swiper官方文档的配置字段,都是一模一样,所有的字段属性,方法,参照文档更加清楚。

      配置
    • 通过ref绑定swiper可以很方便的在任何地方去获取到swiper的状态,以下例举几种常用的方法。

    //获取到`swiper`当前显示的页面。
    this.$refs.vSwiper.swiper.activeIndex;
    //比如说切换页面。下一页,上一页:
    this.$refs.vSwiper.swiper.slideNext();
    this.$refs.vSwiper.swiper.slidePrev();
    //切换到指定页
    this.$refs.vSwiper.slideTo(3, 1000, false);
    

    使用方法在官方文档也有标注出来,我们也可以自己从页面log中看到swiper的属性

    swiper的属性

    修改pagination(分页)样式。

    • tempalte部分。在vue的tempalte里面找一个地方,随便一个地方写入如下代码。放置分页器的卡槽。
            <div class="swiper-pagination" id="pagination" slot="pagination"></div>
    
    • script部分。在data中的swipeOption配置分页器对应的css名称
              hSwiper: {
                    pagination: {
                        el: '.swiper-pagination',
                        clickable: true,
                        bulletClass: 'my-bullet',
                        bulletActiveClass: 'my-bullet-active'
                    },
                }
    
    • 样式部分。在style里面,记得不能用scope。单独定义一个非scope的style。自定义的样式。
      pagination的bottom可以去修改分页器的底部位置。
      my-bullet未激活的分页器样式。
      my-bullet-active 激活后的分页器样式。
    <style lang="scss">
        #pagination {
            width: 100%;
            bottom: 1.8rem;
        }
        .my-bullet{
            display: inline-block;
            margin: 0rem 0.08rem;
            background: #fae2ee;
            width: .15rem;
            height: .15rem;
            border-radius: 50%;
        }
        .my-bullet-active{
            background: #e13194;
            width: .15rem;
            height: .15rem;
            border-radius: 50%;
        }
    </style>
    

    相关文章

      网友评论

          本文标题:vue-awesome-swiper 简单使用以及常见问题

          本文链接:https://www.haomeiwen.com/subject/ailnyctx.html