Search code examples
htmlcssvue.jstailwind-csstailwind-ui

convert multiple class name to one class in html


i am using tailwind pre defined css in my vue project .

<p class="bg-white text-black focus:text-red focus:bg-white-2 dark:text-white dark:bg-black dark:focus:bg-black-2 dark:focus:text-yellow">some text</p>
<p class="bg-white text-black focus:text-red focus:bg-white-2 dark:text-white dark:bg-black dark:focus:bg-black-2 dark:focus:text-yellow">some text2</p>
<p class="bg-white text-black focus:text-red focus:bg-white-2 dark:text-white dark:bg-black dark:focus:bg-black-2 dark:focus:text-yellow">some text 3</p>
<p class="bg-white text-black focus:text-red focus:bg-white-2 dark:text-white dark:bg-black dark:focus:bg-black-2 dark:focus:text-yellow">some other text</p>
<p class="bg-white text-black focus:text-red focus:bg-white-2 dark:text-white dark:bg-black dark:focus:bg-black-2 dark:focus:text-yellow">more texttttttttt</p>

as you can see for each tag i have to type all this multiple classes. what i want is that is there any way to make variable class to work on class like this

<p class="grouped-class">text</p>
<p class="grouped-class">text 2</p>
<p class="grouped-class">text 3</p>

Solution

  • You can use @apply

    HTML:

     <!-- Before extracting a custom class -->
    <button class="py-2 px-4 bg-blue-500 text-white font-semibold rounded-lg shadow-md hover:bg-blue-700 focus:outline-none focus:ring-2 focus:ring-blue-400 focus:ring-opacity-75">
      Save changes
    </button>
    
    <!-- After extracting a custom class -->
    <button class="btn-primary">
      Save changes
    </button>
    

    CSS:

    @tailwind base;
    @tailwind components;
    @tailwind utilities;
    
    @layer components {
      .btn-primary {
        @apply py-2 px-4 bg-blue-500 text-white font-semibold rounded-lg shadow-md hover:bg-blue-700 focus:outline-none focus:ring-2 focus:ring-blue-400 focus:ring-opacity-75;
      }
    }
    

    From the tailwind docs https://tailwindcss.com/docs/functions-and-directives#layer