Home > Article > Web Front-end > Detailed answer to the difference between scoped css and css module in css scope
This article brings you relevant knowledge about the difference between scoped css and css module. Both scoped css and css module are used to control the local scope of css and prevent duplication of class names. So what is the difference between the two? Well, I hope it helps everyone.
scoped css and css module are both designed to control the local scope of css and prevent problems such as duplication of class names. So what's the difference between the two?
1.1. Explanation
Regenerates class names for all class names, effectively avoiding the problems of css weight and class name duplication. css module directly replaces the class name, eliminating the possibility of the user setting the class name to affect the component style, so there is no need to rack your brains for naming.
1.2 Implementation Principle
By adding a hash string suffix to the style name, the compiled style in a specific scope context can be globally unique.
1.3 Usage
//webpack.base.conf.jsmodule: { rules: [ // ... 其它规则省略 { test: /\.css$/, use: [ 'vue-style-loader', { loader: 'css-loader', options: { // 开启 CSS Modules modules: true, // 自定义生成的类名 localIdentName: '[local]_[hash:base64:8]' } } ] } ] }
<style module>.red { color: red;}.bold { font-weight: bold;}</style>
<template> <p :class="$style.red"> This should be red </p></template><template> <p> <p :class="{ [$style.red]: isRed }"> Am I red? </p> <p :class="[$style.red, $style.bold]"> Red and bold </p> </p></template>
<script>export default { created () { console.log(this.$style.red) // -> "red_1VyoJ-uZ" // 一个基于文件名和类名生成的标识符 }}</script>
1.4 Usage effect
<template> <p :class="$style.gray"> Im gray </p></template><style module>.gray { color: gray;}</style>
Result after compilation:
//编译结果<p class="gray_3FI3s6uz">Im gray</p>.gray_3FI3s6uz { color: gray;}
1.5 Notes
2.1 Implementation Principle
Vue ensures uniqueness by adding unique and non-repeating tags to the DOM structure and css style. Achieve the purpose of style privatization and modularization. It is impossible to completely avoid the problem of css weight and class name duplication.
2.2 Usage method
Add the scoped attribute to the < style > tag
2.3 Usage effect
<style scoped>h1 { color: #f00;}</style>
Compiled result:
h1[data-v-4c3b6c1c] { color: #f00;}
2.4 Disadvantages
The actual effect of css module is better than that of scoped, and the configuration of css module is not difficult, so I recommend css module more.
(Learning video sharing: css video tutorial)
The above is the detailed content of Detailed answer to the difference between scoped css and css module in css scope. For more information, please follow other related articles on the PHP Chinese website!