不能。link的media属性仅控制样式是否应用,浏览器仍会下载CSS文件,导致移动端首屏性能受损;真正按需加载需用JavaScript动态插入或服务端检测。
配合媒体查询单独加载?不能。HTML 的 中的 media 属性只控制该资源是否「应用样式」,但浏览器仍会下载它(除非是 print 等部分类型在某些浏览器中可能延迟或跳过)。这意味着即使你写 ,桌面端访问时 mobile.css 依然大概率被下载,造成冗余请求和带宽浪费。
media 属性的实际行为与常见误解很多人以为 media 是“条件加载”,其实它是“条件应用”:资源仍会发起 HTTP 请求,只是解析后若媒体查询不匹配,就不会将其中

DOMContentLoaded 前预加载所有 ,无论 media 是否匹配media="print" 是少数可能被延迟加载的例外,但不可靠,且不适用于屏幕适配media="(min-width: 900px)" 加载桌面样式,在手机上仍会下载——只是不生效要实现「只在移动设备上下载 mobile.css」,必须绕过预加载机制,用 JavaScript 动态插入 ,并配合用户代理或 window.matchMedia 判断。
更健壮的做法(推荐):
底部或 DOMContentLoaded 后执行@media 规则,而非拆文件——避免请求开销,也减少维护碎片拆成 mobile.css + desktop.css 看似清晰,实际带来明显负担:
@media (hover: hover) and (pointer: fine))真正值得拆的,通常是「功能模块级」CSS(如 video-player.css),而不是「设备尺寸级」。