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 相关文章推荐
Dom 学习总结以及实例的使用介绍
Apr 24 Javascript
jquery 延迟执行实例介绍
Aug 20 Javascript
IE中鼠标经过option触发mouseout的解决方法
Jan 29 Javascript
浅析js中substring和substr的方法
Nov 09 Javascript
JS HTML5实现拖拽移动列表效果
Aug 27 Javascript
javascript中递归的两种写法
Jan 17 Javascript
提高Web性能的前端优化技巧总结
Feb 27 Javascript
实现图片首尾平滑轮播(JS原生方法—节流)
Oct 17 Javascript
在一个页面实现两个zTree联动的方法
Dec 20 Javascript
Node.js中读取TXT文件内容fs.readFile()用法
Oct 10 Javascript
JS实现联想、自动补齐国家或地区名称的功能
Jul 07 Javascript
Vue $attrs &amp; inheritAttr实现button禁用效果案例
Dec 07 Vue.js
详解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图片验证码代码
2008/03/27 PHP
在mysql数据库原有字段后增加新内容
2009/11/26 PHP
使用php计算排列组合的方法
2013/11/13 PHP
PHP调用C#开发的dll类库方法
2014/07/28 PHP
PHP经典面试题集锦
2015/03/19 PHP
PHP 7安装使用体验之性能大提升,兼容性强,扩展支持不够(升级PHP要谨慎)
2017/07/27 PHP
PHP实现找出有序数组中绝对值最小的数算法分析
2017/08/07 PHP
PHP在同一域名下两个不同的项目做独立登录机制详解
2017/09/22 PHP
Ajax+PHP实现的模拟进度条功能示例
2019/02/11 PHP
在JavaScript中实现命名空间
2006/11/23 Javascript
JavaScript中Math对象使用说明
2008/01/16 Javascript
认识延迟时间为0的setTimeout
2008/05/16 Javascript
JavaScript 脚本将当地时间转换成其它时区
2009/03/19 Javascript
解决JS请求服务器gbk文件乱码的问题
2015/10/16 Javascript
AngularJS中实现用户访问的身份认证和表单验证功能
2016/04/21 Javascript
jquery 动态增加删除行的简单实例(推荐)
2016/10/12 Javascript
非常优秀的JS图片轮播插件Swiper的用法
2017/01/03 Javascript
JS实现移动端实时监听输入框变化的实例代码
2017/04/12 Javascript
Angular 4.x中表单Reactive Forms详解
2017/04/25 Javascript
jsTree事件和交互以及插件plugins详解
2017/08/29 Javascript
JavaScript实现表单注册、表单验证、运算符功能
2018/10/15 Javascript
JS实现打字游戏
2019/12/17 Javascript
详解Python做一个名片管理系统
2019/03/14 Python
Python queue队列原理与应用案例分析
2019/09/27 Python
python实现淘宝购物系统
2019/10/25 Python
python3+selenium获取页面加载的所有静态资源文件链接操作
2020/05/04 Python
Python如何telnet到网络设备
2021/02/18 Python
毕业生自我推荐
2013/11/04 职场文书
简历上的自我评价
2014/02/03 职场文书
2014年党课学习材料
2014/05/11 职场文书
大学考试作弊检讨书
2015/05/06 职场文书
电影雨中的树观后感
2015/06/15 职场文书
鲁滨逊漂流记读书笔记
2015/06/26 职场文书
怎样评估创业计划书是否有可行性?
2019/08/07 职场文书
详解PHP服务器如何在有限的资源里最大提升并发能力
2021/05/25 PHP
win10电脑双屏显示一个黑屏怎么办?win10电脑双屏显示一个黑屏解决方法
2022/07/15 数码科技