search
HomeWeb Front-enduni-appHow 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>
    <ul>
      <li>首页</li>
      <li>新闻</li>
      <li>关于我们</li>
      <li>联系我们</li>
    </ul>
  </div>
</template>

<script>
export default {
  data() {
    return {
      activeIndex: 0
    };
  },
  methods: {
    handleClick(index) {
      this.activeIndex = index;
    }
  }
};
</script>

<style>
.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 id="pageTitle">{{ pageTitle }}</h2>
    <p>{{ pageContent }}</p>
  </div>
</template>

<script>
import { EventBus } from &#39;@/main&#39;;

export default {
  data() {
    return {
      pageTitle: &#39;首页&#39;,
      pageContent: &#39;欢迎来到我们的网站!&#39;
    };
  },
  created() {
    EventBus.$on(&#39;menu-item-clicked&#39;, index => {
      switch (index) {
        case 0:
          this.pageTitle = &#39;首页&#39;;
          this.pageContent = &#39;欢迎来到我们的网站!&#39;;
          break;
        case 1:
          this.pageTitle = &#39;新闻&#39;;
          this.pageContent = &#39;这里是我们的最新消息。&#39;;
          break;
        case 2:
          this.pageTitle = &#39;关于我们&#39;;
          this.pageContent = &#39;了解我们的历史和团队。&#39;;
          break;
        case 3:
          this.pageTitle = &#39;联系我们&#39;;
          this.pageContent = &#39;与我们联系。我们非常期待与您合作!&#39;;
          break;
        default:
          this.pageTitle = &#39;首页&#39;;
          this.pageContent = &#39;欢迎来到我们的网站!&#39;;
      }
    });
  }
};
</script>

<style>
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!

Statement
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
How do you debug issues on different platforms (e.g., mobile, web)?How do you debug issues on different platforms (e.g., mobile, web)?Mar 27, 2025 pm 05:07 PM

The article discusses debugging strategies for mobile and web platforms, highlighting tools like Android Studio, Xcode, and Chrome DevTools, and techniques for consistent results across OS and performance optimization.

What debugging tools are available for UniApp development?What debugging tools are available for UniApp development?Mar 27, 2025 pm 05:05 PM

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

How do you perform end-to-end testing for UniApp applications?How do you perform end-to-end testing for UniApp applications?Mar 27, 2025 pm 05:04 PM

The article discusses end-to-end testing for UniApp applications across multiple platforms. It covers defining test scenarios, choosing tools like Appium and Cypress, setting up environments, writing and running tests, analyzing results, and integrat

What are the different types of testing that you can perform in a UniApp application?What are the different types of testing that you can perform in a UniApp application?Mar 27, 2025 pm 04:59 PM

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

What are some common performance anti-patterns in UniApp?What are some common performance anti-patterns in UniApp?Mar 27, 2025 pm 04:58 PM

The article discusses common performance anti-patterns in UniApp development, such as excessive global data use and inefficient data binding, and offers strategies to identify and mitigate these issues for better app performance.

How can you use profiling tools to identify performance bottlenecks in UniApp?How can you use profiling tools to identify performance bottlenecks in UniApp?Mar 27, 2025 pm 04:57 PM

The article discusses using profiling tools to identify and resolve performance bottlenecks in UniApp, focusing on setup, data analysis, and optimization.

How can you optimize network requests in UniApp?How can you optimize network requests in UniApp?Mar 27, 2025 pm 04:52 PM

The article discusses strategies for optimizing network requests in UniApp, focusing on reducing latency, implementing caching, and using monitoring tools to enhance application performance.

How can you optimize images for web performance in UniApp?How can you optimize images for web performance in UniApp?Mar 27, 2025 pm 04:50 PM

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

See all articles

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Tools

Atom editor mac version download

Atom editor mac version download

The most popular open source editor

SublimeText3 Linux new version

SublimeText3 Linux new version

SublimeText3 Linux latest version

mPDF

mPDF

mPDF is a PHP library that can generate PDF files from UTF-8 encoded HTML. The original author, Ian Back, wrote mPDF to output PDF files "on the fly" from his website and handle different languages. It is slower than original scripts like HTML2FPDF and produces larger files when using Unicode fonts, but supports CSS styles etc. and has a lot of enhancements. Supports almost all languages, including RTL (Arabic and Hebrew) and CJK (Chinese, Japanese and Korean). Supports nested block-level elements (such as P, DIV),

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

SecLists

SecLists

SecLists is the ultimate security tester's companion. It is a collection of various types of lists that are frequently used during security assessments, all in one place. SecLists helps make security testing more efficient and productive by conveniently providing all the lists a security tester might need. List types include usernames, passwords, URLs, fuzzing payloads, sensitive data patterns, web shells, and more. The tester can simply pull this repository onto a new test machine and he will have access to every type of list he needs.