How to change the menu style in uniapp after clicking on it
Today we will share how to implement the function of changing the style of a menu after clicking it in uniapp.
In many applications, menus are an integral part. Normally, when a user clicks on a menu item, it should reflect the fact that the option is selected. This means that the style of the options should change. In uniapp this is very easy to implement.
First, we need to create a simple menu component. Here we will create a basic navigation menu component. You can modify it according to your application needs.
<template> <div class="menu"> <ul> <li @click="handleClick(0)" :class="{active: activeIndex === 0}">首页</li> <li @click="handleClick(1)" :class="{active: activeIndex === 1}">新闻</li> <li @click="handleClick(2)" :class="{active: activeIndex === 2}">关于我们</li> <li @click="handleClick(3)" :class="{active: activeIndex === 3}">联系我们</li> </ul> </div> </template> <script> export default { data() { return { activeIndex: 0 }; }, methods: { handleClick(index) { this.activeIndex = index; } } }; </script> <style scoped> .menu ul { list-style-type: none; padding: 0; margin: 0; } .menu ul li { display: inline-block; padding: 16px; cursor: pointer; } .menu ul li.active { background-color: #007bff; color: #fff; } </style>
In the above example, we have a data property activeIndex which is used to track which menu item is selected. We also have a method handleClick that updates activeIndex when the user clicks on a menu item. Finally, in the styles section, we define a class called .active that has the styles for the selected menu item.
Now, if you use this menu component in your application, you will see that when you click on the menu item, its style changes. However, if you use this component in a different page, the previously selected menu item will be reset to its default value. In order to solve this problem, we need to use the event bus provided by uniapp.
The event bus is a framework-level event system that allows any component in the application to subscribe to and publish events. Using the event bus we can share data and state between components.
We first need to create an event bus in main.js:
import Vue from 'vue'; export const EventBus = new Vue();
As mentioned above, we only need to import vue and create an EventBus instance. Now we can use it in any component to publish and subscribe to events.
Now let's go back to the menu component and add the following code in the handleClick method:
handleClick(index) { this.activeIndex = index; EventBus.$emit('menu-item-clicked', index); }
Here, we use the EventBus instance to publish an item named "menu-item-clicked" event, passing the index of the currently selected menu item.
Now, in any other component of the application, we can subscribe to this event and update its selected menu item. Let us add the following code to the page component based on this idea:
<template> <div> <menu></menu> <h2>{{ pageTitle }}</h2> <p>{{ pageContent }}</p> </div> </template> <script> import { EventBus } from '@/main'; export default { data() { return { pageTitle: '首页', pageContent: '欢迎来到我们的网站!' }; }, created() { EventBus.$on('menu-item-clicked', index => { switch (index) { case 0: this.pageTitle = '首页'; this.pageContent = '欢迎来到我们的网站!'; break; case 1: this.pageTitle = '新闻'; this.pageContent = '这里是我们的最新消息。'; break; case 2: this.pageTitle = '关于我们'; this.pageContent = '了解我们的历史和团队。'; break; case 3: this.pageTitle = '联系我们'; this.pageContent = '与我们联系。我们非常期待与您合作!'; break; default: this.pageTitle = '首页'; this.pageContent = '欢迎来到我们的网站!'; } }); } }; </script> <style scoped> h2 { margin-top: 0; } </style>
Here, we introduce the EventBus created in main.js and subscribe to "menu-item-clicked" in the created life hook of the page component. event. When this event is fired, we update the page title and content with the passed menu item index.
Now, when you click an option in the menu, you will see your page title and content change accordingly.
To summarize, we have implemented the function of changing the style of a menu after clicking it in uniapp. We're using a basic navigation menu component and using an event bus to publish an event called "menu-item-clicked" when the menu item is clicked. Any component can subscribe to this event and update its selected menu item.
The above is the detailed content of How to change the menu style in uniapp after clicking on it. For more information, please follow other related articles on the PHP Chinese website!

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

AI Hentai Generator
Generate AI Hentai for free.

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics



The article discusses various testing types for UniApp applications, including unit, integration, functional, UI/UX, performance, cross-platform, and security testing. It also covers ensuring cross-platform compatibility and recommends tools like Jes

The article discusses debugging tools and best practices for UniApp development, focusing on tools like HBuilderX, WeChat Developer Tools, and Chrome DevTools.

The article discusses strategies to reduce UniApp package size, focusing on code optimization, resource management, and techniques like code splitting and lazy loading.

The article discusses optimizing images in UniApp for better web performance through compression, responsive design, lazy loading, caching, and using WebP format.

Lazy loading defers non-critical resources to improve site performance, reducing load times and data usage. Key practices include prioritizing critical content and using efficient APIs.

The article discusses managing complex data structures in UniApp, focusing on patterns like Singleton, Observer, Factory, and State, and strategies for handling data state changes using Vuex and Vue 3 Composition API.

UniApp manages global configuration via manifest.json and styling through app.vue or app.scss, using uni.scss for variables and mixins. Best practices include using SCSS, modular styles, and responsive design.

UniApp's computed properties, derived from Vue.js, enhance development by providing reactive, reusable, and optimized data handling. They automatically update when dependencies change, offering performance benefits and simplifying state management co
