CSS Modules
A <style module> tag is compiled as CSS Modules
and exposes the resulting CSS classes to the
component as an object under the key of $style:
<template>
<p :class="$style.red">This should be red</p>
</template>
<style module>
.red {
color: red;
}
</style>
Custom Inject Name
<template>
<p :class="classes.red">red</p>
</template>
<style module="classes">
.red {
color: red;
}
</style>
Usage with Composition API
The injected classes can be accessed in setup()
and <script setup> via the useCssModule API.
For <style module> blocks with custom injection
names, useCssModule accepts the matching
module attribute value as the first argument:
import { useCssModule } from 'vue'
// inside setup() scope...
// default, returns classes for <style module>
useCssModule()
// named, returns classes for <style module="classes">
useCssModule('classes')