0

CSS のパフォーマンスに関する Web を読んでいると、どのセレクターが他のセレクターよりも効率的かというリストを見つけることがよくあります。例えば:

http://css-tricks.com/effectively-rendering-css/

#main-navigation {   }      /* ID (Fastest) */
body.home #page-wrap {   }  /* ID */
.main-navigation {   }      /* Class */
ul li a.current {   }       /* Class *
ul {   }                    /* Tag */
ul li a {  }                /* Tag */
* {   }                     /* Universal (Slowest) */
#content [title='home']     /* Universal */

私の質問は、たとえば、ダブルセレクターを必要とするセレクターを使用する場合のパフォーマンスはどうですか:

.class-one.class-two {
}

これらのセレクターを上記のパフォーマンス リストに入れるとしたら、どこにあるでしょうか?

4

3 に答える 3

1

https://developer.mozilla.org/en-US/docs/Web/Guide/CSS/Writing_effective_CSS?redirectlocale=en-US&redirectslug=CSS%2FWriting_Efficient_CSS#How_the_Style_System_Matches_Rules

このリンクにアクセスしてください。役に立つかもしれません。

于 2013-09-17T13:59:34.360 に答える
1

あなたはそれについてそれほど妄想的であってはなりません。さらに重要なのは、ハッキングを回避して、適切でクリーンなコードを作成することです。ただし、いくつかの基本的なルールがあります。

#main-navigation {   }      /* Never style ID's directly, use classes instead*/
body.home #page-wrap {   }  /* If you ever have to style ID's, do it directly, they are unique and doesn't need any selector. You're just wasting bytes */
.main-navigation {   }      /* No problem at all, but try to be more abstract. a class should not be so specific, try to reuse code as much as you can.*/
ul li a.current {   }       /* You should optimize this, you could use just ul .current. Try to use as little selectors as you can, it'll have good performance and will be easier to deal with. Try to use just 3 selectors at the max, so you''l have a good performance and clean code. */
ul {   }                    /* No problem here */
* {   }                     /* You'll won't have any serious problem if you use with caution. Properties like border-box are a good use of it. Anything that you have to set globally in your stylesheet is welcome to use it. */
#content [title='home']     /* Same as *. Don't overdo and you're good to go. */

もっと重要なのは、コードを可能な限りきれいにすることです。過度のオーバーライド、未使用のコード、セレクターの多すぎ、コードの繰り返し、およびハッキングを避けるようにしてください。良いことは、OOCSSBEMを使用することです。フレームワークを使用する場合は、inuit.cssのような優れた慣行に準拠したものを使用してみてください。

今日のスマートフォンでさえ非常に強力であり、多くのアニメーション、最適化されていないコード、多くの JavaScript を使用しすぎない限り、問題はないはずです。

追伸: アニメーションを使用する場合は、CSS3 トランジションとアニメーションに固執してください。GPU アクセラレーションが行われ、パフォーマンスが向上する可能性が高いからです。

于 2013-09-17T13:59:58.437 に答える
0

Mozilla の記事「効率的な CSS の作成」に加えて、Google 社員による「HTML と CSS の高速化: Web 開発者向けのレイアウト エンジンの内部構造」という講演にも興味があるかもしれませんhttp://www.youtube.com/watch?v=a2_6bGNZ7bA

一般に、ブラウザーは各セレクターを右から左に読み取り、現在の DOM ノードに適用可能かどうかを「計算」します。これが、特に動的に再レン​​ダリングされたページで、タグまたは多くのカスケードで終わるセレクターがパフォーマンスの問題を引き起こす理由です。

これは、独立したCSS ブロックに関する BEM CSS の推奨事項に従うことで回避できます。http://bem.info/method/definitions/#IndependentCSS

于 2013-10-27T19:28:13.573 に答える