rel属性是强制性核心属性,漏写或错写会导致link标签被浏览器忽略;rel="stylesheet"必须显式声明且路径正确才能加载CSS;rel="icon"需配sizes和type才可靠;rel="preload"须带as属性且高优先级,rel="prefetch"为低优先级后台预取;rel="noopener noreferrer"仅对target="_blank"的a标签有效。
rel 不是可选的描述字段,漏写、错写或乱加值, 标签就等于没写——浏览器直接跳过,资源不加载、图标不显示、预加载失效,甚至埋下 XSS 风险。
rel="stylesheet" 必须显式声明且路径正确
这是唯一被所有浏览器强制同步加载 CSS 的 rel 值。不写 rel="stylesheet",哪怕 href 指向正确的 CSS 文件,样式也完全不会生效。
-
→ 无效,浏览器忽略 -
→ 有效,按顺序级联应用 -
type="text/css"可省略,但若误写为type="css",旧版 Safari 可能拒绝加载 - 相对路径以 HTML 文档所在位置为基准,不是当前 JS 执行位置或服务器根目录
- 多个
rel="stylesheet"会按 DOM 顺序加载,后加载的同选择器规则覆盖前面的
rel="icon" 要配 sizes 和 type 才可靠
只写 看似能用,但实际触发两次请求:先试 href,失败后 fallback 到根目录 /favicon.ico,多一次无谓 DNS 查询和 404。
- 必须显式声明
sizes(如sizes="32x32")和type(如type="image/x-icon"或type="image/png") - 推荐提供多尺寸链:
、 - 不要依赖浏览器自动查找
/favicon.ico,它已成历史包袱,现代浏览器优先读取
rel="preload" 和 rel="prefetch" 行为截然不同
这两个值常被混用,但触发时机、优先级和失败表现完全不同,错配会导致首屏卡顿或资源浪费。
使用HTML,CSS,JavaScript开发Android应用程序 英文文字pdf版附源文件
如果你了解HTML,CSS和JavaScript,您已经拥有所需的工具开发Android应用程序。本动手本书展示了如何使用这些开源web标准设计和建造,可适应任何Android设备的应用程序 - 无需使用Java。您将学习如何创建一个在您选择的平台的Android友好的网络应用程序,然后转换与自由PhoneGap框架到一个原生的Android应用程序。了解为什么设备无关的移动应用是未来的潮流,并开始构建应用程序,提供更
下载
立即学习“前端免费学习笔记(深入)”;
-
rel="preload"是高优先级、强制、同步触发的提前加载,必须带as属性:as="script"、as="font"、as="style";缺as就当普通链接处理,不加载 -
as="font"必须配合crossorigin,否则字体静默失败,控制台无报错 -
rel="prefetch"是低优先级、空闲时才尝试的后台预取,不阻塞渲染,适合下一屏可能访问的页面或 chunk,但不保证完成 - 别把关键字体写成
prefetch,也别把非关键图片写成preload——后者会挤占主资源带宽
rel="noopener noreferrer" 只对 有效
这两个值写在 上完全无效,浏览器直接忽略。常见误用是加在 后面,以为“更安全”,实则毫无作用。
- 仅用于
标签,且必须搭配target="_blank"才有意义 -
rel="noopener"切断window.opener引用,防止子页篡改父页 DOM -
rel="noreferrer"隐式包含noopener,并禁发 Referer 请求头;注意 analytics 工具将丢失来源数据,内部跳转慎用 - 两个值必须用空格分隔:
rel="noopener noreferrer";写成逗号分隔(rel="noopener,noreferrer")整个属性失效
最容易被忽略的是:所有 rel 值都区分大小写,rel="Stylesheet" 或 rel="ICON" 在部分浏览器中不识别; 必须放在 内,放错位置会导致预加载逻辑被丢弃或延迟触发。

