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入门教程(5) js Screen屏幕对象
Jan 31 Javascript
js最简单的拖拽效果实现代码
Sep 24 Javascript
扩展IE中一些不兼容的方法如contains、startWith等等
Jan 09 Javascript
javascript在子页面中函数无法调试问题解决方法
Jan 17 Javascript
node.js中的fs.mkdir方法使用说明
Dec 17 Javascript
javascript动态添加删除tabs标签的方法
Jul 06 Javascript
JavaScript 2048 游戏实例代码(简单易懂)
Mar 25 Javascript
HTML Table 空白单元格补全的简单实现
Oct 13 Javascript
微信小程序 自己制作小组件实例详解
Dec 22 Javascript
微信小程序的动画效果详解
Jan 18 Javascript
jQuery快速高效制作网页交互特效
Feb 24 Javascript
初探js和简单隐藏效果的实例
Nov 23 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 批量删除 sql语句
2009/06/05 PHP
PHP 身份验证方面的函数
2009/10/11 PHP
PHP中使用BigMap实例
2015/03/30 PHP
PHP数组操作简单案例分析
2016/10/15 PHP
PHP获取本周所有日期或者最近七天所有日期的方法
2018/06/20 PHP
Hutia 的 JS 代码集
2006/10/24 Javascript
通过Mootools 1.2来操纵HTML DOM元素
2009/09/15 Javascript
查找iframe里元素的方法可传参
2013/09/11 Javascript
超漂亮的jQuery图片轮播特效
2015/11/24 Javascript
JavaScript基础知识之方法汇总结
2016/01/24 Javascript
【JS+CSS3】实现带预览图幻灯片效果的示例代码
2016/03/17 Javascript
原生javascript实现的一个简单动画效果
2016/03/30 Javascript
jQuery设置Cookie及删除Cookie实例分析
2016/04/15 Javascript
input file上传 图片预览功能实例代码
2016/10/25 Javascript
JavaScript中正则表达式判断匹配规则及常用方法
2017/08/03 Javascript
jquery 输入框查找关键字并提亮颜色的实例代码
2018/01/23 jQuery
基于Vue.js与WordPress Rest API构建单页应用详解
2019/09/16 Javascript
JQuery发送ajax请求时中文乱码问题解决
2019/11/14 jQuery
[01:23:24]DOTA2-DPC中国联赛 正赛 PSG.LGD vs Elephant BO3 第三场 2月7日
2021/03/11 DOTA
删除目录下相同文件的python代码(逐级优化)
2012/05/25 Python
python 判断网络连通的实现方法
2018/04/22 Python
Python3.6基于正则实现的计算器示例【无优化简单注释版】
2018/06/14 Python
Python重新加载模块的实现方法
2018/10/16 Python
opencv python 图像轮廓/检测轮廓/绘制轮廓的方法
2019/07/03 Python
python将四元数变换为旋转矩阵的实例
2019/12/04 Python
Python结合Window计划任务监测邮件的示例代码
2020/08/05 Python
关于python中导入文件到list的问题
2020/10/31 Python
一款利用css3的鼠标经过动画显示详情特效的实例教程
2014/12/29 HTML / CSS
html5 canvas手势解锁源码分享
2020/01/07 HTML / CSS
英国领先的高街书籍专家:Waterstones
2018/02/01 全球购物
Under Armour西班牙官网:美国知名的高端功能性运动品牌
2018/12/12 全球购物
医务工作者先进事迹材料
2014/01/26 职场文书
庆七一主持词
2015/06/29 职场文书
2015年全民创业工作总结
2015/07/23 职场文书
初三化学教学反思
2016/02/22 职场文书
Python绘画好看的星空图
2022/03/17 Python