Detailed answer to the difference between scoped css and css module in css scope

WBOY
Release: 2022-02-14 18:41:40
forward
2109 people have browsed it

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.

Detailed answer to the difference between scoped css and css module in css scope

Preface

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. css module

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

  • In the webpack.base.conf.js file, pass modules: true to css-loader to enable CSS Module.localIdentNameis the naming rule for setting the generated style.
//webpack.base.conf.jsmodule: { rules: [ // ... 其它规则省略 { test: /\.css$/, use: [ 'vue-style-loader', { loader: 'css-loader', options: { // 开启 CSS Modules modules: true, // 自定义生成的类名 localIdentName: '[local]_[hash:base64:8]' } } ] } ] }
Copy after login
  • Add the module attribute in the < style > tag
Copy after login
  • Use it through a dynamic class binding in the vue template
Copy after login
  • Use in js
Copy after login

1.4 Usage effect

Copy after login

Result after compilation:

//编译结果

Im gray

.gray_3FI3s6uz { color: gray;}
Copy after login

1.5 Notes

  • When processing keyframes of animation animation, the animation name must be written first. For example, if animation: deni .5s, it will compile normally; if animation: .5s deni, it will compile abnormally.
  • Remember to configure css-loader, otherwise it will not take effect.
  • If you are using style-loader, you need to configure and change it to vue-style-loader for it to take effect.
  • How do css modules solve the weight problem?
    Allows style rules to be encapsulated through renaming or namespace, reducing constraints on selectors, so that class names can be used comfortably without specific methods.
    When style rules are coupled to each component, the styles are also removed when the component is no longer used.

2. Scoped

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 thescopedattribute to the < style > tag
2.3 Usage effect

Copy after login

Compiled result:

h1[data-v-4c3b6c1c] { color: #f00;}
Copy after login

2.4 Disadvantages

  • If the user defines the same class name elsewhere, it may still affect the style of the component.
  • According to the characteristics of CSS style priority, scoped processing will increase the weight of each style. Referring to components that use scoped
    As a sub-component, it becomes difficult to modify the style of the sub-component. You may have no choice but to use it! important
  • Scoped will slow down tag selector rendering many times. When using tag selectors, scoped will seriously reduce performance, but using class or id will not

3. Summary

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!

Related labels:
css
source:csdn.net
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Latest Articles by Author
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!