为何媒体类型(media types)被预计将在未来逐步被弃用?
为什么媒体类型会被规划弃用
媒体类型的核心问题是颗粒度过粗,只能对设备形态做非常笼统的分类,没法适配现在越来越多元的设备场景:
- 目前定义的媒体类型只有
print、screen、speech等寥寥几种,但现在的设备形态已经远超出这个分类范畴:可折叠屏、车载中控、电子墨水屏、投影设备等都归在screen下,但各自的适配需求差异极大,仅靠媒体类型完全没法覆盖 - 新增媒体类型的效率极低,每出现一类新设备就要单独加新的类型值,远不如灵活组合媒体特性的效率高
原媒体类型的场景后续替代方案
W3C的规划确实是把原有媒体类型覆盖的场景,都拆解为更细粒度的媒体特性纳入Media Queries体系,你关心的@media print等效实现目前已经有可用的替代方案:
- 可以用
@media (output-mode: print)直接匹配打印场景,这个特性就是专门用来替代原有媒体类型的分类作用 - 也可以用
@media (update: none)匹配所有静态输出场景(包括打印、导出为PDF等输出后不会再动态更新的场景),适配范围反而比单独的print媒体类型更精准
为什么是「未来逐步弃用」而非立即废弃
核心原因是生态过渡还没完成:
- 上述替代媒体特性的浏览器兼容性还没有拉满,目前还有不少旧版本浏览器不支持
- 存量站点中使用媒体类型的代码量极大,直接废弃会导致大量历史站点出现样式异常
等到替代特性的支持率覆盖绝大多数设备,且开发者普遍完成代码迁移后,媒体类型才会正式被废弃。
内容的提问来源于stack exchange,提问作者Anthony LoPrimo
相关产品推荐
相关产品推荐

