Maison >interface Web >Voir.js >Comment implémenter le glissement horizontal des images dans vueJS
Méthode VueJS pour réaliser un glissement horizontal des images : 1. Utilisez npm pour installer vue-awesome-swiper ; 2. Référencez vue-awesome-swiper dans main.js ; 3. Utilisez swiper pour glisser vers la gauche et la droite pour changer d'image.
L'environnement d'exploitation de cet article : système Windows 7, vue version 2.9.6, ordinateur DELL G3.
Comment réaliser un glissement horizontal d'images dans vueJS ?
vue utilise le swiper pour glisser vers la gauche et la droite pour changer d'image :
Utilisez npm pour installer vue-awesome-swiper
npm install vue-awesome-swiper --save
Référencé dans main.js
import VueAwesomeSwiper from 'vue-awesome-swiper' Vue.user(VueAwesomeSwiper) import 'swiper/dist/css/swiper.css'
Utilisez
<template> <div> <label>{{ time }}</label> <div id="star-pic-vue"> <template v-if="data"> <img e v-for="(item, index) in images" :src="item.url" :key="index" id="contract_url" @click="enlargePic(index)" /> <template v-if="isDialogShow"> </template> <el-dialog :visible.sync="centerDialogVisible" width="100%" modal close-on-click-modal custom-class="dialog" > <swiper :options="swiperOption" ref="mySwiper" style="height: 100%;"> <swiper-slide v-for="(img, index) in images" :key="index"> <div> <img :src="img.url" alt="" /> </div> </swiper-slide> </swiper> </el-dialog> </template> </div> </div> </template> <script> import { swiper, swiperSlide } from "vue-awesome-swiper"; export default { name: "PictureComponent", props: ["data", "maxShow", "time"], data() { return { centerDialogVisible: false, showPic: "", isDialogShow: false, activeIndex: 1, startX: 0, swiperOption: { width: window.innerWidth, zoom: true, initialSlide: 0 } }; }, computed: { images() { if (this.data instanceof Array && this.data.length > 2) { var value = this.data; return value.splice(0, this.maxShow); } else { return this.data; } } }, components: { swiper, swiperSlide }, methods: { // 放大图片 enlargePic(i) { this.activeIndex = i; this.isDialogShow = true; // 使用$refs,如果ref是定位在有v-if、v-for、v-show中的DOM节点, // 返回来的只能是undefined,因为在mounted阶段他们根本不存在 this.$nextTick(() => { var swiper = this.$refs.mySwiper.swiper; swiper.activeIndex = i; }); this.centerDialogVisible = true; } } }; </script> <style> .timeline { display: block; margin: 10px 20px 5px; } #star-pic-vue .el-dialog__wrapper { position: fixed; top: 0; right: 0; bottom: 0; left: 0; overflow: auto; margin: 0; background: #171717; } #star-pic-vue { width: 100%; height: auto; display: flex; flex-wrap: wrap; justify-content: stretch; padding: 3px 13px; img { width: 82px; height: 80px; margin: 4px 0px 0px; padding-right: 2px; } .dialog { img { width: 100%; height: 100%; margin: 0; } } .el-carousel__item h3 { color: #475669; font-size: 18px; opacity: 0.75; line-height: 300px; margin: 0; height: 100%; width: 100%; } .el-dialog__header { display: none; } .el-dialog__body { padding: 0 !important; margin: 0 !important; height: 460px; background: #171717; } .el-carousel { height: 100%; } .el-carousel__container { height: 410px; } .el-carousel__indicators--outside { margin-top: 20px; } } </style>
effect
$ dans main.js La principale raison pour laquelle les références ne peuvent pas être localisées est que si des instructions telles que v-if, v-for et v-show reposent sur des paramètres transmis par le composant parent, les paramètres n'ont pas été obtenus lors du montage (). scène.
Si vous voulez vraiment obtenir les données après le chargement du DOM, vous devez appeler l'API globale de VUE : this.$nextTick(() => {})
Recommandé : "Les 5 dernières vues .js sélection de tutoriels vidéo》
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!