Maison >interface Web >Questions et réponses frontales >Réponse détaillée à la différence entre le CSS étendu et le module CSS dans la portée CSS
Cet article vous apporte des connaissances pertinentes sur la différence entre le CSS étendu et le module CSS. Les deux CSS étendus et le module CSS sont utilisés pour contrôler la portée locale du CSS et éviter des problèmes tels que la duplication des noms de classe. Alors, quelle est la différence entre les deux. ? J'espère que cela aide tout le monde.
scoped CSS et module CSS sont conçus pour contrôler la portée locale du CSS et éviter des problèmes tels que la duplication des noms de classe. Alors quelle est la différence entre les deux ?
1.1. Explication
Régénère les noms de classe pour tous les noms de classe, évitant efficacement les problèmes de poids CSS et de duplication des noms de classe. Le module css remplace directement le nom de la classe, éliminant la possibilité pour l'utilisateur de définir le nom de la classe pour affecter le style du composant, il n'est donc pas nécessaire de se creuser la tête pour nommer.
1.2 Principe de mise en œuvre
En ajoutant un suffixe de chaîne de hachage au nom du style, le style compilé dans un contexte de portée spécifique peut être globalement unique.
1.3 Utilisation
//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 effet d'utilisation
<template> <p :class="$style.gray"> Im gray </p></template><style module>.gray { color: gray;}</style>
Résultat compilé :
//编译结果<p class="gray_3FI3s6uz">Im gray</p>.gray_3FI3s6uz { color: gray;}
1.5 Notes
Vue ajoute des balises uniques et non répétitives à la structure DOM et au style CSS pour garantir l'unicité et atteindre l'objectif de privatisation et de modularisation du style. Il est impossible d'éviter complètement le problème de la duplication du poids CSS et du nom de classe.
2.2 Comment utiliser
Ajoutez l'attribut scoped
dans la balise < style > Si l'utilisateur définit la même chose ailleurs Le nom de la classe peut toujours affecter le style du composant.
Selon les caractéristiques de la priorité du style CSS, le traitement de scoped augmentera le poids de chaque style. Référence aux composants qui utilisent scoped En tant que sous-composant, il devient difficile de modifier le style du sous-composant, et vous devrez peut-être l'utiliser en dernier recours ! important
3. RésuméLe module CSS est en fait plus efficace que scoped Bon, et La configuration du module CSS n'est pas difficile, je recommande donc le module CSS.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!