Tips for eliminating the ripple effect when clicking on a q-list item

I have managed to create a sleek sidebar with a curved edge that seamlessly integrates into the body of the page. However, I am struggling to remove the semi-transparent ripple effect that appears when clicking on a list item. The current effect clashes with my desired white active state for the item. I want the only effect to be the custom styling for the active item.

    <template>
    <q-drawer show-if-above v-model="leftDrawerOpen" :width="drawerWidth" side="left" behavior="desktop">
      <div class="window-height bg-black text-white">
        <div class="q-py-xl">
          
        </div>
        <div class="q-py-xl">
          <q-list class="curved-parent-ul">
            <q-item v-for="(menuItem, index) in primaryMenuArr" :key="index" class="curved-child-li"
              :active="activeMenuItem === menuItem.name"
              @click="activeMenuItem = menuItem.name"
              active-class="active"
              clickable
              manual-focus>
              <q-icon size="sm" :name="menuItem.icon" class="absolute-center" />
            </q-item>
          </q-list>
        </div>
      </div>
    </q-drawer>
</template>

<script setup lang="ts">

  import { ref } from 'vue'

  const leftDrawerOpen: Ref<boolean> = ref(true)
  const drawerWidth: Ref<number> = ref(100)
  const activeMenuItem: Ref<string> = ref('Home')

  interface menuArr {
    name: string;
    ariaLabel: string;
    icon: string;
    link: string;
    }
  const primaryMenuArr: menuArr[ ] = [
    { name: 'Home', ariaLabel: 'Home', icon: 's_dashboard', link: '#' },
    { name: 'Upload', ariaLabel: 'Upload', icon: 's_drive_folder_upload', link: '#' },
    { name: 'Management', ariaLabel: 'Management', icon: 's_work', link: '#' },
    ]
</script>
<style scoped>
.curved-parent-ul {
  background: #000000;
  padding: 20px 0 10px 10px;
  width: 100%;
  transition: 0.5s;
  overflow: hidden;
}

.curved-parent-ul .curved-child-li {
  list-style: none;
  padding: 30px;
  padding-right: 0;
  color: white;
  font-size: 15px;
  margin-bottom: 30px;
  cursor: pointer;
  position: relative;
  transition: 0.5s;
  border-top-left-radius: 30px;
  border-bottom-left-radius: 30px;

}

.curved-parent-ul .curved-child-li.active:before {
  content: '';
  position: absolute;
  top:-30px;
  right: 0px;
  width: 30px;
  height:30px;
  background: transparent;
  border-radius: 50%;
  box-shadow: 15px 15px 0 #fff;
}

.curved-parent-ul .curved-child-li.active:after {
  content: '';
  position: absolute;
  bottom:-30px;
  right: 0px;
  width: 30px;
  height:30px;
  background: transparent;
  border-radius: 50%;
  box-shadow: 15px -15px 0 #fff;
}

.curved-parent-ul .curved-child-li.active {
  background: #fff;
  color: #000;
}
</style>

Answer №1

Utilize the no-ripple option

  <q-item clickable no-ripple>
    <q-item-section avatar>
      <q-icon color="primary" name="bluetooth"></q-icon>
    </q-item-section>

    <q-item-section>Icon serving as avatar</q-item-section>
  </q-item>

Link to example code snippet

Answer №2

:v-ripple="false"

Visit this link for more information on material ripples in Vue directives.

The instructional materials provided are quite comprehensive and informative.

Similar questions

If you have not found the answer to your question or you are interested in this topic, then look at other similar questions below or use the search

What value does a variable have by default when assigned to the ko.observable() function?

I am in the process of learning KnockoutJS and I have implemented code for folder navigation in a webmail client. In the view code, there is a comparison being made to check if the reference variable $data and $root.chosenFolderId() point to the same memor ...

Transferring information from Vue Component to Vuex storage

I am currently working with a Laravel API route that looks like this: Route::get('c/maintenances/{contractor_user_id}', 'Maintenance\Api\ApiContractorMaintenanceController@index'); The contractor_user_id parameter is dynamic ...

Discover the power of Vue.js 3 by seamlessly integrating anonymous functions within event handlers

Is it possible to invoke an anonymous function within an event handler in Vue.js 3? I came across several options on various websites: <button @click="return function() { console.log('test')}()">Click me</button> <butto ...

JavaScript - The progression of a virtual pet even when the user is offline

Currently, I am utilizing VueJS and MongoDB to develop an interactive virtual pet. Our approach involves storing user data in localStorage for easy access and retrieval. I'm exploring the concept of allowing the virtual pet to evolve autonomously (s ...

a fixed width layout with two columns aligned at the top

I've been struggling to design a two-column, top-aligned layout with fixed width for data that will be inserted into text in a WebView for an iPhone app. The first column needs to have a set width so the items in the second column can align perfectly. ...

What is the best way to connect an external CSS file to an HTML file in Pycharm?

Within the project directory, I've placed both the HTML and CSS files in the 'venv' library root folder. The HTML file is named index.html The CSS file is named styles.css This is the code snippet I used to link the CSS: <link rel=" ...

What could be causing the bootstrap columns to automatically shift onto separate lines?

Check out my code snippet: html, body { width: 100%; height: 100%; margin: 0; padding: 0; overflow-x: hidden; } .row { width: 100%; height: 80%; margin: 0px; padding: 0px; } body { background: #EFEFEF; } .container-fluid { wid ...

What is the best way to tally the frequency of words in a collection of URLs using JavaScript?

I have a JSON object in WordPress that contains a list of URLs. I would like to determine the frequency of occurrence of the second part of each URL. Currently, the code snippet below is able to extract the remaining part of the URL after the prefix https ...

transfer the information from a particular key in JavaScript to Vue

Just starting out with Vue and working on a web app. I have some data in the JavaScript that includes keys like title, author, etc. I'm looking to pass the value associated with the title key to Vue. How can I achieve this? I attempted using book.tit ...

Tips for getting Vue's element-ui validateField() function to function correctly in conjunction with v-if?

Kindly observe the password fields. The fields for 'Password' and 'Confirm Password' are displayed upon clicking on the 'Change Password?' button. The provided code functions properly and effectively validates the form using ...

Steps for making a button with both an image and text:

I am in the process of designing a basketball-themed website and I am looking to incorporate custom icons/buttons that link to various pages on the site. My vision is to have a unique button that features a circular image with accompanying text below it. ...

Can you explain the concepts of 'theme' and 'classes'?

Currently, I am working on a web application using React. I have chosen to incorporate the latest version of Material-UI for designing the user interface. During this process, I came across the demo examples provided by Material-UI (like ) In each demo ...

Arrange three images both vertically and horizontally at the center of the page

I am facing an issue with aligning a button and 2 images in a row on my website. Currently, this is how it looks: https://i.stack.imgur.com/yrQB6.png Here is the HTML code I am using: <div class="row text-center"> <div class="col-md-12"> ...

Vue Bootstrap toaster that magically disappears in an instant

My Vue Bootstrap Web-App (v2.21.2) is designed to utilize Toasts for displaying errors generated by the REST API client to users. When errors are caught in my components, a function is called that uses this.$bvToast.toast() to dynamically generate and dis ...

Forecast the width of an element using JavaScript

Is there a way to display tab elements on a webpage without them automatically wrapping into a new row if there are too many? Instead, I would like an arrow icon to appear at the end of the tabs so users can cycle between tab groups. The challenge is that ...

What is the recommended way to adjust the width of a paper-textarea element in Polymer 1.0?

Is there a way to adjust the width of a paper-textarea? I have tried using CSS selectors within Polymer 1.0 style tags, but it does not seem to be effective. The paper-textarea element is made up of paper-input-container. I attempted the following approach ...

Unlocking the Secret to Rotating a GroundOverlay on Google Maps

I am currently working on a map project that involves adding shapes and locations onto the map and saving it. However, I am encountering an issue with groundoverlay rotation. Even though there is no built-in rotation property in the Google Maps documenta ...

The proper way to link a style sheet within an MVC framework

Currently, I am working on transitioning a website that I created in the Atom text editor to an ASP.NET environment. To adhere to best practices, I have decided to implement the MODEL VIEW CONTROLLER design pattern in this project. While attempting to ad ...

Trouble aligning CSS UL/LI menu in the center

Could someone help me with centering my CSS UL menu? I've posted the code below, as I'm still learning CSS and would appreciate any guidance. I've only been able to center it by setting a fixed width and using HTML center tags, but I need t ...

The feature of Nuxt 3's tsconfig path seems to be malfunctioning when accessed from the

Take a look at my file structure below -shared --foo.ts -web-ui (nuxt project) --pages --index.vue --index.ts --tsconfig.json This is the tsconfig for my nuxt setup. { // https://v3.nuxtjs.org/concepts/typescript "exte ...