我的一位亲戚开始学习Web开发问我这个问题。
为什么<script src="min.js"></script>
但<link rel="stylesheet" href="min.css">
为什么不<style href="min.css"></style>
为什么我们使用link
标记在页面中添加外部css但是当我们将css链接到页面但我们使用{{ 1}}当我们在<style>...</style>
内写css时?
我告诉他这是因为规格。还有更多信息要提供给他吗?
答案 0 :(得分:42)
这是历史......巧合?你可以推荐他阅读part about Past of diveintohtml5.info,其中有一些有趣的故事,实际上是网络开发人员之间的邮件通信。 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="...">
但是finally devs decided to stick with <img>
, which was already implemented:
我们暂时不准备支持INCLUDE / EMBED。 ......所以我们 可能会去(不是ICON,因为不是全部 内联图像可以有意义地称为图标)。暂且, 内联图像不会显式内容类型;在路上,我们 计划支持(以及MIME的一般改编)。 实际上,我们目前使用的图像读取程序已经找到了 动态的图像格式,因此文件扩展名甚至不会 显著。
我不知道你问题的直接答案,但我对<link>
标签也很好奇。找到答案可能包括一些网络档案挖掘。
答案 1 :(得分:25)
至少从W3C的角度来看,存在差异。
<style>
元素引入了一组适用于当前文档的CSS规则。但是,外部样式表实际上被视为当前页面的整个文档related,用户代理可以自由忽略此类文档,具体取决于链接的type
和media
属性。例如:
<link rel="stylesheet" type="text/css" media="screen" href="screen.css" />
<link rel="stylesheet" type="text/css" media="print" href="print.css" />
在这种情况下,用户代理通常只会跟随其中一个链接,screen
一个(用于正常渲染)或print
一个(用于打印)。我们的想法是仅通过下载适当的资源来保留带宽,而不是在以后获取所有内容并过滤媒体类型。
规范中提到了这一点:
当
LINK
元素将外部样式表链接到文档时,type
属性指定样式表语言和media
attribute指定预期的渲染媒体或媒体。用户 代理可以通过仅从网络中检索那些样式来节省时间 适用于当前设备的工作表。
答案 2 :(得分:3)
它们都具有基本相同的含义,并且您发现了HTML中的一种不一致性。原因是标准基于不同浏览器的实现。不同的浏览器在不同的标签中提出了属性,而W3C只是决定保留一些不一致性以保持向后的兼容性。
使用src
的元素:script img iframe input video frame
使用href
的元素:a link base
答案 3 :(得分:1)
<link>
标记用于将其他文档“链接”到当前文档,并用它来描述它与rel
的关系。
您还可以使用<link>
将其他内容与文档相关联。例如,favicons:
<link rel="shortcut icon" href="favicon.ico" />
答案 4 :(得分:1)
这可能解释了一些事情,我想:http://www.w3.org/TR/html4/struct/links.html
答案 5 :(得分:1)
link ref
vs style
的可能原因:
link
只能访问head
,其中&#34;元数据内容&#34;是允许的,通常是head
,
style
无法进入HTML5之前的body
(现在您可以使用scoped
,但仍然不能使用外部样式)。因此,link ref
和style src
之间的选择是任意的。
script
可能已经在HTML5之前的body
中包含了一个外部脚本,因此必须有script src
。但由于它必须存在,为什么不在head
中允许它(已经允许script
),并禁止link rel=script
以避免重复?