<link>标签必须写在<head>内且不可自闭合,否则会导致FOUC、旧版IE忽略或资源加载异常;rel值大小写敏感,href路径须以HTML文件为基准,type和charset属性在HTML5中已废弃。

link 标签必须写在 head 里,且不能自闭合
HTML 规范要求 <link> 必须作为 <head> 的子元素出现,放在 <body> 中属于结构错误,可能触发怪异模式或导致样式/资源加载异常。它不是自闭合标签(如 <img />),即使没有内容也必须显式闭合:正确是 <link rel="stylesheet" href="style.css">,而不是 <link rel="stylesheet" href="style.css" />(XHTML 风格在 HTML5 中不必要,且部分旧浏览器解析有歧义)。
rel 属性值必须合法,常见误用是写错大小写或拼写
rel 是 <link> 的核心属性,决定链接资源的语义类型。浏览器只识别标准值,大小写敏感,且不自动纠错:
-
rel="stylesheet"—— 正确,用于 CSS 文件;rel="styleSheet"或rel="css"会被忽略 -
rel="icon"—— 正确,用于 favicon;rel="shortcut icon"是历史遗留写法,现代浏览器仍支持但非标准,建议只用rel="icon" -
rel="preload"—— 正确,需搭配as属性(如as="script");漏掉as会导致预加载失效
href 路径错误是最常见的加载失败原因
href 值必须是有效 URL,相对路径以当前 HTML 文件为基准,不是以 CSS 或 JS 文件为基准:
- 如果 HTML 在
/page/index.html,想引用同级的style.css,应写href="style.css",不是href="../style.css" - 使用
href="/assets/main.css"(绝对路径)更稳定,尤其在路由复杂或 SPA 场景下 - URL 中含空格或中文?必须编码:
href="style%20file.css",否则 404 - 本地开发时用
file://协议加载 CSS?多数浏览器会因跨域策略拒绝解析,应启用本地服务器
charset 和 type 属性在现代 HTML 中基本可省略
HTML5 明确规定:<link rel="stylesheet"> 默认按 UTF-8 解析 CSS,且 MIME 类型由服务器响应头决定,type 和 charset 属性已废弃:
立即学习“前端免费学习笔记(深入)”;
- 不要写
type="text/css"—— 不仅冗余,还可能干扰某些构建工具对资源类型的判断 - 不要写
charset="UTF-8"—— 该属性在<link>中已被 HTML5 废弃,无效 - 例外:仅当引入非 CSS 资源(如 Atom feed)且服务器未返回正确
Content-Type时,才可能需要type,但极少见
link 对应请求的状态码和 MIME 类型,而不是 HTML 写得“看起来对”。路径、rel 值、服务器配置这三处出错,几乎占了所有 <link> 失效问题的 90%。



















