src与href在HTML中的区别

       首先明确一下:link本身并不是专门为了css而产生的,它的作用是链接一个文档,只不过rel的stylesheet属性值被全支持了而已。只有style标签才是真心为css语句服务的。

      src :source的简写,表示“源”,可以理解为引用一个资源,它用来代替自己本身内容。如img、script、iframe。它们如果不写src,那么本身没有内容,script会不存在脚本代码,img会显示x,iframe会显示空白页。例如<script type="text/javascript" src="b.js">alert(1)</script>,b.js:alert(2); 标准的浏览器里会显示2,因为本身的内容已经被替代了;另一方面,当浏览器解析到这一句的时候会暂停其他资源的下载和处理,直至将该资源加载,编译,执行完毕,图片和框架等元素也是如此,类似于该元素所指向的资源嵌套如当前标签内,这也是为什么要把js放置在底部而不是头部。 

href : Hypertext Reference的缩写,表示“超链接”, 目的不是为了引用一个资源,而是为了建立一个“通道”,让当前标签能够链接到目标地址上,并不是为了把目标拉进页面本身内来替换本身的内容,例如a标签的href不会被当做一个资源替换自身,link标签本身并不包含实际的元素意义来做内容,它需要rel明确的表示被被连接的文档是做什么的。例如:<link href="head.css" rel="stylesheet"/>,当浏览器解析到这一句的时候会识别该文档为css文件,会下载并且不会停止对当前文档的处理,这也是为什么建议使用link方式来加载css而不是使用@import。

    

补充:link和@import的区别

两者都是外部引用CSS的方式,但是存在一定的区别:

区别1:link是XHTML标签,除了加载CSS外,还可以定义RSS等其他事务;@import属于CSS范畴,只能加载CSS。

区别2:link引用CSS时,在页面载入时同时加载;@import需要页面网页完全载入以后加载。

区别3:link是XHTML标签,无兼容问题;@import是在CSS2.1提出的,低版本的浏览器不支持。

区别4:ink支持使用Javascript控制DOM去改变样式;而@import不支持。

可以转换的理解如下:

      再从html,css和js的关系来思考一下。html相当于人的身体(结构),css相当于衣服(样式),js相当于动作(行为)。想象一个人的生活,一件衬衫(css)可以搭配不同的外套(即叠加href),而不是说买了一件衬衫(css)以后,就不穿任何一件外套了(即非整体替换src)。再比如说,小时候不会用筷子吃饭(行为js),需要父母喂(行为),而自己学会吃饭这一行为以后,需要父母喂这一行为就被完全替换掉了(即src)。
 
    不知道解析是否清晰,如果仍然无法理解,则如众人曰:"这是一个历史遗留问题,(在基本明白的情况下)无需纠结,记住即可。"
good luck!
原文地址:https://www.cnblogs.com/lujun1949/p/6500654.html