ホームページ > ウェブフロントエンド > htmlチュートリアル > Analyzer-css: CSS セレクターの複雑さとパフォーマンス Analyzer_html/css_WEB-ITnose

Analyzer-css: CSS セレクターの複雑さとパフォーマンス Analyzer_html/css_WEB-ITnose

WBOY
リリース: 2016-06-21 08:56:55
オリジナル
1342 人が閲覧しました

analyze-css

CSS セレクターの複雑さとパフォーマンスのアナライザー。 analyze-css は、CSS パーサーによって起動されるイベントにバインドされた一連のルールとして構築されます。各ルールはメトリクスを生成し、より詳細な情報を含む「違反者」を追加できます (例については「使用法」セクションを参照)。

  • CSS デモの分析

インストール

analyze-css は、コマンドライン用の「バイナリ」および CommonJS モジュールとして提供されます。以下を実行してグローバルにインストールします。

npm install --global analyze-css
ログイン後にコピー

使用法

コマンド ライン ツール

analyze-css "binary" を使用して、ローカル CSS ファイルまたはリモート CSS を分析できます。資産:

analyze-css --file examples/elecena.cssanalyze-css --url http://jigsaw.w3.org/css-validator/style/base.css
ログイン後にコピー

標準入力経由で CSS を提供することもできます (ダッシュ: - に注目してください):

echo ".foo {margin: 0 \!important}" | analyze-css -
ログイン後にコピー

これにより、JSON 形式の結果が標準出力に出力されます。 --pretty (または -p ショートカット) オプションを使用して、人間が読み取れる出力を作成します。

基本的な HTTP 認証は、オプション --auth-user および --auth-pass を通じて提供できます。

CommonJS モジュール

var analyzer = require('analyze-css');new analyzer('.foo {margin: 0 !important}', function(err, results) {  console.error(err);  console.log(results); // example? see below});
ログイン後にコピー

// options can be providedvar opts = {  'noOffenders': true};new analyzer('.foo {margin: 0 !important}', opts, function(err, results) {  console.error(err);  console.log(results); // example? see below});```
ログイン後にコピー

grunt タスク

@DeuxHuitHuit によって作成されました

npm i grunt-contrib-analyze-css
ログイン後にコピー

設定可能なしきい値を使用し、analyze-css の結果をそれと比較します。

結果

{  "generator": "analyze-css v0.8.0",  "metrics": {    "base64Length": 11332,    "redundantBodySelectors": 0,    "redundantChildNodesSelectors": 1,    "colors": 106,    "comments": 1,    "commentsLength": 68,    "complexSelectors": 37,    "complexSelectorsByAttribute": 3,    "duplicatedSelectors": 7,    "duplicatedProperties": 24,    "emptyRules": 0,    "expressions": 0,    "oldIEFixes": 51,    "imports": 0,    "importants": 3,    "mediaQueries": 0,    "multiClassesSelectors": 74,    "parsingErrors": 0,    "oldPropertyPrefixes": 79,    "propertyResets": 0,    "qualifiedSelectors": 28,    "specificityIdAvg": 0.04,    "specificityIdTotal": 25,    "specificityClassAvg": 1.27,    "specificityClassTotal": 904,    "specificityTagAvg": 0.79,    "specificityTagTotal": 562,    "selectors": 712,    "selectorLengthAvg": 1.5722460658082975,    "selectorsByAttribute": 92,    "selectorsByClass": 600,    "selectorsById": 25,    "selectorsByPseudo": 167,    "selectorsByTag": 533,    "universalSelectors": 5,    "length": 55173,    "rules": 433,    "declarations": 1288  },  "offenders": {    "importants": [      ".foo {margin: 0 !important}"    ]  }}
ログイン後にコピー

Metrics

  • base64Length: total length of base64-encoded data in CSS source (will warn about base64-encoded data bigger than 4 kB)
  • redundantBodySelectors: number of redundant body selectors (e.g. body .foo, section body h2, but not body > h1)
  • redundantChildNodesSelectors: number of redundant child nodes selectors (e.g. ul li, table tr)
  • colors: number of unique colors used in CSS
  • comments: number of comments in CSS source
  • commentsLength: length of comments content in CSS source
  • complexSelectors: number of complex selectors (consisting of more than three expressions, e.g. header ul li .foo)
  • complexSelectorsByAttribute: number of selectors with complex matching by attribute (e.g. [class$="foo"])
  • duplicatedSelectors: number of CSS selectors defined more than once in CSS source
  • duplicatedProperties: number of CSS property definitions duplicated within a selector
  • emptyRules: number of rules with no properties (e.g. .foo { })
  • expressions: number of rules with CSS expressions (e.g. expression( document.body.clientWidth > 600 ? "600px" : "auto" ))
  • oldIEFixes: number of fixes for old versions of Internet Explorer (e.g. * html .foo {} and .foo { *zoom: 1 }, read more)
  • imports number of @import rules
  • importants: number of properties with value forced by !important
  • mediaQueries: number of media queries (e.g. @media screen and (min-width: 1370px))
  • multiClassesSelectors: reports selectors with multiple classes (e.g. span.foo.bar)
  • parsingErrors: number of CSS parsing errors
  • oldPropertyPrefixes: number of properties with no longer needed vendor prefix, powered by data provided by autoprefixer (e.g. --moz-border-radius)
  • propertyResets: number of accidental property resets
  • qualifiedSelectors: number of qualified selectors (e.g. header#nav, .foo#bar, h1.title)
  • specificityIdAvg: average specificity for ID
  • specificityIdTotal: total specificity for ID
  • specificityClassAvg: average specificity for class, pseudo-class or attribute
  • specificityClassTotal: total specificity for class, pseudo-class or attribute
  • specificityTagAvg: average specificity for element
  • specificityTagTotal: total specificity for element
  • selectors: number of selectors (e.g. .foo, .bar { color: red } is counted as two selectors - .foo and .bar)
  • selectorLengthAvg: average length of selector (e.g. for .foo .bar, #test div > span { color: red } will be set as 2.5)
  • selectorsByAttribute: number of selectors by attribute (e.g. .foo[value=bar])
  • selectorsByClass: number of selectors by class
  • selectorsById: number of selectors by ID
  • selectorsByPseudo: number of pseudo-selectors (e,g. :hover)
  • selectorsByTag: number of selectors by tag name
  • universalSelectors: number of selectors trying to match every element (e.g. .foo > *)
  • length: length of CSS source (in bytes)
  • rules: number of rules (e.g. .foo, .bar { color: red } is counted as one rule)
  • declarations: number of declarations (e.g. .foo, .bar { color: red } is counted as one declaration - color: red)

Read more

  • Writing Efficient CSS (by Mozilla)
  • Optimize browser rendering (by Google)
  • Profiling CSS for fun and profit. Optimization notes.
  • CSS specificity
  • CSS Selector Performance has changed! (For the better) (by Nicole Sullivan)
  • CSS Performance (by Paul Irish)
  • GitHub's CSS Performance (by Joh Rohan)

Dev hints

Running tests and linting the code:

npm test && npm run-script lint
ログイン後にコピー

Turning on debug mode (i.e. verbose logging to stderr via debug module):

DEBUG=analyze-css* analyze-css ...
ログイン後にコピー

项目地址: https://github.com/macbre/analyze-css

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート