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 相关文章推荐
js给onclick事件赋值,动态传参数实例解说
Mar 28 Javascript
用js来刷新当前页面保留参数的具体实现
Dec 23 Javascript
js中string转int把String类型转化成int类型
Aug 13 Javascript
javascript转换日期字符串为Date日期对象的方法
Feb 13 Javascript
JavaScript的模块化开发框架Sea.js上手指南
May 12 Javascript
JavaScript类型系统之布尔Boolean类型详解
Jun 26 Javascript
Javascript typeof与instanceof的区别
Oct 18 Javascript
JS原型与原型链的深入理解
Feb 15 Javascript
JS实现商品筛选功能
Aug 19 Javascript
webstorm添加*.vue文件支持
May 08 Javascript
使用vue 国际化i18n 实现多实现语言切换功能
Oct 11 Javascript
详解关于element级联选择器数据回显问题
Feb 20 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 5.3.0 安装分析心得
2009/08/07 PHP
yii的CURD操作实例详解
2014/12/04 PHP
PHP获取指定月份第一天和最后一天的方法
2015/07/18 PHP
CI框架整合smarty步骤详解
2016/05/19 PHP
php版微信公众号接口实现发红包的方法
2016/10/14 PHP
Laravel中批量赋值Mass-Assignment的真正含义详解
2017/09/29 PHP
PHP7 标准库修改
2021/03/09 PHP
Jquery Ajax的Get方式时需要注意URL地方
2011/04/07 Javascript
深入理解JavaScript系列(14) 作用域链介绍(Scope Chain)
2012/04/12 Javascript
自己实现string的substring方法 人民币小写转大写,数字反转,正则优化
2012/09/02 Javascript
javascript仿qq界面的折叠菜单实现代码
2012/12/12 Javascript
框架页面高度自动刷新的Javascript脚本
2013/11/01 Javascript
滚动条响应鼠标滑轮事件实现上下滚动的js代码
2014/06/30 Javascript
node.js中的console.error方法使用说明
2014/12/10 Javascript
js 判断所选时间(或者当前时间)是否在某一时间段的实现代码
2015/09/05 Javascript
实例代码详解jquery.slides.js
2015/11/16 Javascript
jQuery实现的网页换肤效果示例
2016/09/20 Javascript
Vuejs仿网易云音乐实现听歌及搜索功能
2017/03/30 Javascript
原生javascript实现的全屏滚动功能示例
2017/09/19 Javascript
详解Vue中watch的详细用法
2018/11/28 Javascript
微信小程序实现弹框效果
2020/05/26 Javascript
vue项目使用$router.go(-1)返回时刷新原来的界面操作
2020/07/26 Javascript
antd中table展开行默认展示,且不需要前边的加号操作
2020/11/02 Javascript
使用Python的web.py框架实现类似Django的ORM查询的教程
2015/05/02 Python
Python判断某个用户对某个文件的权限
2016/10/13 Python
python 创建弹出式菜单的实现代码
2017/07/11 Python
python分布式编程实现过程解析
2019/11/08 Python
Python打开文件、文件读写操作、with方式、文件常用函数实例分析
2020/01/07 Python
Html5 Canvas实现图片标记、缩放、移动和保存历史状态功能 (附转换公式)
2020/03/18 HTML / CSS
什么是重载?CTS、CLS和CLR分别做何解释
2012/05/06 面试题
开业庆典答谢词
2014/01/18 职场文书
群众路线查摆问题整改措施
2014/10/10 职场文书
酒店人事主管岗位职责
2015/04/11 职场文书
学校安全管理制度
2015/08/06 职场文书
2019大学生实习报告
2019/06/21 职场文书
导游词之秦皇岛燕塞湖
2020/01/03 职场文书