SWIPER 视频图片轮播

516 阅读1分钟

1.引入swiper和vue-awesome-swiper插件

npm install swiper@4 --save npm install vue-awesome-swiper@3 --save
复制代码

2.在main.js中引入:

import VueAwesomeSwiper from 'vue-awesome-swiper'
Vue.use(VueAwesomeSwiper)
import '../node_modules/swiper/dist/css/swiper.css'
复制代码

3.使用:
template:布局

<template>
    <div>
        <div class="thumb-example">
            <!-- swiper1 -->
            <swiper class="swiper gallery-top" :options="swiperOptionTop" ref="swiperTop">
                <swiper-slide class="slide-1" v-for="item in bigImg" :key="item.id">
                    <video v-if="item.id === 0" :src="item.url" controls muted style="height: 330px; width: 100%" autoplay="autoplay" loop="loop"></video>
                    <img v-else :src="item.url" />

                    <!-- <img :src="item.url" style="height: 330px; width: 100%" alt="" /> -->
                </swiper-slide>
                <div style="display: none" class="swiper-button-next swiper-button-white" slot="button-next"></div>
                <div style="display: none" class="swiper-button-prev swiper-button-white" slot="button-prev"></div>
            </swiper>
            <!-- swiper2 Thumbs -->
            <swiper class="swiper gallery-thumbs" :options="swiperOptionThumbs" ref="swiperThumbs">
                <swiper-slide class="slide" style="width: 100px; height: 100px" v-for="item in bigImg" :key="item.id">
                    <video v-if="item.id === 0" :src="item.url" controls muted style="width: 100%; height: 100px"></video>
                    <img v-else :src="item.url" style="width: 100%; height: 100px" />
                    <!-- <img style="width: 100px; height: 100px" :src="item.url" alt="" /> -->
                </swiper-slide>
                <div class="swiper-button-next swiper-button-white" slot="button-next">
                    <div>
                        <img class="swiper_concal swiper_concal_right" src="../../../assets/images/mySwiper/right.png" alt="" />
                    </div>
                </div>
                <div class="swiper-button-prev swiper-button-white" slot="button-prev">
                    <div>
                        <img class="swiper_concal swiper_concal_left" src="../../../assets/images/mySwiper/left.png" alt="" />
                    </div>
                </div>
            </swiper>
        </div>
    </div>
</template>

<script>
export default {
    mounted() {
        // 实现swiper双向控制
        this.$nextTick(() => {
            const swiperTop = this.$refs.swiperTop.swiper;
            const swiperThumbs = this.$refs.swiperThumbs.swiper;
            swiperTop.controller.control = swiperThumbs;
            swiperThumbs.controller.control = swiperTop;
        });
    },
    data() {
        return {
            //轮播大图配置
            bigImg: [
                {
                    url: 'http://mediaplay.kksmg.com/2022/11/02/h264_720p_600k_43153-DFTVHD-20221102065500-10800-384594-600k_mp4.mp4',
                    id: 0
                },
                {
                    url: 'https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fpic1.win4000.com%2Fwallpaper%2F8%2F55402f62682e3.jpg&refer=http%3A%2F%2Fpic1.win4000.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=auto?sec=1670121680&t=f08477b79b9619be5b96b75ee7fedbdb',
                    id: 1
                },
                {
                    url: 'https://gimg2.baidu.com/image_search/src=http%3A%2F%2Flmg.jj20.com%2Fup%2Fallimg%2F1114%2F041621122252%2F210416122252-1-1200.jpg&refer=http%3A%2F%2Flmg.jj20.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=auto?sec=1670121680&t=adbe4746c8370677f53a45608f38dbe2',
                    id: 2
                },
                {
                    url: 'src=http __lmg.jj20.com_up_allimg_1114_010421142927_210104142927-13-1200.jpg&refer=http __lmg.jj20.webp',
                    id: 3
                },
                {
                    url: 'https://gimg2.baidu.com/image_search/src=http%3A%2F%2Flmg.jj20.com%2Fup%2Fallimg%2F1114%2F121420113514%2F201214113514-6-1200.jpg&refer=http%3A%2F%2Flmg.jj20.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=auto?sec=1670121680&t=9fdf38101c0fc22d72fad8e6e6a8f09c',
                    id: 4
                },
                {
                    url: 'https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fpic1.win4000.com%2Fwallpaper%2F5%2F5476e32631957.jpg&refer=http%3A%2F%2Fpic1.win4000.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=auto?sec=1670121680&t=0bb759fcf589461b32a53e1b484c5dab',
                    id: 5
                }
            ],
            swiperOptionTop: {
                zoom: true,
                loop: true,
                loopedSlides: 5,
                spaceBetween: 10,
                observer: true,
                observeParents: true,

                // autoplay: {
                //     //自动轮播
                //     delay: 1000,
                //     disableOnInteraction: false
                // },
                navigation: {
                    nextEl: '.swiper-button-next',
                    prevEl: '.swiper-button-prev'
                }
            },
            swiperOptionThumbs: {
                loop: true,
                loopedSlides: 5, // looped slides should be the same
                spaceBetween: 10,
                centeredSlides: true,
                slidesPerView: 'auto',
                touchRatio: 0.5,
                slideToClickedSlide: true,
                navigation: {
                    nextEl: '.swiper-button-next',
                    prevEl: '.swiper-button-prev'
                }
            }
        };
    },

    methods: {}
};
</script>
<style lang="less" scoped>
h3 {
    margin: 20px 0 0 10px;
}
.thumb-example {
    width: 880px;
}
.swiper-slide {
    background-size: cover;
    background-position: center;
}
.gallery-top {
    // height: 80% !important;
    height: 330px;
    width: 100%;
}
.gallery-thumbs {
    height: 20% !important;
    box-sizing: border-box;
    padding: 10px 0px;
    width: 864px;
    margin-left: 2px;
    .play {
        position: absolute;
        left: 46%;
        top: 40%;
    }
    .swiper_concal {
        position: relative;
        top: -25px;
    }
    .swiper_concal_right {
        left: 10px;
    }
    .swiper_concal_left {
        left: -10px;
    }
    .swiper-button-next {
        right: 0px;
    }
    .swiper-button-prev {
        left: 0px;
    }
    .swiper-button-next,
    .swiper-button-prev {
        background: transparent;
        width: 45px;
        text-align: center;
        height: 101px;
        top: 26%;
        div {
            margin-top: 30px;
            background: transparent;
            height: 45px;
            border-radius: 50%;
            img {
                margin: 7px 0 0 2px;
                width: 30px;
            }
        }
    }
    .swiper-button-next:hover div {
        background: transparent;
    }
    .swiper-button-prev:hover div {
        background: transparent;
    }
}
.gallery-thumbs .swiper-slide {
    width: 20%;
    height: 80px;
    // opacity: 0.4;
}
.gallery-thumbs .swiper-slide-active {
    border: 2px solid #fff8e2;
}
</style>