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 MD4
Dec 20 Javascript
Js sort排序使用方法
Oct 17 Javascript
JS教程:window.location使用方法的区别介绍
Oct 04 Javascript
JavaScript基础语法、dom操作树及document对象
Dec 02 Javascript
javascript实现table表格隔行变色的方法
May 13 Javascript
Node.js 文件夹目录结构创建实例代码
Jul 08 Javascript
使用Node.js给图片加水印的方法
Nov 15 Javascript
利用js来实现缩略语列表、文献来源链接和快捷键列表
Dec 16 Javascript
微信小程序 生命周期和页面的生命周期详细介绍
Jan 19 Javascript
js实现返回顶部效果
Mar 10 Javascript
vue 不使用select实现下拉框功能(推荐)
May 17 Javascript
简单谈谈offsetleft、offsetTop和offsetParent
Dec 04 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和ACCESS写聊天室(二)
2006/10/09 PHP
几个学习PHP的网址
2006/11/25 PHP
PHP 模板高级篇总结
2006/12/21 PHP
php和javascript之间变量的传递实现代码
2012/12/19 PHP
编写PHP程序检查字符串中的中文字符个数的实例分享
2016/03/17 PHP
PHP实现将几张照片拼接到一起的合成图片功能【便于整体打印输出】
2017/11/14 PHP
php获取微信共享收货地址的方法
2017/12/21 PHP
javascript 词法作用域和闭包分析说明
2010/08/12 Javascript
用Jquery重写windows.alert方法实现思路
2013/04/03 Javascript
javascript 弹出的窗口返回值给父窗口具体实现
2013/11/23 Javascript
Egret引擎开发指南之创建项目
2014/09/03 Javascript
jQuery扁平化风格下拉框美化插件FancySelect使用指南
2015/02/10 Javascript
谈谈jQuery Ajax用法详解
2015/11/27 Javascript
BootStrap 智能表单实战系列(二)BootStrap支持的类型简介
2016/06/13 Javascript
js html css实现复选框全选与反选
2016/10/09 Javascript
原生JS仿QQ阅读点击展开、收起效果
2017/03/08 Javascript
基于Vue实现tab栏切换内容不断实时刷新数据功能
2017/04/13 Javascript
详解Vue 非父子组件通信方法(非Vuex)
2017/05/24 Javascript
jquery.validate表单验证插件使用详解
2017/06/21 jQuery
node.js中grunt和gulp的区别详解
2017/07/17 Javascript
JavaScript 值类型和引用类型的初次研究(推荐)
2017/07/19 Javascript
js与jQuery实现获取table中的数据并拼成json字符串操作示例
2018/07/12 jQuery
从组件封装看Vue的作用域插槽的实现
2019/02/12 Javascript
javascript利用canvas实现鼠标拖拽功能
2020/07/23 Javascript
详解利用django中间件django.middleware.csrf.CsrfViewMiddleware防止csrf攻击
2018/10/09 Python
Python函数中的可变长参数详解
2019/09/12 Python
英国女性时尚鞋类的潮流制造者:Koi Footwear
2018/10/19 全球购物
Perfume’s Club德国官网:在线购买香水
2019/04/08 全球购物
大学生写自荐信的技巧
2014/01/08 职场文书
阿德的梦教学反思
2014/02/06 职场文书
2014年旅游局法制宣传日活动总结
2014/11/01 职场文书
2014年妇女工作总结
2014/12/06 职场文书
优秀团队申报材料
2014/12/26 职场文书
2016年公共机构节能宣传周活动总结
2016/04/05 职场文书
Python实现学生管理系统(面向对象版)
2021/06/24 Python
Python tensorflow卷积神经Inception V3网络结构
2022/05/06 Python