VP导航 VP导航
首页 提交网址

资讯文章 资讯 · NEWS

打印出来是一团糟:目录站那份一直没写的打印样式

2026-10-24 约 2,108 字 预计阅读 5 分钟 yiyunkj

打印出来是一团糟:目录站那份一直没写的打印样式 打

打印页面这件事听着过时,但在目录站的场景里并不罕见:有人要把某个分类的站点清单打出来做汇报,有人要把条目信息留给同事,还有人只是习惯把有用的一页存成 PDF。

而绝大多数站点打印出来的东西是没法看的——导航栏占掉小半页、深色背景变成一块黑、链接点不了也看不出指向哪、卡片被从中间切成两半。

目录站打印样式的隐藏区域与链接地址显示规则

图片来源:网络,版权归原作者所有,侵权请联系删除

核心就是一段媒体查询

打印样式不需要额外的文件、额外的请求,写在 print 媒体查询里就行:

@media print {
  /* 打印时的规则 */
}

这段 CSS 只在打印或另存为 PDF 时生效,对屏幕显示零影响,也不会增加任何加载成本。它是那种投入半小时、能让页面在另一个场景里体面起来的东西。

该藏什么

打印时页面上大部分装饰性内容都应该消失:

元素处理方式原因
顶部导航、侧边栏隐藏纸上没法点,纯占地方
搜索框、筛选器隐藏同上
广告位、推广条隐藏纸质材料上出现广告很尴尬
悬浮按钮、返回顶部隐藏屏幕专属
深色背景、大色块改成白底黑字费墨,且多数打印机效果差

写法上给这些元素统一加个类名会更省事,比如约定 .no-print,打印时一条规则全部隐藏,不用逐个列选择器。

@media print {
  .site-header .nav, .sidebar, .search-box,
  .ad-slot, .back-to-top, .no-print { display: none !important; }

  body { background: #fff; color: #000; }
  .card { background: #fff; border: 1px solid #ccc; }
}

该显什么:链接地址

这是打印样式里最有价值的一条。屏幕上链接可以点,纸上不行,所以要把地址直接印出来:

@media print {
  a[href^="http"]::after {
    content: " (" attr(href) ")";
    font-size: 11px;
    color: #555;
    word-break: break-all;
  }
}

这条规则会在每个外链后面加括号印出完整地址。对目录站来说,这一条几乎就是打印功能的全部意义——用户打出来的那份清单,每条站点后面跟着能手动输入的网址。

几个要注意的地方:

  • 只给 href^="http" 的加,别给页内锚点(#xxx)也印一堆片段。
  • 地址长的要允许断行(word-break: break-all),否则会撑破版面。
  • 导航里那些已经隐藏的链接不会显示,这正好——它们本来就不该出现。

别让内容被切开

打印分页是浏览器自己决定的,经常把一张卡片从中间劈成两半。几个控制断页的属性可以改善:

@media print {
  .card, .entry-item { break-inside: avoid; page-break-inside: avoid; }
  h2, h3 { break-after: avoid; page-break-after: avoid; }
}

break-inside: avoid 是标准写法,page-break-inside 是老写法,两个都写上兼容性更稳。break-after: avoid 加在标题上,能避免标题孤零零留在页底、内容全跑到下一页。

目录站的列表页卡片通常都很规整,加上这两条之后打印效果会明显改善。

顺手补上的几件小事

  • 把完整 URL 印在页脚。打印件散出去之后,别人得知道它出自哪里。可以用一个只在打印时显示的元素:.print-url { display: none },打印时改成 display: block。
  • 打印日期。同上,可以在打印时显示「打印于某年某月某日」,提醒这是快照不是实时数据。
  • 图片降质或去掉装饰图。缩略图保留(它们是有用信息),纯装饰的大图隐藏。深色模式的站点尤其要确认打印出来不是黑底。
  • 字体调小一点。屏幕上 16px 舒服,纸上偏大,正文 11 到 12pt 更合适。
  • 去掉阴影和圆角。打印机表现不好,还费墨。

不要为打印单独建一套 URL

有人会想:既然打印要特殊处理,不如做个 /print/category/x 的打印专用页。不建议。

理由有三:一是它制造了重复内容,需要靠 canonical 或者 noindex 收拾;二是多一套 URL 就多一份维护,改版时最容易漏掉;三是用户分享的往往还是原页面,你拦不住。

用 print 媒体查询就够了。原页面打印出来体面,用户也不会去记一个专门的打印地址。

如果你的站点确实有「导出成 PDF」的功能需求,那是另一回事——那是生成文件,不是打印样式,可以用服务端生成或者浏览器的打印接口,但要给导出接口加限流,别让它成为抓取放大的入口。

怎么测试

不用真打印。Chrome DevTools 里有个专门的开关:命令面板搜「Rendering」,找到「Emulate CSS media type」,选成 print,页面立刻按打印样式渲染,改 CSS 时实时生效。

检查清单:

  • 导航栏、搜索框、广告是否消失。
  • 每个条目外链后面是否印出了地址。
  • 卡片有没有被从中间切开(拖动打印预览翻几页看看)。
  • 深色模式用户打印出来是不是白底黑字。
  • 页脚有没有带上站点名和完整 URL。

整套做下来大概几十行 CSS。这在所有优化里算是性价比很高的那一类——工作量小,而且真有人用得上的时候,体验差别很明显。

本文标签 打印样式CSS print媒体查询 页面打印降级
← 上一篇 每敲一个字就发一次请求:目录站搜索框下拉的性能问题该 下一篇 → React Native

— 本文完 —

提交网址

发现好站,欢迎自荐收录

站内搜索

站点统计

  • 今日审核0
  • 已收录站点3744
  • 正常访问3737
  • 失联站点7
  • 累计访问175

网站分类

  • AI工具 0
    AI对话0 AI绘画0 AI写作0 AI编程0 AI音视频0 AI办公效率0
  • 开发编程 0
    前端开发0 后端开发0 移动开发0 开源与代码托管0 数据库0 开发文档与教程0
  • 设计素材 0
    UI设计0 图标素材0 免费图库0 字体下载0 配色工具0 设计模板0
  • 站长工具 0
    网站统计0 SEO工具0 域名与主机0 收录提交0 建站程序0 运维监控0
  • 学习教育 0
    编程教程0 语言学习0 职业技能0 公开课与慕课0 考试题库0 中小学教育0
  • 生活服务 0
    交通出行0 外卖点餐0 房产租房0 医疗健康0 政务办事0 快递物流0
  • 影音娱乐 0
    影视观看0 音乐音频0 游戏资源0 短视频直播0 小说阅读0
  • 电商购物 0
    综合商城0 比价工具0 导购返利0 二手交易0 团购优惠0
  • 综合其他 1
    实用工具0 资源合集0 小众站点0 个人博客0 论坛社区0
  • 新闻资讯 0
    科技资讯8 财经媒体1 行业动态0 社会热点0 综合门户0
  • 资讯文章 340

最新收录

  • Cookie 越攒越大:目录站那些请
  • 连接池打满之后:目录站那几个数据库连
  • 会过期的字段怎么管:目录站条目的价格
  • 这些条目是从哪来的:目录站的数据来源
  • 语义标签之外还要补的那层:目录站的
  • 改了什么要写下来:目录站的更新日志页
  • 让模型给条目自动归类和打标签:能自动
  • 两条条目到底算不算重复:编辑距离、S

浏览排行

  1. 满分作文网 6
  2. Let's Enhance 3
  3. 淘菜菜 3
  4. MasterClass 3
  5. TypeScript 中文网 3
  6. Zhengziying 3
  7. 得意生活 3
  8. 镇江网友之家 3

联系我们

bQ:12345678

电话:400-8888-888

邮箱:admin@example.com

时间:09:00-21:00

友情链接

车机屋·焊锡条·探兔AI导航·静电测试仪·大学生联盟

关于我们|广告合作|隐私条款|网站地图

原ICP备00000000号-1,@2026

由 Z-BlogPHP 驱动