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两段代码,两个小技巧
Feb 04 Javascript
jquery 学习笔记一
Apr 07 Javascript
你必须知道的JavaScript 中字符串连接的性能的一些问题
May 07 Javascript
一个不错的仿携程自定义数据下拉选择select
Sep 01 Javascript
javascript 实现 原路返回
Jan 21 Javascript
jQuery实现图片渐入渐出切换展示效果
Aug 15 Javascript
基于jquery实现轮播特效
Apr 22 Javascript
jQuery自定义组件(导入组件)
Nov 08 Javascript
JavaScript箭头(arrow)函数详解
Jun 04 Javascript
解决webpack打包速度慢的解决办法汇总
Jul 06 Javascript
Egg.js 中 AJax 上传文件获取参数的方法
Oct 10 Javascript
小程序实现上传视频功能
Aug 18 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 Squid中可缓存的动态网页设计
2008/09/17 PHP
谈PHP生成静态页面分析 模板+缓存+写文件
2009/08/17 PHP
php下使用iconv需要注意的问题
2010/11/20 PHP
PHP的基本常识小结
2013/07/05 PHP
thinkphp关于简单的权限判定方法
2017/04/03 PHP
phpstorm激活码2020附使用详细教程
2020/09/25 PHP
javascript下操作css的float属性的特殊写法
2007/08/22 Javascript
extjs fckeditor集成代码
2009/05/10 Javascript
基于jquery实现的可以编辑选择的下拉框的代码
2010/11/19 Javascript
jQuery密码强度检测插件passwordStrength用法实例分析
2015/10/30 Javascript
详解javascript获取url信息的常见方法
2016/12/19 Javascript
微信小程序如何获知用户运行小程序的场景教程
2017/05/17 Javascript
Vue实现动态显示textarea剩余字数
2017/05/22 Javascript
JS中将多个逗号替换为一个逗号的实现代码
2017/06/23 Javascript
webpack处理 css\less\sass 样式的方法
2017/08/21 Javascript
jquery 一键复制到剪切板的实例
2017/09/20 jQuery
利用Javascript开发一个二维周视图日历
2017/12/14 Javascript
jQuery实现滚动到底部时自动加载更多的方法示例
2018/02/18 jQuery
javascript(基于jQuery)实现鼠标获取选中的文字示例【测试可用】
2019/10/26 jQuery
vue实现计步器功能
2019/11/01 Javascript
微信小程序实现文件预览
2020/10/22 Javascript
React实现todolist功能
2020/12/28 Javascript
深入解析Python中函数的参数与作用域
2016/03/20 Python
python读取oracle函数返回值
2016/07/18 Python
python开发环境PyScripter中文乱码问题解决方案
2016/09/11 Python
详解如何在Apache中运行Python WSGI应用
2019/01/02 Python
Python实现LR1文法的完整实例代码
2020/10/25 Python
Python word文本自动化操作实现方法解析
2020/11/05 Python
台湾深度自由行旅游平台:Tripbaa趣吧
2017/10/10 全球购物
洛杉矶生活休闲而精致的基础品牌:Mika Jaymes
2018/01/07 全球购物
serialVersionUID具有什么样的特征
2014/02/20 面试题
期中考试后的反思
2014/02/08 职场文书
岗位职责怎么写
2014/03/14 职场文书
志愿者活动总结
2014/04/28 职场文书
Python面向对象之成员相关知识总结
2021/06/24 Python
Win11跳过联网界面创建本地管理账户的3种方法
2022/04/20 数码科技