13

次の html ドキュメント (CSS と一緒に) は、スタイルのレンダリングに失敗しますb.css

<!doctype html>
<html>
    <head>
        <link rel="stylesheet" media="screen" type="text/css" title="A" href="a.css" />
        <link rel="stylesheet" media="screen" type="text/css" title="B" href="b.css" />
    </head>
    <body>
        <div id="A">A</div>
        <div id="B">B</div>
    </body>
</html>

/* a.css */
div#A   { color: blue;  }
/* b.css */
div#B   { color: red;   }

タイトルを同じにします (たとえば、両方とも<link ... title="A">修正しますが、理由がわかりません。なぜそうすべきなのか。ここで、タイトルがこれを間違っているのは何ですか?

4

4 に答える 4

34

HTML 4.0 仕様では、持続、優先、代替 の 3 種類のスタイルシートがあると規定されています。

  • リンクされていて属性rel="stylesheet"がない場合、スタイルシートは「永続的」です。titleレンダリング時には、すべての永続的なスタイルシートが使用されます。
  • rel="stylesheet"スタイルシートは、リンクされていてtitle属性を持っている場合に「優先」されます。同じ優先スタイルシートtitleがグループ化されますが、複数のグループがあってはなりません。ブラウザーは、レンダリングする優先スタイルシートを 1 つだけ選択するようです。
  • 最後に、スタイルシートが とリンクされrel="alternate stylesheet"ていてtitle. これらのスタイルシートは、ユーザーがスタイルシートを選択できるようにすることになっています。それらはグループ化titleされ、ブラウザーのスタイルシートセレクターがある場合はそこに表示されます (Firefox では [表示] >> [ページスタイル])。各グループ (タイトル別) は相互に排他的です。

スタイルシートに属性を配置することによりtitle、無意識のうちに、期待される永続的なスタイルシートではなく、優先されるスタイルシートになってしまいます。これが、すべてが同じタイトルの場合に機能する理由でもあります。

于 2009-12-24T22:46:39.500 に答える
1

Neil Williams の回答のフォローアップ:

作成者は、代替スタイル シートと呼ばれるいくつかの相互に排他的なスタイル シートを指定できます。ユーザー エージェントは、ユーザーが代替スタイル シートから選択できるようにする必要があります。

(強調追加)

また:

スタイル シートを優先させるには、rel 属性を「stylesheet」に設定し、タイトル属性でスタイル シートに名前を付けます。

これはhttp://www.w3.org/TR/REC-html40/present/styles.html#h-14.3.1からのものです

于 2009-12-24T22:54:26.077 に答える
0

これを読んでください: http://blogs.telerik.com/dimodimov/posts/08-05-15/title_attributes_in_css_link_tags_prevent_styles_from_being_applied.aspx

CSS タグのタイトル属性が問題を引き起こし、一部の CSS スタイルが Web ページに適用されないことを以前から認識していました。今日、私は実際に何が起こっているのかを知るために数時間を費やしました。これが私たちが得たものです.

ページに複数のタグがあり、そのうちの 1 つに title 属性がある場合、その後に続くタグは同じ値の title 属性を持つか、title 属性をまったく持たない必要があります。そうしないと、後者の CSS ファイルのスタイルがページには適用されません。

この問題は、さまざまなバージョンの Firefox、Opera、および Safari で簡単に再現できます。予期しない動作を示さない唯一のブラウザは Internet Explorer です。

ほんとに変だおおお

于 2009-12-24T22:50:52.037 に答える
-2

新しいスタイルシートのインクルードを追加していたので、最後に到達するまでに約 3 時間かかりました。現在の CSS ルールと私が追加したものとの間に矛盾があると思いました。正気のオプションを使い果たした後、リンクからタイトルタグを削除しようとしました. 役に立たないメタデータだと思って、あまり気にしませんでした。これが CSS の解析を妨げていたことが判明しました。ブレインファート CSS 標準の古くなった委員会がこれを思いついたことが判明しました。title属性の有無に頼るのではなく、好みの機能やその他の機能(一体何をするべきか)のために、より明確な新しい属性を追加できなかったのでしょうか?何か生産的なことをするために投資すべき時間をすべて失いました。私の検索中に、この問題の原因を見つけたら、対策を講じることを約束しました。今、対策を決定するために残ります。

于 2010-06-24T19:36:40.800 に答える