質問全体を本当に理解していませんでしたが、まだ理解していないかもしれませんが、具体性から「CSSを防弾」する方法を求めていると思います-他の回答を見た後、CSSビットを取得しました
すべてに追加された一意のクラス名(ちょっとした撞着語はCSS用語ですが、heyho)は、ルールがどれほど具体的(重み付け)であっても、サイト(あなたではない)CSSができるだけ早く失敗するようにすることをお勧めします
ただし、ウィジェットのCSSを完全に一意にすることができます。つまり、セレクターにIDがいくつあっても、非常に面倒で、すべてを具体的に分類しなくても、サイトのCSSによって上書きされないようにすることができます。
たとえば#mywidget div {}
、サイトCSSによって非常に簡単に却下される可能性があり#wrapper #content div {}
ます-あなたdiv
もこれら2つのIDの子孫であり、ルールには2つのIDがあるため、CSSは失われます-サイトCSSのすべての順列を推測することは不可能です。最も簡単なのは、これらすべての「追加」クラスと、YUIとBlueprintがそのままである理由を追加することです。
ただし、CSSを作成する場合:#mywidget>div {}
CSSでターゲットとなるdivがウィジェットIDの直接の子になることはないため、常に勝つ可能性があります(もちろん、CSSをカスタマイズすることを選択しない限り、 「すべてを分類する」メソッドも)
したがって、すべてにクラスを追加せずにCSSを防弾するために..ウィジェットにはすでに一意のiDラッパーがあると思いますか?次に、内部divラッパーがまだない場合は、追加します。クラスは必要ありませんが、クラスを指定すると、この手法に防弾の追加レイヤーが配置されます。
次に、すべてのルールにプレフィックスを付けます。#mywidget>div.myclass
たとえば#mywidget>div.myclass td {}
、サイト独自のルールは、どれほど重要な重みが付けられていても(セレクター内の多くのIDとクラスによってセレクターの重みが大きくなります)、特定の組み合わせに一致しなくなるとすぐに失敗します。したがって、trは安全です。サイトからのCSS乗っ取り;)
1つのdivまたはクラスを追加し、CSSを検索して置き換え、すべてにプレフィックスを追加します。パッケージ化の方法についてはわかりません。