ホームページ >ウェブフロントエンド >フロントエンドQ&A >スコープ付きCSSとCSSスコープ内のCSSモジュールの違いに対する詳細な回答
この記事では、スコープ付き CSS と CSS モジュールの違いに関する関連知識を提供します。スコープ付き CSS と CSS モジュールはどちらも、CSS のローカル スコープを制御し、クラス名の重複を防ぐために使用されます。では、この 2 つの違いは何でしょうか?そうですね、皆さんのお役に立てば幸いです。
スコープ付き css と css モジュールはどちらも、css のローカル スコープを制御し、クラス名の重複などの問題を防ぐように設計されています。それでは、この 2 つの違いは何でしょうか?
1.1. 説明
すべてのクラス名に対してクラス名を再生成し、CSS の重みとクラス名の重複の問題を効果的に回避します。 css モジュールはクラス名を直接置き換えるので、ユーザーがクラス名を設定してコンポーネントのスタイルに影響を与える可能性が排除されるため、名前付けに頭を悩ませる必要はありません。
1.2 実装原則
スタイル名にハッシュ文字列サフィックスを追加することにより、特定のスコープ コンテキストでコンパイルされたスタイルをグローバルに一意にすることができます。
1.3 使用法
//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 使用効果
<template> <p :class="$style.gray"> Im gray </p></template><style module>.gray { color: gray;}</style>
コンパイル後の結果:
//编译结果<p class="gray_3FI3s6uz">Im gray</p>.gray_3FI3s6uz { color: gray;}
1.5 注意事項
Vue は、重複しない一意のタグを DOM 構造と CSS スタイルに追加することで、一意性を確保します。スタイルの民営化とモジュール化の目的。 CSSウェイトとクラス名の重複の問題を完全に回避することはできません。 2.2 使用方法
< style > タグに scoped 属性を追加します
2.3 使用効果
<style scoped>h1 { color: #f00;}</style>コンパイル結果:
h1[data-v-4c3b6c1c] { color: #f00;}
2.4 欠点
ユーザーが別の場所で同じクラス名を定義した場合、コンポーネントのスタイルに影響を与える可能性があります。
css ビデオ チュートリアル
)以上がスコープ付きCSSとCSSスコープ内のCSSモジュールの違いに対する詳細な回答の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。