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 相关文章推荐
jquery实现的超出屏幕时把固定层变为定位层的代码
Feb 23 Javascript
30个最好的jQuery 灯箱插件分享
Apr 25 Javascript
基于JQuery实现CheckBox全选全不选
Jun 27 Javascript
JavaScript实现穷举排列(permutation)算法谜题解答
Dec 29 Javascript
js实现文字闪烁特效的方法
Dec 17 Javascript
js调用屏幕宽度的简单方法
Nov 14 Javascript
jquery判断页面网址是否有效的两种方法
Dec 11 Javascript
非常优秀的JS图片轮播插件Swiper的用法
Jan 03 Javascript
jQuery实现的监听导航滚动置顶状态功能示例
Jul 23 jQuery
详解Vue中的scoped及穿透方法
Apr 18 Javascript
vue移动端屏幕适配详解
Apr 30 Javascript
vue实现购物车的小练习
Dec 21 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+SQL 注入攻击的技术实现以及预防办法
2011/01/27 PHP
使用ob系列函数实现PHP网站页面静态化
2014/08/13 PHP
ThinkPHP提示错误Fatal error: Allowed memory size的解决方法
2015/02/12 PHP
yii2.0使用Plupload实现带缩放功能的多图上传
2015/12/22 PHP
非常有用的9个PHP代码片段
2016/04/06 PHP
Laravel 默认邮箱登录改成用户名登录的实现方法
2019/08/12 PHP
js二级地域选择的实现方法
2013/06/17 Javascript
js点击button按钮跳转到另一个新页面
2014/10/10 Javascript
JS实现适合于后台使用的动画折叠菜单效果
2015/09/21 Javascript
谈谈我对JavaScript原型和闭包系列理解(随手笔记8)
2015/12/24 Javascript
微信小程序 loading 详解及实例代码
2016/11/09 Javascript
从零开始学习Node.js系列教程五:服务器监听方法示例
2017/04/13 Javascript
浅谈Javascript中的对象和继承
2019/04/19 Javascript
js实现web调用摄像头 js截取视频画面
2019/04/21 Javascript
Vue如何获取数据列表展示
2019/12/11 Javascript
浅析Python中的序列化存储的方法
2015/04/28 Python
Python中的with...as用法介绍
2015/05/28 Python
Python numpy生成矩阵、串联矩阵代码分享
2017/12/04 Python
jupyter notebook引用from pyecharts.charts import Bar运行报错
2020/04/23 Python
Python简单计算文件MD5值的方法示例
2018/04/11 Python
Pycharm 操作Django Model的简单运用方法
2018/05/23 Python
详解Python列表赋值复制深拷贝及5种浅拷贝
2019/05/15 Python
python 中值滤波,椒盐去噪,图片增强实例
2019/12/18 Python
html5使用html2canvas实现浏览器截图的示例
2017/08/31 HTML / CSS
Diamondback自行车:拥有你的冒险
2019/04/22 全球购物
莫斯科珠宝厂官方网站:Miuz
2020/09/19 全球购物
毕业生个人求职信范文分享
2014/01/05 职场文书
片区教研活动总结
2014/07/02 职场文书
城市轨道交通工程职业生涯规划书范文
2014/09/16 职场文书
个人查摆问题整改措施
2014/10/04 职场文书
文明单位汇报材料
2014/12/24 职场文书
安阳殷墟导游词
2015/02/10 职场文书
合同审查法律意见书
2015/06/04 职场文书
纯CSS3实现div按照顺序出入效果
2021/07/15 HTML / CSS
Python制作表白爱心合集
2022/01/22 Python
mysql 乱码 字符集latin1转UTF8
2022/04/19 MySQL