uniapp怎样做侧边导航栏

1. 什么是uniapp

Uniapp是一款基于Vue.js开发的跨平台应用开发框架,可同时支持多个平台的应用开发,包括iOS、Android、Web、微信小程序、支付宝小程序等,其开发模式是一套代码,多端运行,节约开发成本,提高开发效率。

2.侧边导航栏是什么

侧边导航栏是一种常见的网站或移动应用界面设计模式,通过在网页或移动应用的一侧设置可滑动的面板,来显示跟当前浏览页面相关的导航信息,让用户能够快速浏览并访问相关内容。

3.unnapp怎样做侧边导航栏

3.1 安装uniapp

首先需要安装uniapp,安装方式如下:

npm install -g @vue/cli

3.2 创建uniapp项目

使用Vue CLI 3 创建Uniapp项目,具体步骤如下:

创建项目文件夹,并在文件夹中打开命令行窗口;

输入如下命令:

vue create -p dcloudio/uni-preset-vue my-project

其中 -p dcloudio/uni-preset-vue 是指定使用uni-preset-vue这个预设模板创建uni-app(这里所说的预设模板,可以理解为一堆配置文件和初始化文件集)。

3.3 新建uniapp页面

在步骤 3.2 创建完项目后,需要新建uniapp页面进行开发,具体步骤如下:

在项目中创建一个新的页面,如:Nav.vue。在ststic文件夹中准备好所需的图片资源,例如icon、背景图、标题等素材;

在 Nav.vue 页面中,使用 “uni-view” 组件创建一个盛放整个导航菜单的容器,如下:

//Nav.vue

<template>

<view class='nav-container'>

<!-- Todo: 导航菜单内容 -->

</view>

</template>

<style>

/* Todo: 导航菜单的样式 */

</style>

通过以上代码片段,已经可以在 Nav.vue 中创建一个基本的导航菜单的框架结构,但是目前菜单并没有任何实际内容。接着需要在前面的代码中添加进一些内容和样式,完成导航菜单的具体设计。

3.4 添加菜单内容与样式

接下来需要在 Nav.vue 的模板中增加一些具体的菜单内容和样式,并对菜单的布局和内容进行调整,如下:

//Nav.vue

<template>

<view class='nav-container'>

<view class='nav-header'>

<image class='nav-logo' :src='/static/img/logo.png' />

<view class='nav-title'>My App</view>

</view>

<view class='nav-items'>

<view class='nav-item' @click='gotoHome'>

<image class='nav-item-icon' :src='/static/img/home.png' />

<view class='nav-item-text'>主页</view>

</view>

<view class='nav-item' @click='gotoNews'>

<image class='nav-item-icon' :src='/static/img/news.png' />

<view class='nav-item-text'>新闻</view>

</view>

<view class='nav-item' @click='gotoAbout'>

<image class='nav-item-icon' :src='/static/img/about.png' />

<view class='nav-item-text'>关于</view>

</view>

<view class='nav-item' @click='gotoContact'>

<image class='nav-item-icon' :src='/static/img/contact.png' />

<view class='nav-item-text'>联系</view>

</view>

</view>

</view>

</template>

<style>

/* Todo: 导航菜单的样式 */

.nav-container {

position: fixed;

top: 0;

left: 100vw;

width: 80%;

height: 100vh;

background-color: #f0f1f5;

overflow-x: hidden;

overflow-y: auto;

transition: left .3s ease-out;

}

.nav-header {

display: flex;

flex-direction: row;

align-items: center;

padding: 12px 20px;

font-size: 20px;

color: #2085ca;

background-color: #f5f5f7;

}

.nav-logo {

width: 50px;

height: 50px;

}

.nav-title {

margin-left: 20px;

}

.nav-items {

padding: 20px;

}

.nav-item {

display: flex;

flex-direction: row;

margin: 20px 0px;

cursor: pointer;

transition: background-color .3s ease-out;

}

.nav-item:hover {

background-color: #e6e7ee;

}

.nav-item-icon {

width: 30px;

height: 30px;

}

.nav-item-text {

margin-left: 12px;

font-size: 16px;

color: #333;

}

</style>

在上述代码中,实现了以下功能:

整个导航菜单包含一个 Header 和菜单 Item 两个区域的结构;

在视觉上,导航菜单从屏幕右侧滑动进入屏幕;

Header 部分显示了网站或 App 的 logo 和名称,使得菜单的视觉统一性更加强;

Item 部分的样式,每个菜单 Item 包含一个 icon 和一个文本描述,并且具有 hover 状态下的背景色高亮效果;

通过事件绑定,点击菜单项将可以跳转到对应的页面。

3.5 给菜单设定动画效果

最后一步就是进行菜单的动画效果设置,在菜单组件上添加一个 transition 的属性值,实现菜单的滑动功能,具体实现如下:

//Nav.vue

<template>

<view class='nav-container' :style='{ left: isShow ? "20vw" : "100vw" }'>

<view class='nav-header'>

<image class='nav-logo' :src='/static/img/logo.png' />

<view class='nav-title'>My App</view>

<image class='nav-close' :src='/static/img/close.png' @click='toggleShow' />

</view>

<view class='nav-items'>

<view class='nav-item' @click='gotoHome'>

<image class='nav-item-icon' :src='/static/img/home.png' />

<view class='nav-item-text'>主页</view>

</view>

<view class='nav-item' @click='gotoNews'>

<image class='nav-item-icon' :src='/static/img/news.png' />

<view class='nav-item-text'>新闻</view>

</view>

<view class='nav-item' @click='gotoAbout'>

<image class='nav-item-icon' :src='/static/img/about.png' />

<view class='nav-item-text'>关于</view>

</view>

<view class='nav-item' @click='gotoContact'>

<image class='nav-item-icon' :src='/static/img/contact.png' />

<view class='nav-item-text'>联系</view>

</view>

</view>

</view>

</template>

<script>

export default {

data() {

return {

isShow: false

}

},

methods: {

toggleShow() {

this.isShow = !this.isShow;

},

gotoHome() {

uni.navigateTo({

url: '/pages/home/home'

})

},

gotoNews() {

uni.navigateTo({

url: '/pages/news/news'

})

},

gotoAbout() {

uni.navigateTo({

url: '/pages/about/about'

})

},

gotoContact() {

uni.navigateTo({

url: '/pages/contact/contact'

})

}

}

}

</script>

<style>

/* Todo: 导航菜单的样式 */

.nav-container {

position: fixed;

top: 0;

left: 100vw;

width: 80%;

height: 100vh;

background-color: #f0f1f5;

overflow-x: hidden;

overflow-y: auto;

transition: left .3s ease-out;

}

.nav-container.show {

left: 20vw;

}

.nav-header {

display: flex;

flex-direction: row;

align-items: center;

padding: 12px 20px;

font-size: 20px;

color: #2085ca;

background-color: #f5f5f7;

}

.nav-logo {

width: 50px;

height: 50px;

}

.nav-title {

margin-left: 20px;

}

.nav-close {

width: 30px;

height: 30px;

margin-left: auto;

}

.nav-items {

padding: 20px;

}

.nav-item {

display: flex;

flex-direction: row;

margin: 20px 0px;

cursor: pointer;

transition: background-color .3s ease-out;

}

.nav-item:hover {

background-color: #e6e7ee;

}

.nav-item-icon {

width: 30px;

height: 30px;

}

.nav-item-text {

margin-left: 12px;

font-size: 16px;

color: #333;

}

</style>

通过以上代码片段,已经可以实现从右侧滑入菜单,滑出菜单,并且有 hover 状态下的菜单高亮。

总结

在以上的步骤中,我们使用了 uniapp 框架,创建了一个具有导航菜单的完整页面,并且设置了动画效果。经过这么多步骤,我们终于完成了一个类似于 App 自带导航菜单和网站 Side Navigation 的效果。希望通过这篇文章的帮助,读者可以迅速掌握uniapp实现侧边导航菜单的方法。