0

だから私はCSSセレクターのJavascript配列を持っています:

array is like the following: '.header', '#footer', '#nav', etc

また、サイトのCSSをテキスト(12,000行の長さ)として含むdivがあります。

<div id="all">
#nav
 {
   border: 1px solid;
   color: black;
 }
 #footer
 {
   display: block;
 }
 </div>

配列から各セレクターを取得し、$('#all')で一致させるには、セレクターの先頭から終了ブラケットまですべてを削除する必要があります。

すなわち

// for each from the array
$('#all').find($(this));
// removes everything from selector to its end bracket

誰かアドバイスできますか?未使用のサイトCSSを削除することです。私はしばらく立ち往生しています。感謝!

4

1 に答える 1

1

更新: debug modeinput、およびoutputを追加しました。

さて、CSS がたくさんあり、いくつかのルールを削除したいと思います。これらを仮定しましょう:

  1. 各行にはセレクターが 1 つだけあります。
  2. 各行はそのセレクターから始まります。
  3. 各行には 1 つの完全なルールがあります。つまり、selector {property: value;}

3 番目のオプションがうまくいかない場合は、多くのCSS コンプレッサがあり、それらを使用して次の CSS を作成できます。

#footer
{
  display: block;
}

の中へ:

#footer { display: block; }

これをテキスト ファイルに保存したら、PHP または優れたプログラミング言語を使用して操作を行うことができます。クライアント側はお勧めしません。PHP があり、ここに一連のルールがあるとします。

#nav { border: 1px solid; color: black; }
#footer { display: block; }

そして、あなたはあなたの配列を持っています:

$remove = array('.header', '#footer', '#nav');

次のようなものを使用できます。

<pre><?php
$debug = false;
$rules[] = ".header { border: 1px solid; color: black; }";
$rules[] = "#nav { border: 1px solid; color: black; }";
$rules[] = "#footer { display: block; }";
$rules[] = "#header { border: 1px solid; color: black; }";
$rules[] = ".nav { border: 1px solid; color: black; }";
$rules[] = ".footer { display: block; }";
$remove = array('.header', '#footer', '#nav');
$final = array();
foreach ($rules as $rule)
{
    if ($debug) echo "Debug: ", var_dump(strpos($rule, " ")) . "\n";
    if ($debug) echo "Debug: ", var_dump(substr($rule, 0, strpos($rule, " "))) . "\n";
    if ($debug) echo "Debug: ", var_dump(in_array(substr($rule, 0, strpos($rule, " ")), $remove)) . "\n";
    if ($debug) echo "---\n";
    if ( !in_array(substr($rule, 0, strpos($rule, " ")), $remove) )
        $final[] = $rule;
}
echo implode("\n", $final);
?></pre>

上記のスクリプトにはデバッグが含まれています。true に設定$debugすると、さまざまな項目がチェックされていることがわかります。

これに与えられる入力は次のとおりです。

.header { border: 1px solid; color: black; }
#nav { border: 1px solid; color: black; }
#footer { display: block; }
#header { border: 1px solid; color: black; }
.nav { border: 1px solid; color: black; }
.footer { display: block; }

出力は次のとおりです。

#header { border: 1px solid; color: black; }
.nav { border: 1px solid; color: black; }
.footer { display: block; }

フィドル: http://phpfiddle.org/main/code/ehd-z4j

于 2013-03-07T13:58:47.697 に答える