vue使用swiper实现左右滑动切换图片


Posted in Javascript onOctober 16, 2020

本文实例为大家分享了vue使用swiper实现左右滑动切换图片的具体代码,供大家参考,具体内容如下

使用npm 安装vue-awesome-swiper

npm install vue-awesome-swiper --save

在main.js中引用

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

在组件中使用

<template>
 <div>
  <label class="timeline">{{ 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 class="swiper-zoom-container">
        <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 lang="scss">
.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>

效果

vue使用swiper实现左右滑动切换图片

$refs定位不到的主要原因是因为v-if、v-for、v-show这些语句如果依赖父组件传来的参数的话,该该参数是在mounted()阶段子还没获取得到~~~~!!!!

如果想要真正地在DOM加载完成后拿到数据,就需要调用VUE的全局api : this.$nextTick(() => {})

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
神奇的7个jQuery 3D插件整理
Jan 06 Javascript
Javascript的getYear、getFullYear、getUTCFullYear异同分享
Nov 30 Javascript
document.write()及其输出内容的样式、位置控制
Aug 12 Javascript
利用try-catch判断变量是已声明未声明还是未赋值
Mar 12 Javascript
基于jquery的手风琴图片展示效果实现方法
Dec 16 Javascript
跨域资源共享 CORS 详解
Apr 26 Javascript
简洁实用的BootStrap jQuery手风琴插件
Aug 31 Javascript
详解js的事件处理函数和动态创建html标记方法
Dec 16 Javascript
jQuery判断邮箱格式对错实例代码讲解
Apr 12 jQuery
js实现旋转的星空效果
Nov 01 Javascript
解决Echarts 显示隐藏后宽度高度变小的问题
Jul 19 Javascript
Vue 样式切换及三元判断样式关联操作
Aug 09 Javascript
详解webpack的clean-webpack-plugin插件报错
Oct 16 #Javascript
JS绘图Flot如何实现可选显示曲线图功能
Oct 16 #Javascript
JS跨浏览器解析XML应用过程详解
Oct 16 #Javascript
JS实现简易图片自动轮播
Oct 16 #Javascript
JS绘图Flot如何实现动态可刷新曲线图
Oct 16 #Javascript
基于JQuery和DWR实现异步数据传递
Oct 16 #jQuery
JS绘图Flot应用图形绘制异常解决方案
Oct 16 #Javascript
You might like
PHP eval函数使用介绍
2013/12/08 PHP
curl和libcurl的区别简介
2015/07/01 PHP
php数组比较实现查找连续数的方法
2015/07/29 PHP
PHP中explode函数和split函数的区别小结
2016/08/24 PHP
列表内容的选择
2006/06/30 Javascript
Expandable &quot;Detail&quot; Table Rows
2007/08/29 Javascript
将jQuery应用于login页面的问题及解决
2009/10/17 Javascript
javascript中字符串的定义示例代码
2013/12/19 Javascript
浅谈JavaScript的事件
2015/02/27 Javascript
JavaScript黑洞数字之运算路线查找算法(递归算法)实例
2016/01/28 Javascript
jQuery获取checkbox选中的值
2016/01/28 Javascript
js获取上传文件的绝对路径实现方法
2016/08/02 Javascript
详解Vue学习笔记进阶篇之列表过渡及其他
2017/07/17 Javascript
利用JS实现scroll自定义滚动效果详解
2017/10/17 Javascript
JavaScript插件Tab选项卡效果
2017/11/14 Javascript
基于substring()和substr()的使用以及区别(实例讲解)
2017/12/28 Javascript
浅谈webpack打包之后的文件过大的解决方法
2018/03/07 Javascript
vue.js实现点击后动态添加class及删除同级class的实现代码
2018/04/04 Javascript
vue-router 源码实现前端路由的两种方式
2018/07/02 Javascript
了解在JavaScript中将值转换为字符串的5种方法
2019/06/06 Javascript
如何提升vue.js中大型数据的性能
2019/06/21 Javascript
更优雅的微信小程序骨架屏实现详解
2019/08/07 Javascript
python 内置函数filter
2017/06/01 Python
Python实现压缩和解压缩ZIP文件的方法分析
2017/09/28 Python
Python实现压缩文件夹与解压缩zip文件的方法
2018/09/01 Python
django认证系统 Authentication使用详解
2019/07/22 Python
关于Numpy数据类型对象(dtype)使用详解
2019/11/27 Python
python PIL/cv2/base64相互转换实例
2020/01/09 Python
关于tf.reverse_sequence()简述
2020/01/20 Python
python利用appium实现手机APP自动化的示例
2021/01/26 Python
银行营业厅大堂经理岗位职责
2014/01/06 职场文书
主要负责人任命书
2014/06/06 职场文书
师范类求职信
2014/06/21 职场文书
学校教研活动总结
2014/07/02 职场文书
离婚答辩状怎么写
2015/05/22 职场文书
2016年4月份红领巾广播稿
2015/12/21 职场文书