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 相关文章推荐
javascript学习笔记(十二) RegExp类型介绍
Jun 20 Javascript
JavaScript实现将数组数据添加到Select下拉框的方法
Aug 21 Javascript
jQuery实现折叠、展开的菜单组效果代码
Sep 16 Javascript
整理Javascript函数学习笔记
Dec 01 Javascript
JavaScript基础教程——入门必看篇
May 20 Javascript
javascript中获取class的简单实现
Jul 12 Javascript
AngularJS基础 ng-copy 指令实例代码
Aug 01 Javascript
javascript淘宝主图放大镜功能
Oct 20 Javascript
angularjs实现猜大小功能
Oct 23 Javascript
jQuery中内容过滤器简单用法示例
Mar 31 jQuery
利用vscode调试编译后的js代码详解
May 14 Javascript
使用vue实现通过变量动态拼接url
Jul 22 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中设置多级目录session的问题
2011/08/08 PHP
Laravel框架中扩展函数、扩展自定义类的方法
2014/09/04 PHP
PHP中error_log()函数的使用方法
2015/01/20 PHP
详解WordPress开发中wp_title()函数的用法
2016/01/07 PHP
PHP中FTP相关函数小结
2016/07/15 PHP
PHP会员找回密码功能的简单实现
2016/09/05 PHP
php使用自定义函数实现汉字分割替换功能示例
2017/01/30 PHP
Thinkphp实现站点静态化的方法详解
2017/03/21 PHP
TFDN图片播放器 不错自动播放
2006/10/03 Javascript
基于JQuery框架的AJAX实例代码
2009/11/03 Javascript
jquery 应用代码 方便的排序功能
2010/02/06 Javascript
js实时获取系统当前时间实例代码
2013/06/28 Javascript
jQuery过滤选择器:not()方法使用介绍
2014/04/20 Javascript
JS获得浏览器版本和操作系统版本的例子
2014/05/13 Javascript
jQuery操作DOM之获取表单控件的值
2015/01/23 Javascript
jquery中的工具使用方法$.isFunction, $.isArray(), $.isWindow()
2015/08/09 Javascript
angularJS与bootstrap结合实现动态加载弹出提示内容
2015/10/16 Javascript
javascript 小数乘法结果错误的处理方法
2016/07/28 Javascript
浅谈webpack打包过程中因为图片的路径导致的问题
2018/02/21 Javascript
解决npm管理员身份install时出现权限的问题
2018/03/16 Javascript
JS常用正则表达式超全集(密码强度校验,金额校验,IE版本,IPv4,IPv6校验)
2020/02/03 Javascript
用Python实现协同过滤的教程
2015/04/08 Python
python开发之for循环操作实例详解
2015/11/12 Python
各种Python库安装包下载地址与安装过程详细介绍(Windows版)
2016/11/02 Python
Python管理Windows服务小脚本
2018/03/12 Python
python3实现mysql导出excel的方法
2019/07/31 Python
python PyAutoGUI 模拟鼠标键盘操作和截屏功能
2019/08/04 Python
Pytorch DataLoader 变长数据处理方式
2020/01/08 Python
CSS3实现闪烁动画效果的方法
2015/02/09 HTML / CSS
德国奢侈品网上商城:Mytheresa
2016/08/24 全球购物
bonprix匈牙利:女士、男士和儿童服装
2019/07/19 全球购物
技校个人求职信范文
2014/01/25 职场文书
说好普通话圆梦你我他演讲稿
2014/09/21 职场文书
三提三创主题教育活动查摆整改措施
2014/10/25 职场文书
Python 如何利用ffmpeg 处理视频素材
2021/11/27 Python
苹果的回收机器人可以通过拆解iPhone获取大量的金和铜并外公布了环境保护最新进展
2022/04/21 数码科技