Web開発を学び始めた私の親relativeが私にこの質問をしました。
<script src="min.js"></script>
なのに<link rel="stylesheet" href="min.css">
なのに<style href="min.css"></style>
なのにlink
タグを使用してページに外部cssを追加するのに、CSSをページにリンクするが<style>...</style>
を使用して<head>
内に記述するのはなぜですか?
それは仕様のせいだと彼に言った。彼に提供する情報はありますか?
歴史的...偶然ですか?彼に diveintohtml5.infoの過去の部分 を読んでもらうことをお勧めします。ここでは、いくつかの興味深いストーリーがあり、実際にはメールのやり取りがWeb開発者の間で行われます。 Web開発者は、彼らが、、実際には、私たちが最近見ているWebを開発していることを意味します;)
つまり<img>
私たちが使用するタグ:
<IMG SRC="file://foobar.com/foo/bar/blargh.xbm">
になり得る:
<ICON name="NoEntry" href="http://note/foo/bar/NoEntry.xbm">
または
<A HREF="..." INCLUDE>See photo</A>
または
<INCLUDE HREF="...">
しかし 最終的に開発者は<img>
、すでに実装されています :
現在のところ、INCLUDE/EMBEDをサポートする準備はできていません。 …だから、おそらく行こうと思う(ICONではなく、インライン化されたすべての画像を意味のあるアイコンと呼ぶことはできないため)。当分の間、インライン化された画像は明示的にコンテンツタイプではありません。将来的には、(MIMEの一般的な適応とともに)それをサポートする予定です。実際、現在使用している画像読み取りルーチンは、その場で画像形式を把握しているため、ファイル名拡張子は重要ではありません。
あなたの質問に対する直接的な答えはわかりませんが、<link>
タグも。答えを見つけるには、おそらくいくつかのWebアーカイブを掘ることが含まれます。
少なくともW3Cの観点からは違いがあります。
<style>
要素は、現在のドキュメントに適用されるCSSルールのブロックを導入します。ただし、外部スタイルシートは実際にはドキュメント全体と見なされます 関連 現在のページに、ユーザーエージェントはtype
およびmedia
に応じて、そのようなドキュメントを自由に無視できますリンクの属性。例えば:
<link rel="stylesheet" type="text/css" media="screen" href="screen.css" />
<link rel="stylesheet" type="text/css" media="print" href="print.css" />
この状況では、ユーザーエージェントは通常、リンクの1つ、つまりscreen
one(通常のレンダリング用)またはprint
one(まあ、印刷用)のいずれかのみに従います。アイデアは、すべてを取得して後でメディアタイプでフィルタリングするのではなく、適切なリソースをダウンロードするだけで帯域幅を維持することでした。
これは仕様に記載されています。
LINK
要素が外部スタイルシートをドキュメントにリンクする場合、type
属性はスタイルシート言語を指定し、media
属性は目的のレンダリングメディアを指定します。ユーザーエージェントは、現在のデバイスに適用されるスタイルシートのみをネットワークから取得することで時間を節約できます。
どちらも基本的には同じ意味を持ち、HTMLにある種の矛盾を発見しました。この原因は、標準がさまざまなブラウザーの実装に基づいていたことです。さまざまなブラウザがさまざまなタグの属性を思いついたため、W3Cは後方互換性を維持するために矛盾の一部を保持することにしました。
src
を使用する要素:script img iframe input video frame
href
を使用する要素:a link base
<link>
タグは、他のドキュメントを現在のドキュメントに「リンク」し、それとの関係、つまりrel
を記述するために使用されます。
<link>
を使用して、他のものをドキュメントにリンクすることもできます。たとえば、ファビコン:
<link rel="shortcut icon" href="favicon.ico" />
これは物事を説明するかもしれない、私は推測する: http://www.w3.org/TR/html4/struct/links.html
link ref
対style
の考えられる理由:
link
は、「メタデータコンテンツ」が許可されているhead
、通常はhead
、
style
は、HTML5より前のbody
に入れることができませんでした(現在、scoped
を使用できますが、外部スタイルは使用できません)。したがって、link ref
とstyle src
の選択は任意です。
ただし、script
は、HTML5の前のbody
に外部スクリプトを既に含めることができるため、script src
が必要でした。しかし、それは存在しなければならなかったので、head
(script
はすでに許可されていた)でも許可し、重複を避けるためにlink rel=script
を許可しないのはなぜですか?