vue+swiper实现侧滑菜单效果


Posted in Javascript onDecember 28, 2017

本文实例为大家分享了vue swiper实现侧滑菜单效果的具体代码,供大家参考,具体内容如下

先上效果图:

vue+swiper实现侧滑菜单效果

这个左右滑动以及上下滑动主要使用了Swiper的轮播功能,首先是该自定义组件的代码:

<template> 
 <div class="s-slider"> 
 <swiper :options="horizontalSwiperOptions" ref="horizontalSwiper"> 
  <swiper-slide class="left" ref="left" v-bind:style="{'background':getRandomColor()}"> 
  <slot name="left"></slot> 
  </swiper-slide> 
  <swiper-slide class="content"> 
  <swiper :options="verticalSwiperOptions" ref="verticalSwiper"> 
   <swiper-slide class="top" ref="top" v-bind:style="{'background':getRandomColor()}"> 
   <slot name="top"></slot> 
   </swiper-slide> 
   <swiper-slide class="content" ref="content" v-bind:style="{'background':getRandomColor()}"> 
   <slot name="content"></slot> 
   </swiper-slide> 
   <swiper-slide class="bottom" ref="bottom" v-bind:style="{'background':getRandomColor()}"> 
   <slot name="bottom"></slot> 
   </swiper-slide> 
  </swiper> 
  </swiper-slide> 
  <swiper-slide class="right" ref="right" v-bind:style="{'background':getRandomColor()}"> 
  <slot name="right"></slot> 
  </swiper-slide> 
 </swiper> 
 </div> 
</template> 
<script> 
 import {swiper, swiperSlide, swiperWraper} from 'vue-awesome-swiper' 
 export default { 
 name: "s-slider", 
 props: ['leftWidth','rightWidth','topHeight','bottomHeight'], 
 data() { 
  return { 
  horizontalSwiperOptions: { 
   slidesPerView: 'auto', 
   initialSlide: 0, 
   direction: 'horizontal' 
  }, 
  verticalSwiperOptions:{ 
   slidesPerView: 'auto', 
   initialSlide: 0, 
   direction: 'vertical' 
  } 
  } 
 }, 
 mounted() { 
  setTimeout(() => { 
  this._initMenuWidth(); 
  }, 20); 
 
 }, 
 methods: { 
  _initMenuWidth() { 
  this.$refs.left.$el.style.width = this.leftWidth; 
  this.$refs.right.$el.style.width = this.rightWidth; 
  this.$refs.top.$el.style.height = this.topHeight; 
  this.$refs.bottom.$el.style.height = this.bottomHeight; 
  this.horizontalSwiper.updateSlides(); 
  this.horizontalSwiper.slideTo(1, 1000, false); 
  this.verticalSwiper.updateSlides(); 
  this.verticalSwiper.slideTo(1, 1000, false); 
  }, 
  /*获取随机颜色*/ 
  getRandomColor() { 
  return "#" + ("00000" + ((Math.random() * 16777215 + 0.5) >> 0).toString(16)).slice(-6); 
  } 
 }, 
 computed: { 
  horizontalSwiper() { 
  return this.$refs.horizontalSwiper.swiper; 
  }, 
  verticalSwiper(){ 
  return this.$refs.verticalSwiper.swiper; 
  } 
 } 
 } 
</script> 
 
<style scoped lang="scss"> 
 @import "src/base/css/public/variable.scss"; 
 @import "swiper/dist/css/swiper.css"; 
 
 .s-slider { 
 height: 100%; 
 color: white; 
 .swiper-container { 
  @include fill-with-parent 
 } 
 } 
</style>

 该组件自定义了四个属性,分别是左右侧滑菜单的宽度,上下滑动菜单的高度,leftWdith、rightWidth、topHeight、bottomHeight,然后用了一个横向的轮播用来存放左滑菜单,中间内容,右滑菜单,然后在中间内容又放了一个纵向的轮播用来放置上滑菜单,内容以及下滑菜单,具体思路就是这样。在组件挂载的时候,需要根据父组件传入的数值去初始化四个菜单的宽高,初始化完毕宽高之后,还要调用swiper本身的updateSlides更新所有的slides,不然滑动的时候,还是按照没设置之前的宽高进行滑动。在父组件中调用:

<s-slider leftWidth="200px" rightWidth="300px" topHeight="100px" bottomHeight="150px"> 
  <div slot="left"> 
  left 
  </div> 
  <div slot="content"> 
  Content 
  </div> 
  <div slot="right"> 
  right 
  </div> 
  <div slot="top"> 
  top 
  </div> 
  <div slot="bottom"> 
  bottom 
  </div> 
 </s-slider>

不要忘了在父组件中还要引入这个vue组件。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
javascript实现颜色渐变的方法
Oct 30 Javascript
不要使用jQuery触发原生事件的方法
Mar 03 Javascript
JavaScript中的Promise使用详解
Jun 24 Javascript
jquery+ajax实现注册实时验证实例详解
Dec 08 Javascript
js实现input密码框提示信息的方法(附html5实现方法)
Jan 14 Javascript
全面解析Bootstrap中tab(选项卡)的使用方法
Jun 06 Javascript
js-FCC算法-No repeats please字符串的全排列(详解)
May 02 Javascript
详解探索 vuex 2.0 以及使用 vuejs 2.0 + vuex 2.0 构建记事本应用
Jun 16 Javascript
Three.JS实现三维场景
Dec 30 Javascript
微信小程序--获取用户地理位置名称(无须用户授权)的方法
Apr 29 Javascript
一文快速详解前端框架 Vue 最强大的功能
May 21 Javascript
Vue项目中使用WebUploader实现文件上传的方法
Jul 21 Javascript
swiper插件自定义切换箭头按钮
Dec 28 #Javascript
swiper移动端轮播插件(触碰图片之后停止轮播)
Dec 28 #Javascript
Vue组件通信之Bus的具体使用
Dec 28 #Javascript
基于Swiper实现移动端页面图片轮播效果
Dec 28 #Javascript
Swiper自定义分页器使用详解
Dec 28 #Javascript
swiper自定义分页器使用方法详解
Sep 14 #Javascript
JavaScript实现数值自动增加动画
Dec 28 #Javascript
You might like
PHP 文件系统详解
2012/09/13 PHP
php多层数组与对象的转换实例代码
2013/08/05 PHP
PHP把JPEG图片转换成Progressive JPEG的方法
2014/06/30 PHP
php读取目录及子目录下所有文件名的方法
2014/10/20 PHP
PHP基于Redis消息队列实现发布微博的方法
2017/05/03 PHP
Dom加载让图片加载完再执行的脚本代码
2008/05/15 Javascript
jQuery Ajax方法调用 Asp.Net WebService 的详细实例代码
2011/04/27 Javascript
扩展JavaScript功能的正确方法(译文)
2012/04/12 Javascript
Javascript实现简单的富文本编辑器附演示
2014/06/16 Javascript
jQuery对象和DOM对象之间相互转换的方法介绍
2015/02/28 Javascript
jQuery使用after()方法在元素后面添加多项内容的方法
2015/03/26 Javascript
Vuejs 用$emit与$on来进行兄弟组件之间的数据传输通信
2017/02/23 Javascript
微信小程序 自动登陆PHP源码实例(源码下载)
2017/05/08 Javascript
JScript实现表格的简单操作
2017/08/15 Javascript
原生JS实现循环Nodelist Dom列表的4种方式示例
2018/02/11 Javascript
Node.js搭建WEB服务器的示例代码
2018/08/15 Javascript
Python标准库之随机数 (math包、random包)介绍
2014/11/25 Python
通过Python来使用七牛云存储的方法详解
2015/08/07 Python
为什么你还不懂得怎么使用Python协程
2019/05/13 Python
python 函数的缺省参数使用注意事项分析
2019/09/17 Python
django 简单实现登录验证给你
2019/11/06 Python
Pycharm安装并配置jupyter notebook的实现
2020/05/18 Python
详解Python IO口多路复用
2020/06/17 Python
Python 内存管理机制全面分析
2021/01/16 Python
python将YUV420P文件转PNG图片格式的两种方法
2021/01/22 Python
世界领先的豪华床上用品供应商之一:Bedeck Home
2019/03/18 全球购物
英国的潮牌鞋履服饰商店:size?
2019/03/26 全球购物
C语言面试题
2013/05/19 面试题
汽车检测与维修应届毕业生求职信
2013/10/19 职场文书
群众路线教育党课主持词
2014/04/01 职场文书
工厂车间标语
2014/06/19 职场文书
解决Laravel使用验证时跳转到首页的问题
2021/11/17 PHP
HTML基本元素标签介绍
2022/02/28 HTML / CSS
pycharm安装深度学习pytorch的d2l包失败问题解决
2022/03/25 Python
Nginx+Tomcat负载均衡多实例详解
2022/04/11 Servers
Golang入门之计时器
2022/05/04 Golang