たとえば、両方のスタイルシートにバナークラスがある同じHTMLページで複数のCSSスタイルシートを使用するにはどうすればよいですか。参照しているクラスをどのように指定しますか?
スタイルシートは、HTMLソースに表示される順序で、事実上単一のスタイルシートに連結されます。
ルールセットを適用するための 通常のルール を適用します(つまり、 specificity によって、タイのイベントで勝つ特定のプロパティを定義する最後のルールセットを使用します)および !important スパナを作品に投げる)
はい、複数のスタイルシートを含めることができますが、代替スタイルシートとしてラベルを付け、JavaScriptを使用して(おそらくリンクをクリックすることによって)ユーザーにそれらをアクティブにする方法を提供する必要があります。
別のスタイルシートを作成するには:
<link type="text/css" href="nameOfAlterateStyleSheet.css" rel="alternate stylesheet" title="Blue" />
次に、Javascriptファイルに以下を実行するメソッドを作成します。1.すべてのスタイルシートを配列にロードします2.例:
function getCSSArray()
{
var links = document.getElementsByTagName("link");
var link;
for(var i = 0; i < links.length; i++)
{
link = links[i];
if(/stylesheet/.test(link.rel))
{
sheets.Push(link);
}
}
return sheets;
}
次に、不要なスタイルシートを無効にし、必要なスタイルシートを有効にするif/elseループを使用して配列を調べます。 (別のメソッドを記述するか、上記のメソッドにループを挿入できます。onloadコマンドを使用して、CSS配列をページにロードし、printViewメソッドを呼び出します。)
function printView()
{
var sheet;
var title1 = "printVersion";
for(i = 0; i < sheets.length; i++)
{
sheet = sheets[i];
if(sheet.title == title1)
{
sheet.disabled = false;
}
else
{
sheet.disabled = true;
}
最後に、ユーザーが次のようなJavaScriptメソッドをアクティブ化するコードをHTMLドキュメントに作成します。
<a href="#" onClick ="methodName();">Link Name</a>
ルール内で同じレベルの specificity を指定すると、どちらを参照するかを制御できません(たとえば、両方とも単に.banner
)最後に含まれたスタイルシートが勝ちます。
プロパティごとであるため、進行中の組み合わせがある場合(たとえば、一方にbackground
があり、もう一方にcolor
がある場合)、組み合わせを取得します...プロパティがどちらも、スタイルシートの順序で最後に表示されるものが優先されます。
できないこととしないこと。
ページ上のすべてのCSSルールが適用され(HTMLはこのプロセスについて「何も知らない」)、最高の特異性を持つ個々のルールは「固執」します。特異性は、セレクターとドキュメントに表示される順序によって決まります。すべての点で、これはカスケードの一部であるということです。ネット上の非常に多くのCSSチュートリアルの1つを参照する必要があります。
特定のスタイルシートを参照することはありません。ドキュメント内のすべてのCSSルールは、内部的に1つに融合されます。
同じ要素に同じ特異性で適用される両方のスタイルシートのルールの場合、後で埋め込まれたスタイルシートは前のスタイルシートをオーバーライドします。
Firebug のような要素インスペクターを使用して、どのルールが適用され、どのルールが他のルールによってオーバーライドされているかを確認できます。
最後に含めるものが使用されます。ただし、最初のスタイルシートに!importantが含まれるルールがある場合、それらが優先されることに注意してください。
HTMLページ内の要素を参照(「選択」)するスタイルシートと考えてください。逆ではありません。