0

PageSpeed によると、私の CSS は効率的な CSS セレクターを使用していません。

誰かが私が間違っていることを教えてもらえますか?

私のCSS:

#header .link-bar .fl .last a:hover
div.box-default div.box-caption .box-title a 
.news ul li div.top a
.news ul li div.top a:visited  
.news ul li div.top a:hover
.link-bar ul li
#header .link-bar a 
#header .link-bar a:visited 
#header .link-bar .last a
#header .link-bar a:hover
#header .link-bar .last a:hover 
#header .link-bar .fl a:hover
#footer .link-bar a
#footer .link-bar a:visited
#footer ul li
div.list ul
div.list li
.ads ul li
.news ul li
#paging_button ul li
#paging_button ul li:hover
.tt_wrap .ttbox span 
#paging_button ul li:hover

どうもありがとう。

4

2 に答える 2

2

セレクターが具体的すぎる可能性があります。ブラウザーは CSS を左から右ではなく右から左に読み取ります。だから.link-bar ul liより速いです#header .link-bar ul li

これは、右端のセレクターがパフォーマンスにとって最も重要であることも意味します。一番右の要素にクラスを追加できれば、非常に役立ちます.news ul li div.top avs.news ul li div.top a.top-link

これをチェックしてくださいなぜブラウザはCSSセレクターを右から左に一致させるのですか?

于 2012-08-11T14:47:37.310 に答える
0

CSS が何をするのか、CSS をこのように配置する理由、どのように / どこで使用されているのか、ページで何が行われているのかを知らなければ、正しい答えはありません。

PageSpeed が伝えているのは、非常に効率的なセレクターが実際に非常に迅速にアイテムに到達することと、CSS エンジンが意図したものを見つける前に少しトロールするあまり効率的でないセレクターがあることだけです。どちらも希望するスタイルを適用します。一方のタイプは他方よりも CPU サイクルが少なくてすみますが、ほとんどの場合、数秒ではなく、あちこちで数回の CPU サイクルについて話しているのです。ブラウザーが実行されているマシンとブラウザー自体は、セレクター自体よりもはるかに大きな影響を与えます。したがって、これは、CSS に効率の悪いセレクターがいくつかあることを意味します。

たとえば、このようなルールを (ネストされた要素を使用して) 記述でき、これらのいくつかは明らかに存在します。

ul li {color: blue;}
ol li {color: red;}

しかし、同様に効率的にこれを行うこともできます (単一のクラス セレクター)。

.ul-li {color: blue;}
.ol-li {color: red;}

このかなり些細な例がどちらの方法でも大きな違いを生むわけではありませんが、レンダリング速度が重要であり、ローカルで高速ネットワーク上で作業している場合、または古い/あまり強力でないマシンで作業している場合は、うまくいく可能性があります. 非常に遅い接続でリモート ブラウザに送信する必要がある場合は、送信するペイロードを増やすと事態が悪化する可能性があります。

基本的に、これらのいずれかを配置するたびに、そうしないよりも非効率的です。

Rules with descendant selectors 
Rules with child or adjacent selectors
Rules with overly qualified selectors
Rules that apply the :hover pseudo-selector to non-link elements

過度に修飾されたセレクターは、同じ場所に到達するために多くのセレクターを使用する場合です

div.box-default div.box-caption .box-title a 

次の結果は同じですか、それともページに多くのボックス タイルがある可能性がありますか?

.box-title a 

また、これらのいずれも持たない CSS ファイルとマークアップを作成するのにも、かなりの量の作業が必要です。

これらの詳細 (リーチ タイプの例を含む) については、次のリンクを参照してください:
http://www.w3.org/TR/CSS2/selector.html#descendant-selectors
http://www.w3.org /TR/CSS2/selector.html#child-selectors
http://www.w3.org/TR/CSS2/selector.html#adjacent-selectors

于 2012-08-11T15:14:07.650 に答える