• 在vue中使用swiper实现PC端横向内容左右滑动的效果


    官方文档 https://www.swiper.com.cn/

    效果图:

    1、安装

    cnpm install swiper vue-awesome-swiper --save

    2、引入

    (1)全局在main.js中引入

    import VueAwesomeSwiper from 'vue-awesome-swiper'
    import 'swiper/css/swiper.css'
    Vue.use(VueAwesomeSwiper)

    (2)局部引入

    import { Swiper, SwiperSlide } from 'vue-awesome-swiper'
    import 'swiper/css/swiper.css'
    
    export default {
        components: {
           Swiper,
           SwiperSlide
        }
    }

    3、使用:

     用到的API:

    this.swiper.setTransition(1000);//设定过渡的时间
    this.swiper.setTranslate(-1000);//设定位移,可以为正数

    获取某个点的宽高、位置:

    this.$refs.item.getBoundingClientRect()   

    代码:

    <template>
        <div class="SegmentCell">
            <a @click="stepActive=item" v-for="item in [6,8,12,20,10]" :key="item" class="m-l-r-20">{{item}}</a>
            <swiper class="swiper-container" ref="mySwiper" :options="swiperOptions">
                <swiper-slide class="swiper-slide" :style="swiperStyle">
                    <div class="item t-a-c" v-for="item in stepActive" :ref="'item'+item" @click="setTranslate(item)">{{item}}</div>
                </swiper-slide>
            </swiper>
        </div>
    </template>
    
    <script>
        // 引入swiper滑动组件
        import { Swiper, SwiperSlide } from 'vue-awesome-swiper'
        import 'swiper/css/swiper.css'
        export default {
            components: {
                Swiper,
                SwiperSlide
            },
            data() {
                return {
                    swiperStyle: {},
                    swiperOptions: {
                        slidesPerView: 'auto',
                        freeMode: true,   // 随意拖动位置
                        mousewheel: true
                    },
                    stepActive: 6
                }
            },
            computed: {
                swiper() {
                    return this.$refs.mySwiper.$swiper;
                }
            },
            watch: {
                stepActive: {
                    handler(newVal,oldVal) {
                        console.log(this.stepActive);
                        if(this.stepActive) {
                            this.swiperStyle = ""+ 500*this.stepActive/16 + "rem";    // 动态设置宽度
                        }
                    },
                    immediate: false
                }
            },
            mounted() {
                
            },
            destroyed() {
                this.swiper.destroy(false);  
            },
            methods: {
                setTranslate(index) {
                    console.log(index,this.swiper.width,this.$refs["item"+index][0].getBoundingClientRect())
                    this.swiper.setTransition(1000);// 设定过渡的时间
                    this.swiper.setTranslate( 0 - 500*(index-1) + (this.swiper.width/2 - 500/2) );//设定位移,可以为正数
                }
            }
        };
    </script>
    
    <style lang="stylus" scoped>
        .SegmentCell {
            padding: 20px 0;
            border: solid 1px red;
            .swiper-container {
                .swiper-wrapper {
                    transition: all 0.5s;
                }
                // 连接线 - 不跟随内容滚动,放到.swiper-slide里面则跟随内容滚动
                &:before {
                    content: "";
                    position: absolute;
                    top: 28px;
                    left: 0;
                     100%;
                    height: 4px;
                    background-color: red;
                    opacity: 0.2;
                }
                .swiper-slide {
                     200%;
                    height: 100px;
                    .item {
                        display: inline-block;
                         500px;
                        color: red;
                    }
                }
            }
        }
    
    </style>>
  • 相关阅读:
    Cocos2dx-Android屏幕适配方案
    Cocos2dx-Mac下的环境配置
    Cocos2dx-C++和Lua数据通讯
    Cocos2dx-Lua与C++混合使用
    安装宝塔面板
    nginx配置ssl安全证书
    在nginx上运行spring
    spring在服务器上的启动和关闭jar包
    idea常用插件
    maven打包war
  • 原文地址:https://www.cnblogs.com/stella1024/p/13093263.html
Copyright © 2020-2023  润新知