vue3实现自定义导航菜单

一、创建项目

        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属性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/887699.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

再学transformer

再学transformer 位置编码 位置编码 为什么需要位置编码 位置编码分为相对位置编码、绝对位置编码、旋转位置编码

BASLER工业相机维修不能触发拍照如何处理解决这个问题

BASLER工业相机维修不能触发拍照如何处理解决这个问题&#xff1f;最近遇到挺多工业相机维修咨询这个不能触发拍照的案例&#xff0c;所以今天优米佳维修的技术就抽空整理了这篇关于BASLER相机不能触发拍照的处理方法分享给大家。 当碰到巴斯勒工业相机不能触发拍照的问题&…

深入理解计算机系统,源码到可执行文件翻译过程:预处理、编译,汇编和链接

1.前言 从一个高级语言到可执行程序&#xff0c;要经过预处理、编译&#xff0c;汇编和链接四个过程。大家可以思考下&#xff0c;为什么要有这样的过程&#xff1f; 我们学习计算机之处&#xff0c;就应该了解到&#xff0c;计算机能够识别的只有二进制语言&#xff08;这是…

民安:助力提升城市安全水平

随着城市化进程的加速&#xff0c;平安城市的创建成为了社会治理的重要议题。为了解公众对平安城市创建的看法和评价&#xff0c;为提升城市安全水平提供参考&#xff0c;近期某市委托民安智库专业市场调查公司开展了一次安全感满意度调查。 本次调查围绕公共安全、个人安全、…

HTTP代理是什么,主要用来干嘛?

在探讨互联网通信和数据传输的广阔领域中&#xff0c;HTTP代理作为一个重要而广泛使用的工具&#xff0c;扮演着不可或缺的角色。本文将深入浅出地介绍HTTP代理的基本概念、工作原理及其主要应用场景。 一、HTTP代理的基本概念 HTTP代理&#xff0c;简而言之&#xff0c;是一…

“不可能三角”的“宿敌”,AI辅助技术撕开“第一道口子”

尽管&#xff0c;打破看得好病、看得起病和看得上病这个“不可能三角”&#xff0c;无法一蹴而就&#xff0c;但是在人工智能浪潮的推动下&#xff0c;“不可能”也在逐渐向“可能”转变。 近日&#xff0c;国家医保局在相关新闻发布会上表示&#xff0c;目前已编制发布17批立…

【Linux】剧幕中的灵魂更迭:探索Shell下的程序替换

&#x1f3ac; 个人主页&#xff1a;谁在夜里看海. &#x1f4d6; 个人专栏&#xff1a;《C系列》《Linux系列》《算法系列》 ⛰️ 一念既出&#xff0c;万山无阻 目录 &#x1f4d6;一、进程程序替换 1.替换的演示 ❓替换与执行流 ❓程序替换≠进程替换 2.替换的原理 …

【MySQL】数据库开发技术:内外连接与表的索引穿透深度解析

前言:本节内容主要讲解表的内连和外连以及索引的一部分。 注意&#xff1a; 索引是很重要的知识点。务必学习&#xff01;&#xff01;本节将会主要谈一谈什么是索引&#xff0c;如何理解索引。 以及怎么理解MySQL与磁盘的关系。 下面友友们开始学习吧&#xff01; ps&#xff…

Matlab Simulink HDL Coder开发流程(三)— 验证从Simulink模型生成的HDL代码

验证从Simulink模型生成的HDL代码 一、什么是HDL Test Bench&#xff08;测试台&#xff09;二、简单的计数器模型三、验证方法四、生成HDL Test Bench生成VHDL Test Bench生成Verilog Test Bench代码 五、查看HDL Test Bench文件六、运行仿真和验证生成的HDL代码七、在目标设备…

设计模式:11、迭代器模式(游标)

目录 0、定义 1、迭代器模式的四种角色 2、迭代器模式的UML类图 3、示例代码 4、迭代器的next()方法与集合的get(int index)方法的效率对比&#xff08;LinkedList为例&#xff09; 0、定义 提供一种方法顺序访问一个聚合对象中的各个元素&#xff0c;而又不需要暴露该对象…

基于SpringBoot的“招聘信息管理系统”的设计与实现(源码+数据库+文档+PPT)

基于SpringBoot的“招聘信息管理系统”的设计与实现&#xff08;源码数据库文档PPT) 开发语言&#xff1a;Java 数据库&#xff1a;MySQL 技术&#xff1a;SpringBoot 工具&#xff1a;IDEA/Ecilpse、Navicat、Maven 系统展示 系统功能结构图 系统首页界面图 企业招聘界面…

Linux高阶——1123—服务器基础服务器设备服务器基础能力

目录 1、服务器基础 1、服务器基本概述 2、服务器设计之初解决的问题 网络穿透 网络数据设备间的收发 3、服务器的类型C/S、B/S 2、服务器设备 将自己的服务器软件部署上线 3、代理服务器负载均衡&#xff0c;以及地址绑定方式 4、服务器的基础能力 1、服务器基础 1…

探索 Python 任务自动化的新境界:Invoke 库揭秘

文章目录 探索 Python 任务自动化的新境界&#xff1a;Invoke 库揭秘背景&#xff1a;为何选择 Invoke&#xff1f;什么是 Invoke&#xff1f;如何安装 Invoke&#xff1f;5个简单的库函数使用方法1. 定义任务2. 带参数的任务3. 运行 Shell 命令4. 任务参数化5. 列出任务 场景应…

docker部署nginx,并配置SSL证书

、拉取nginx镜像 docker pull nginx:latest 在此过程中会遇到网络的问题&#xff0c;导致镜像无法下载&#xff0c;这时候需要在服务器中配置下国内的镜像地址。下面包含近期最新的国内镜像&#xff0c;截至2024年11月27日&#xff1a; "https://<你的阿里云账号ID&…

使用NAS开启无纸化办公,Docker部署开源文档管理系统『Paperless-ngx』

使用NAS开启无纸化办公&#xff0c;Docker部署开源文档管理系统『Paperless-ngx』 哈喽小伙伴们好&#xff0c;我是Stark-C~ 对于文案类的办公场景来说&#xff0c;手头堆放最多的可能就是各种文档文件&#xff0c;以及各种用过的打印废纸。 这么多年来&#xff0c;不管是领…

ES 基本使用与二次封装

概述 基本了解 Elasticsearch 是一个开源的分布式搜索和分析引擎&#xff0c;基于 Apache Lucene 构建。它提供了对海量数据的快速全文搜索、结构化搜索和分析功能&#xff0c;是目前流行的大数据处理工具之一。主要特点即高效搜索、分布式存储、拓展性强 核心功能 全文搜索:…

nextjs+nestjs+prisma写todolist全栈项目

技术栈 nextjsnestjsprisma所学知识 Nextjs组件渲染,状态,路由docker启动Mysql容器prisma操作Mysql(CRUD)允许跨域请求APITanStack Query异步状态管理fetch api服务器组件预请求数据nestjs 管道和异常处理检测id是否正整数Docker启动Mysql容器 compose.yml name: todoLis…

矩阵的拼接

矩阵的拼接分为横向拼接和纵向拼接 注意&#xff1a;横向拼接要求两矩阵行数相同&#xff0c;纵向拼接要求两矩阵列数相同 h o r z c a t horzcat horzcat和 v e r t c a t vertcat vertcat函数 h o r z c a t ( a , b ) horzcat(a,b) horzcat(a,b)将 a a a和 b b b横向拼接&a…

决策树——基于乳腺癌数据集与cpu数据集实现

决策树——乳腺癌数据实现 4.1 训练决策树模型,并计算测试集的准确率 1. 读入数据 from sklearn import datasets from sklearn.tree import DecisionTreeClassifier from sklearn.model_selection import train_test_split from sklearn.metrics import confusion_matrix …

【ruby on rails】dup、deep_dup、clone的区别

一、区别 dup 浅复制&#xff1a;dup 方法创建对象的浅复制。 不复制冻结状态&#xff1a;dup 不会复制对象的冻结状态。 不复制单例方法&#xff1a;dup 不会复制对象的单例方法。 deep_dup 深复制&#xff1a;deep_dup 方法创建对象的深复制&#xff0c;递归复制嵌套的对象。…