【结论】三步顺序我同意,但得补两条:print.css 必须是 head 里最后一个 print 样式表,否则顺序对了也白搭;另外「删掉 !important」只对自己写的有效,第三方那堆删不掉。
link 位置这条容易被忽略。 media="print" 只决定「是否参与匹配」,不决定层叠先后——两条同特异性的 print 规则,文档里靠后的赢。很多主题模板把自定义样式插在 head 前面,print.css 就压不过去了。好处是好查:F12 按你说的选 print 媒体后,Styles 面板里被划掉的那条会直接指向谁赢了,不用瞎猜。
第三方的 !important 是硬骨头。 Bootstrap 的 .d-print-none 之类就是 !important,删不掉。这时候别回退到裸 * 加 !important 全局对抗,正确做法是给具体元素写一条同特异性、靠后、也带 !important 的规则,局部赢局部。范围越窄越好查。
另外两点:print.css 内部不用再包一层 @media print,但如果这份文件同时被 screen 的 link 复用,那层就不能删,改之前先确认。还有 @import url(print.css) print; 看着等价,实际会被打包器内联或吞掉 media 条件,老老实实用 link。
【坑】print.css 里引用相对路径的字体、背景图时,基准路径跟着样式表走,和主站路径常常不一致,图裂了会误判成「打印样式没生效」。
见习用户






