鄙人的总结就是:历史遗留问题,先贤们的bug;比个不太恰当的比喻,就像javaScript叫javaScript一样。
src:
本质是引入嵌入式内容,比如image,video,iframe这类替换型元素;如果说是一个网页,引入的内容相当于一个网页内部的元素,一个部分,一个实体。可以直接展示,直观的看到!
href:
本质是一种引入超链接,比如a链接,link链接这类链接型元素。引入的内容时外部资源,如果说是一个网页,跟本页面没有太大的关系,不会直接展示;
js是个特例(此内容讲解来自,Winter:《重学前端》课程)
script 标签是为数不多的既可以作为替换型标签,又可以不作为替换型标签的元素。
我们先来看看 script 标签的两种用法:
<script type="text/javascript">
console.log("Hello world!");
</script>
<script type="text/javascript" src="my.js"></script>
这个例子中,我们展示了两种 script 标签的写法,一种是直接把脚本代码写在 script 标签之间,另一种是把代码放到独立的 js 文件中,用 src 属性引入。
css引入
所以说,css也是像js一样的用法,既可以直接写入,也可以引入。但是js确实用src引入,而css用href。可能是因为先贤们认为css更像是网页的外部资源一样,不是网页的一个实体。所以用href引入。(我也只能这么暗示我自己这是最正确的答案)
Winter也说过这样一句话:虽然我不知道当初是怎么设计的,但是 style 标签并非替换型元素,不能使用 src 属性,这样,我们用 link 标签引入 CSS 文件,当然就是用 href 标签啦。