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生成/解析dom的CDATA类型的字段的代码
Apr 22 Javascript
window.parent调用父框架时 ie跟火狐不兼容问题
Jul 30 Javascript
浅谈轻量级js模板引擎simplite
Feb 13 Javascript
JavaScript函数参数使用带参数名的方式赋值传入的方法
Mar 19 Javascript
利用imgareaselect辅助后台实现图片上传裁剪
Mar 02 Javascript
解析jquery easyui tree异步加载子节点问题
Mar 08 Javascript
Angularjs自定义指令实现分页插件(DEMO)
Sep 16 Javascript
实现div内部滚动条滚动到底部和顶部的代码
Nov 15 Javascript
javascript函数的节流[throttle]与防抖[debounce]
Nov 15 Javascript
在vue中实现简单页面逆传值的方法
Nov 27 Javascript
利用vue开发一个所谓的数独方法实例
Dec 21 Javascript
vue element-ui table表格滚动加载方法
Mar 02 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 不使用js实现页面跳转
2014/02/11 PHP
微信第三方登录(原生)demo【必看篇】
2017/05/26 PHP
Yii Framework框架开发微信公众平台示例
2020/04/26 PHP
记录几个javascript有关的小细节
2007/04/02 Javascript
如何用JavaScript动态呼叫函数(两种方式)
2013/05/03 Javascript
jquery如何扑捉回车键触发的事件
2014/04/24 Javascript
Node.js的特点和应用场景介绍
2014/11/04 Javascript
js预加载图片方法汇总
2015/06/15 Javascript
谈谈我对JavaScript DOM事件的理解
2015/12/18 Javascript
react实现pure render时bind(this)隐患需注意!
2017/03/09 Javascript
Vue中this.$router.push参数获取方法
2018/02/27 Javascript
vue-router 起步步骤详解
2019/03/26 Javascript
[01:15:56]2018DOTA2亚洲邀请赛3月30日 小组赛A组 TNC VS Newbee
2018/03/31 DOTA
Linux环境下MySQL-python安装过程分享
2015/02/02 Python
Python中条件判断语句的简单使用方法
2015/08/21 Python
Python实现微信自动好友验证,自动回复,发送群聊链接方法
2019/02/21 Python
关于不懂Chromedriver如何配置环境变量问题解决方法
2019/06/12 Python
Django框架教程之中间件MiddleWare浅析
2019/12/29 Python
三步解决python PermissionError: [WinError 5]拒绝访问的情况
2020/04/22 Python
OpenCV 之按位运算举例解析
2020/06/19 Python
CSS3中几个新增加的盒模型属性使用教程
2016/03/01 HTML / CSS
丝芙兰美国官网:SEPHORA美国
2016/08/03 全球购物
洛杉矶生活休闲而精致的基础品牌:Mika Jaymes
2018/01/07 全球购物
购买原创艺术品:Zatista
2019/11/09 全球购物
土耳其新趋势女装购物网站:Addax
2020/01/07 全球购物
优秀英语专业毕业生求职信
2013/11/23 职场文书
公司员工检讨书
2014/02/08 职场文书
春节联欢会策划方案
2014/05/16 职场文书
节能标语大全
2014/06/21 职场文书
2015年学校心理健康教育工作总结
2015/05/11 职场文书
廉洁自律证明
2015/06/24 职场文书
2016年教师节贺卡寄语
2015/12/04 职场文书
2016年“世界气象日”广播稿
2015/12/17 职场文书
vscode中使用npm安装babel的方法
2021/08/02 Javascript
MySQL的索引你了解吗
2022/03/13 MySQL
源码安装apache脚本部署过程详解
2022/09/23 Servers