惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

MongoDB | Blog
MongoDB | Blog
B
Blog RSS Feed
MyScale Blog
MyScale Blog
M
MIT News - Artificial intelligence
H
Hackread – Cybersecurity News, Data Breaches, AI and More
J
Java Code Geeks
U
Unit 42
Blog — PlanetScale
Blog — PlanetScale
L
LangChain Blog
C
Check Point Blog
WordPress大学
WordPress大学
Last Week in AI
Last Week in AI
人人都是产品经理
人人都是产品经理
T
Tailwind CSS Blog
Vercel News
Vercel News
腾讯CDC
GbyAI
GbyAI
有赞技术团队
有赞技术团队
S
SegmentFault 最新的问题
H
Help Net Security
博客园 - 三生石上(FineUI控件)
D
DataBreaches.Net
Microsoft Security Blog
Microsoft Security Blog
小众软件
小众软件

克洛洛日记

一年回本计划 | 克洛洛日记 股票期权的Theta | 克洛洛日记 股票期权的Gamma | 克洛洛日记 股票期权的Delta | 克洛洛日记 KDJ指标 | 克洛洛日记 布林线 | 克洛洛日记 MACD指标 | 克洛洛日记 RSI指标 | 克洛洛日记 时间协议 | 克洛洛日记 聊聊Spring的stereotype注解 | 克洛洛日记 免费申请 JetBrains 全产品 License | 克洛洛日记 Aloha 一个Hexo主题 | 克洛洛日记 泰国之旅 [三] | 克洛洛日记 泰国之旅 [二] | 克洛洛日记 泰国之旅 [一] | 克洛洛日记 Nginx使用SSL证书配置https | 克洛洛日记 i18next | 克洛洛日记 错误排查:非ROOT用户使用密钥进行ssh登录提示输入密码 | 克洛洛日记 使用Github、Travis-CI和Coding.net自动部署博客[三] | 克洛洛日记 使用EditorConfig | 克洛洛日记 使用Github、Travis-CI和Coding.net自动部署博客[二] | 克洛洛日记 寓食记 | 克洛洛日记 使用Github、Travis-CI和Coding.net自动部署博客[一] | 克洛洛日记 书单 | 克洛洛日记 WebJars使用示例 | 克洛洛日记 WebJars介绍 | 克洛洛日记 Maven打jar包内容出错 | 克洛洛日记 数据分布式模型 | 克洛洛日记 Wicket的HelloWorld | 克洛洛日记 Java运行时内存结构 | 克洛洛日记
JavaScript执行window.print()打印内容为空白 | 克洛洛日记
海拉鲁球果 <hyrul · 2016-10-08 · via 克洛洛日记

· JavaScript / HTML / CSS

今天写代码的时候,需要用到打印页面的功能,按理说只要很简单的一段js代码就可以了:

window.print();

但是很奇怪,怎么执行,要打印的页面内容都是空白!

于是一步一步分析,终于找到了罪魁祸首的代码片段:

@media print {
    body * {
        visibility: hidden;
    }
}

这段 CSS 的作用就是当媒体类型为 print 的时候,body 里面所有元素都采用样式 “visibility: hidden;”,所以解决这个问题是 把 “visibility: hidden;” 去掉就可以了。

但是这里有两点可以说:

  1. 写代码的时候,一个模块的功能不能影响到全局,这是谨慎也是需要第一位考虑的做法;
  2. CSS 的 Media Type

Media Type

Media Type 种类

Media Type 直译过来就是媒体类型,这是CSS2引入的属性,可以通过 @media 等方式给不同的媒体类型定义不同的CSS样式规则。上面讲到的,我在打印页面的时候,所处的媒体类型就是 print,一般我们在浏览网页的时候,媒体类型是 screen,W3C给出的媒体类型有以下十种(注意,名字是大小写敏感的):

  1. all 适用于所有设备。
  2. braille 用于盲文触觉反馈设备。
  3. embossed 用于分页盲文打印机。
  4. handheld 用于手持设备(通常是指有限带宽的小屏设备)。
  5. print 用于分页材料和打印预览模式下在屏幕上查看的文档。
  6. projection 用于投影机。
  7. screen 主要用于彩色计算机屏幕。
  8. speech 用于语音合成设备。
  9. tty 适用于使用固定间距字符网格(如电传打字机,终端,或具有有限显示能力的便携式设备)的媒体。在“tty”类型中不应该使用像素单元。
  10. tv 用于电视类设备(分辨率低,彩色,有限可滚动屏幕,有声音的)。

Media Type 引入方式

Media Type 有多种引入方式。

  1. @media方式引入
@media print{
  body * {
    visibility: hidden;
  }
}
这种方式在 CSS 文件中 和 style 标签里都可以使用。

2. @import方式引入

@import url("css/print.css") print;
和上一种一样,这种方式在 CSS 文件中 和 style 标签里都可以使用。

3. link方法引入

<link rel="stylesheet" type="text/css" href="../css/print.css" media="print" />
  1. xml方式引入
<?xml-stylesheet rel="stylesheet" media="screen" href="css/style.css">