Vuetify stepper change color and thickness of lines between steps

3 min read 23-09-2024
Vuetify stepper change color and thickness of lines between steps


When working with the Vuetify framework for Vue.js, many developers find the Stepper component useful for creating a multi-step form or a guided process. However, you might want to customize the appearance of the Stepper to fit your application's design. A common customization request is to change the color and thickness of the lines that connect the steps.

The Problem Scenario

Here's an example code snippet demonstrating a basic Vuetify Stepper implementation:

<template>
  <v-stepper v-model="step" color="purple" alternate-line>
    <v-stepper-header>
      <v-stepper-step :complete="step > 1" step="1">Step 1</v-stepper-step>
      <v-stepper-step :complete="step > 2" step="2">Step 2</v-stepper-step>
      <v-stepper-step :complete="step > 3" step="3">Step 3</v-stepper-step>
    </v-stepper-header>

    <v-stepper-content step="1">
      <v-card>
        <v-card-title>Step 1 Content</v-card-title>
        <v-card-actions>
          <v-btn @click="step++">Continue</v-btn>
        </v-card-actions>
      </v-card>
    </v-stepper-content>

    <v-stepper-content step="2">
      <v-card>
        <v-card-title>Step 2 Content</v-card-title>
        <v-card-actions>
          <v-btn @click="step++">Continue</v-btn>
          <v-btn @click="step--">Back</v-btn>
        </v-card-actions>
      </v-card>
    </v-stepper-content>

    <v-stepper-content step="3">
      <v-card>
        <v-card-title>Step 3 Content</v-card-title>
        <v-card-actions>
          <v-btn @click="step--">Back</v-btn>
          <v-btn @click="submit">Submit</v-btn>
        </v-card-actions>
      </v-card>
    </v-stepper-content>
  </v-stepper>
</template>

<script>
export default {
  data() {
    return {
      step: 1,
    };
  },
  methods: {
    submit() {
      // Handle form submission
    },
  },
};
</script>

Problem Statement

The above code presents a basic Stepper interface, but there are no custom styles applied to the connecting lines between the steps. In this article, we will show you how to modify the color and thickness of these lines for a more personalized look.

Customizing the Stepper Lines

To customize the Stepper lines, you can leverage Vuetify's built-in properties as well as some CSS. Below are the steps you'll follow to modify the color and thickness of the lines connecting the steps:

Step 1: Add CSS Styles

First, add the following CSS styles to your component or global stylesheet:

.v-stepper--active .v-stepper__line {
  background-color: #ff5722; /* Change to your desired color */
  height: 5px; /* Change to your desired thickness */
}
.v-stepper__line {
  background-color: #e0e0e0; /* Color of inactive line */
  height: 2px; /* Default thickness */
}

Step 2: Implement Custom Styles

Now, you just need to apply these styles. The .v-stepper--active .v-stepper__line selector will change the active step's connecting line color and thickness, while the .v-stepper__line will maintain the default styling for inactive steps.

Step 3: Update Your Component

The final code might look like this:

<template>
  <v-stepper v-model="step" color="purple" alternate-line>
    <v-stepper-header>
      <v-stepper-step :complete="step > 1" step="1">Step 1</v-stepper-step>
      <v-stepper-step :complete="step > 2" step="2">Step 2</v-stepper-step>
      <v-stepper-step :complete="step > 3" step="3">Step 3</v-stepper-step>
    </v-stepper-header>

    <!-- Step contents remain unchanged -->
    
  </v-stepper>
</template>

<style>
.v-stepper--active .v-stepper__line {
  background-color: #ff5722; /* Active line color */
  height: 5px; /* Active line thickness */
}
.v-stepper__line {
  background-color: #e0e0e0; /* Inactive line color */
  height: 2px; /* Inactive line thickness */
}
</style>

<script>
export default {
  data() {
    return {
      step: 1,
    };
  },
  methods: {
    submit() {
      // Handle form submission
    },
  },
};
</script>

Benefits of Customizing the Stepper

Customizing the Stepper lines provides several benefits, such as:

  • Improved User Experience: Visually clear differences between completed and current steps enhance usability.
  • Branding Consistency: Tailoring the design elements to match your brand increases cohesion across your application.
  • Enhanced Visual Appeal: Unique designs can make your application stand out and appear more professional.

Conclusion

Customizing the Vuetify Stepper is an effective way to align your component with your application's branding and improve user experience. By changing the color and thickness of the lines between steps, you can create a visually appealing and coherent interface.

For more details on Vuetify components, refer to the official Vuetify Documentation.

Additional Resources

By following the steps outlined in this article, you can easily customize your Vuetify Stepper to make it more visually appealing and aligned with your project's goals. Happy coding!