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 相关文章推荐
CSS+JS构建的图片查看器
Jul 22 Javascript
轻松使用jQuery双向select控件Bootstrap Dual Listbox
Dec 13 Javascript
关于javascript原型的修改与重写(覆盖)差别详解
Aug 31 Javascript
jquery实现拖动效果(代码分享)
Jan 25 Javascript
如何在JavaScript中优雅的提取循环内数据详解
Mar 04 Javascript
详解vue-element Tree树形控件填坑路
Mar 26 Javascript
JS中实现浅拷贝和深拷贝的代码详解
Jun 05 Javascript
Node.JS发送http请求批量检查文件中的网页地址、服务是否有效可用
Nov 20 Javascript
Vue js with语句原理及用法解析
Sep 03 Javascript
vue-cli3中配置alias和打包加hash值操作
Sep 04 Javascript
ESLint 是如何检查 .vue 文件的
Nov 30 Vue.js
JavaScript WeakMap使用详解
Feb 05 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
javascript some()函数用法详解
2014/11/13 PHP
php中mt_rand()随机数函数用法
2014/11/24 PHP
Yii框架表单模型和验证用法
2016/05/20 PHP
php实现的XML操作(读取)封装类完整实例
2017/02/23 PHP
php面向对象基础详解【星际争霸游戏案例】
2020/01/23 PHP
PHP程序员必须知道的两种日志实例分析
2020/05/14 PHP
Avengerls vs KG BO3 第三场2.18
2021/03/10 DOTA
jquery命令汇总,方便使用jquery的朋友
2012/06/26 Javascript
JS+CSS实现的竖向简洁折叠菜单效果代码
2015/10/22 Javascript
基于JavaScript实现Json数据根据某个字段进行排序
2015/11/24 Javascript
jquery中live()方法和bind()方法区别分析
2016/06/23 Javascript
jQuery、layer实现弹出层的打开、关闭功能
2017/06/28 jQuery
jQuery中each循环的跳出和结束实例
2017/08/16 jQuery
jQuery实现滚动到底部时自动加载更多的方法示例
2018/02/18 jQuery
vue将时间戳转换成自定义时间格式的方法
2018/03/02 Javascript
详解Angular Forms中自定义ngModel绑定值的方式
2018/12/10 Javascript
laydate只显示时分 不显示秒的功能实现方法
2019/09/28 Javascript
[01:40]2014DOTA2国际邀请赛 三冰SOLO赛后采访恶搞
2014/07/09 DOTA
Python 调用VC++的动态链接库(DLL)
2008/09/06 Python
Python 存储字符串时节省空间的方法
2019/04/23 Python
html5视频媒体标签video的使用方法及完整参数说明详解
2019/09/27 HTML / CSS
构造器Constructor是否可被override?
2013/08/06 面试题
.NET程序员的数据库面试题
2012/10/10 面试题
计算机专业推荐信范文
2013/11/20 职场文书
班组长的岗位职责
2013/12/09 职场文书
革命先烈的英雄事迹材料
2014/02/15 职场文书
少先队学雷锋活动月总结
2014/03/09 职场文书
酒店管理专业自荐信
2014/05/23 职场文书
招标承诺书
2014/08/30 职场文书
计划生育证明格式范本
2014/09/12 职场文书
2015年六年级班主任工作总结
2015/10/15 职场文书
css 中多种边框的实现小窍门
2021/04/07 HTML / CSS
python3 hdf5文件 遍历代码
2021/05/19 Python
使用Python的开发框架Brownie部署以太坊智能合约
2021/05/28 Python
一篇文章弄懂Python关键字、标识符和变量
2021/07/15 Python
能用CSS实现的就不要麻烦JavaScript了
2021/10/05 HTML / CSS