首页 > 其他分享 >vue3实现自定义导航菜单

vue3实现自定义导航菜单

时间:2024-11-30 19:30:54浏览次数:12  
标签:菜单 name 自定义 vue Vue vue3 组件 pages 路由

一、创建项目

        1. 打开HBuilder X

图1

        2. 新建一个空项目

        文件->新建->项目->uni-app

        填写项目名称:vue3demo

        选择项目存放目录:D:/HBuilderProjects

        一定要注意vue的版本,当前选择的版本为vue3

图2

        点击“创建”之后进入项目界面

图3

        其中各文件的作用

        (1)pages是存放页面的文件夹

        (2)Static是存放图片等资源的文件夹

        (3)Manifest.json是项目的配置文件

        (4)Pages.json是项目的页面配置文件

二、自定义导航菜单实现

        在 Vue 3 中实现自定义导航菜单涉及多个步骤,包括创建组件、定义数据、处理路由(如果使用Vue Router),以及应用样式。

        1. 创建导航菜单组件

        (1)新建组件存放的文件夹。在项目vue3demo上右键->新建->目录,目录名称:components(不能更改)。

        (2)在components下,创建一个新的Vue组件文件,比如NavMenu.vue,用于定义导航菜单的结构和样式。

图4

        添加路由链接: 在你的Vue组件中,你可以使用<router-link>组件来创建导航链接。当用户点击这些链接时,Vue Router会根据URL的变化自动渲染对应的组件,实现页面之间的无刷新切换。

        代码如下:

<template>
	<nav class="nav-menu">
	    <ul>
	      <li v-for="item in menuItems" :key="item.name">
	        <router-link :to="item.route">{{ item.name }}</router-link>
	      </li>
	    </ul>
	</nav>
</template>

<script>
	export default {
	  name: 'NavMenu',
	  data() {
	    return {
	      menuItems: [
			{ name: '首页', route: '/pages/index/index' },
	        { name: '列表', route: '/pages/list/list' },
	        { name: '关于', route: '/pages/about/about' },
	        { name: '联系', route: '/pages/contact/contact' },
	        // 添加更多菜单项
	      ],
	    };
	  },
	};
</script>

<style>
.nav-menu {
    position: fixed; /* 固定定位 */
    bottom: 0; /* 底部对齐 */
    left: 0; /* 左侧对齐 */
    width: 100%; /* 全宽 */
    background-color: #ccc; /* 背景颜色 */
    color: #fff; /* 文字颜色 */
    text-align: center; /* 文字居中 */
    padding: 10px 0; /* 内边距 */
    box-shadow: 0 -1px 5px rgba(0, 0, 0, 0.1); /* 底部阴影 */
}
.nav-menu ul {
    list-style: none; /* 移除列表样式 */
    padding: 0; /* 移除内边距 */
    margin: 0; /* 移除外边距 */
    display: flex; /* Flexbox布局 */
    justify-content: center; /* 子项居中 */
}
.nav-menu li {
  margin: 0 15px; /* 子项之间的间距 */
}
.nav-menu a {
  color: #fff; /* 链接颜色 */
    text-decoration: none; /* 移除下划线 */
}
.nav-menu a:hover {
  color: #007bff;
}
</style>

        2. 配置路由(使用Vue Router)

        (1)Vue 3项目中安装Vue Router

        确保项目环境:确保你的开发环境中已经安装了Node.js(可以直接在官网https://nodejs.org/zh-cn下载安装)和npm。

        安装Vue Router:在你的项目根目录下,打开命令行工具(可以直接打开HBuilder X的“终端”),并运行命令来安装Vue Router:npm install vue-router。

图5

        (2)创建路由配置       

        在项目根目录下,创建一个名为router的文件夹,并在其中新建一个index.js文件。在 router/index.js中配置Vue Router的路由规则。

//从vue-router包中导入了createRouter和createWebHistory函数。
import { createRouter, createWebHistory } from 'vue-router';
//以下为示例,当前案例没有用到
import Index from '../pages/index/index.vue';
import List from '../pages/list/list.vue';
import About from '../pages/about/about.vue';
import Contact from '../pages/contact/contact.vue';
 
// 定义路由规则
const routes = [
	//每个路由规则都是一个对象
	//包含path(路径)、name(路由名称,可选)、component(要渲染的组件)等属性
	//以下为示例,当前案例没有用到
   { path: '/', name: 'Index', component: Index },
   { path: '/list', name: 'List', component: List },
   { path: '/about', name: 'About', component: About },
   { path: '/contact', name: 'Contact', component: Contact },
   // 可以添加更多路由
];
 
// 创建路由实例并传入路由规则和路由历史记录模式
const router = createRouter({
  history: createWebHistory(process.env.BASE_URL),
  routes,
});
 
export default router;

        (3)使用路由:在你的主入口文件(通常是main.js)中引入并使用这个路由实例。在main.js文件中任意位置增加下面的代码:

import './router/index.js'

        3. 在主应用组件中使用导航菜单组件

        在你的主应用组件中,引入并使用NavMenu组件。本示例是在/pages/index/index.vue中。插入的内容为下图红色框中的部分。

图6

<template>
	<view class="content">
		<image class="logo" src="/static/logo.png"></image>
		<view class="text-area">
			<text class="title">{{title}}</text>
		</view>
	</view>
	<div id="app">
		<NavMenu />
		<router-view />
	</div>
</template>

<script>
	import NavMenu from '/components/NavMenu.vue';
	export default {
		components: {
		    NavMenu,
		  },
		data() {
			return {
				title: 'Hello'
			}
		},
		onLoad() {
		},
		methods: {
		}
	}
</script>

<style>

</style>

三、效果

图7

        注意事项

        确保Vue Router版本与Vue 3兼容。

       如果你不使用Vue Router,可以简单地将<router-link>替换为<a>标签,并设置相应的href属性。

标签:菜单,name,自定义,vue,Vue,vue3,组件,pages,路由
From: https://blog.csdn.net/lzm12278828/article/details/144122592

相关文章

  • easyexcel导出头部样式设置,多个tab导出,头部自定义RGB颜色
    alibabaeasyexcel版本3.0.5,poi版本4.1.2,导出头部样式设置,多个tab导出,头部自定义RGB颜色 效果,头部三行,三个tab  下面贴出代码:packagecom.alpha.erp.dto.accounts;importcom.alibaba.excel.metadata.Head;importcom.alibaba.excel.metadata.data.WriteCellDa......
  • Unity Mask原理及自定义遮罩
    主要内容StencilBuffer是什么?自定义Shader来实现遮罩UnityMask的原理1.什么是StencilBufferGPU在渲染前会为每个像素点分配一个1字节(8位)大小的内存区域,即StencilBuffer。在决定是否要渲染某个像素点之前,会将它当前的StencilBuffer的值与某个参考值(stencilID)进行指定......
  • gofiber: 用go-playground/validator校验参数,自定义错误信息
    一,go-playground/validator官方代码地址https://github.com/go-playground/validator二,安装$goget-ugithub.com/go-playground/validator/v10go:downloadinggithub.com/go-playground/validator/v10v10.23.0go:downloadinggithub.com/gabriel-vasile/mimetypev1.4.......
  • ios短视频开发,自定义缓存策略的实现
    ios短视频开发,自定义缓存策略的实现缓存所占用的空间往往会成为迫使用户卸载应用的最后一根稻草。开发者不能无上限对音视频资源进行缓存,通常的维护手法是通过限制空间大小,比如,用户通常可以接受视频类应用有1G左右的缓存空间,即时通信类应用也许会更大些。因此在ios短视频开发......
  • 如何使用CSS绘制一个汉堡式菜单
    使用CSS绘制汉堡式菜单图标,通常用三个水平线表示,可以通过以下几种方法实现:1.使用三个<div>元素:这是最直观的方法,使用三个div分别代表三条横线,然后通过CSS设置它们的样式。<divclass="hamburger-menu"><divclass="bar"></div><divclass="bar"></div>&......
  • uni-app vue3 获取 package.json 自定义环境变量
    一、初始化项目 二、添加 package.json 文件(必须)注意:文件里面不要写备注{ "uni-app":{ "scripts":{ "dev":{ "title":"开发版", "env":{ "ENV_TYPE":"dev", "UNI_PLATFORM&q......
  • SpringBoot3+Vue3+NaiveUI主流前端分离开发框架 | 小蚂蚁云
     项目介绍基于SpringBoot3、SpringSecurity、MybatisPlus、Vue3、TypeScript、Vite、NaiveUI、MySQL等技术栈实现的单体前后端分离后台管理系统;后端基于Java语言采用SpringBoot3、SpringSecurity、MybatisPlus、MySQL等主流技术栈,前端基于Vue3、TypeScript、Vite等技术栈实现......
  • SpringBoot3+Vue3+NaiveUI项目实例源码 | 小蚂蚁云
     项目介绍基于SpringBoot3、SpringSecurity、MybatisPlus、Vue3、TypeScript、Vite、NaiveUI、MySQL等技术栈实现的单体前后端分离后台管理系统;后端基于Java语言采用SpringBoot3、SpringSecurity、MybatisPlus、MySQL等主流技术栈,前端基于Vue3、TypeScript、Vite等技术栈实现......
  • TinyPro Vue v1.1.0 正式发布:增加细粒度权限管理、页签模式、多级菜单,支持 Webpack/Vi
    你好,我是Kagol,个人公众号:前端开源星球。视频教程:https://www.bilibili.com/video/BV1SUBRYGECg/为了提升前端开发效率,OpenTiny提供了一个跨平台的前端工程化CLI工具TinyCLI,为开发者提供一系列开发套件及工程插件,覆盖前端开发的整个链路,保证团队开发过程的一致性和可复制性......
  • vue3自定义指令实现截图
    依赖:•使用html2canvas(需要先安装:npminstallhtml2canvas)。绑定事件:•在目标DOM上绑定click事件。截图逻辑:•点击后调用html2canvas截取目标元素的截图。•使用Canvas的toDataURL()方法生成Base64图片。保存文件:•创建一个a标签,通过downloa......