CSSモジュール:コンポーネントCSSの強力なツール
この記事では、CSSモジュールを紹介します。これは、CSSグローバルネームスペースの競合を解決し、コンポーネントの命名を簡素化する効果的な方法です。通常、Webpackまたはbrowserifyのプラグインとして使用される特定の構成と構造プロセスが必要であり、独立して実行されません。
コアの利点:
作業原則:
CSSモジュールは、ReactコンポーネントなどのJavaScriptモジュールにCSSファイルをインポートすることにより実装されます。 CSSファイルで定義されているクラス名をマップして、動的に生成された一意にスコープされたクラス名にマップするオブジェクトを作成します。これらのクラス名は、JavaScriptの文字列として使用されます。たとえば、
単純なCSSファイル:JavaScriptコンポーネントでの使用:
.base { color: deeppink; max-width: 42em; margin: 0 auto; }
コンピレーション後にWebpackが生成する場合があります:
import styles from './styles.css'; element.innerHTML = `<div class="${styles.base}">CSS Modules真有趣!</div>`;
<div class="_20WEds96_Ee1ra54-24ePy">CSS Modules真有趣!</div>
._20WEds96_Ee1ra54-24ePy { color: deeppink; max-width: 42em; margin: 0 auto; }
:global()
composes
:global(.clearfix::after) { content: ''; clear: both; display: table; } .base { composes: appearance from '../AnotherModule/styles.css'; }
WebpackやBrowserifyなどのビルディングツールが必要です。
webpack構成:
:
に追加します
webpack.config.js
別のCSSファイルを生成するには、
{ test: /\.css$/, use: [ 'style-loader', { loader: 'css-loader', options: { modules: true } } ] }
MiniCssExtractPlugin
const MiniCssExtractPlugin = require('mini-css-extract-plugin'); module.exports = { // ... other configurations module: { rules: [ { test: /\.css$/, use: [ MiniCssExtractPlugin.loader, { loader: 'css-loader', options: { modules: true } } ] } ] }, plugins: [ new MiniCssExtractPlugin({ filename: '[name].css' }) ] };
:
にnpmスクリプトを追加します
package.json
{ "scripts": { "build": "browserify -p [ css-modulesify -o dist/main.css ] -o dist/index.js src/index.js" } }
CSSモジュールは、特に大規模なプロジェクトに対して、持続可能でモジュール式、適切にスコープ、再利用可能なCSSライティング方法を提供します。
faq:
.module.css
拡張子を使用します。 :global()
を使用します。 composes
キーワードを使用します。 以上がCSSモジュールの方法論の理解の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。