【问题标题】:How do you debug printable CSS?你如何调试可打印的 CSS?
【发布时间】:2010-10-18 03:06:55
【问题描述】:

我一直使用 Firebug 和 IE Developer Toolbar 来调试棘手的 CSS 问题。但偶尔会出现一个棘手的错误,该错误仅在您打印页面时才会出现。

您使用什么技术/工具来诊断此类问题?有没有办法在打印视图中充分利用传统的 CSS 调试工具?

更新:我已经使用 PDF 打印机来避免浪费纸张;我的问题是我无法右键单击打印的 DOM。下面的一些其他答案非常有帮助,谢谢。 :-)

【问题讨论】:

标签: css


【解决方案1】:

我使用 Adob​​e PDF 虚拟打印机,因为它最接近您所获得的真实打印机,而且不会浪费墨水和纸张。

无论如何,建议使用单独的 CSS 进行打印,图形要简单得多,而仅用于设计目的的图像更少。

【讨论】:

  • 是的,我正在尝试调试的是单独的 CSS。 (PDF 打印机是一个很好的提示;我经常使用它。)
【解决方案2】:

我使用 WebDeveloper 插件和 CSS --> 按媒体类型显示 CSS --> 打印来查看打印时的 CSS。 Firebug 的检查实用程序使用插件过滤的 CSS。

【讨论】:

  • 遗憾的是,该视图甚至与 Firefox 实际打印的内容完全不同(打印时它似乎也使用仅屏幕样式)。在 Firebug 中编辑样式时,我没有找到比经常使用打印预览选项更好的选择。
  • 确实,我认为是因为没有页面的概念……但至少,您无需预览即可查看。
  • 它似乎只使用打印样式。一个不错的技巧是不仅要设置特定的媒体类型,还要将所有其他样式表设置为 media="all, print"。为我工作:-)
【解决方案3】:

如果您不想付钱,请打印到 Microsoft XPS Document Writer。或者,如果您有足够的资金,请使用SnagIt(现场免费试用)。

【讨论】:

    【解决方案4】:

    我使用 Firefox 和 developer toolbar

    我使用任务栏中的实时 css 编辑工具,它非常有用,可以实时修改 css 并实时查看结果。

    我还在您的网站上使用了大纲功能,即鼠标悬停时的 div 和类似内容。找到 div 真的很有帮助。

    对于打印问题,去 CSS -> 按媒体显示 CSS 样式 -> 打印

    这个工具里还有很多其他的工具,我大概用了10%左右。

    尝试一下,也许你会发现一些有用的东西。

    【讨论】:

      【解决方案5】:

      最后列出您的打印 CSS,然后从您的 CSS 链接或导入语句中删除“打印”条件如何?然后在浏览器窗口中调试打印 CSS。

      【讨论】:

      • 只需要确保你设置了#body { width: 8.5in; height:11in;}
      • 好主意!这对我来说非常有效
      • 在 Firefox v22 中对我不起作用。看起来与实际打印的非常不同。
      • 曾在 FF37 中工作。打印链接标签是 css 链接标签列表中的最后一个。将该链接标签中的媒体属性从“打印”切换为“屏幕”。保留所有其他链接标签。
      【解决方案6】:

      刚刚发现lee-penkman 对 Firefox 中的一项新功能here 的评论:在 Firefox 中按 Shift-F2 打开浏览器控制台(不是 javascript 控制台),然后输入 media emulate print。效果非常好!


      2018 年 9 月更新:从 Firefox 62 开始,开发者控制台已消失。现在似乎没有办法激活打印样式模拟。


      2019 年 11 月更新:在 Firefox 69 中,似乎又多了一个用于打印样式模拟的新按钮。请参阅此页面上的其他答案:https://stackoverflow.com/a/58015662/195476

      【讨论】:

      • 一旦我注意到你实际所说的而不是假设我知道,这对我来说非常有用。这不在 F12 工具的控制台中,它是开发人员工具栏。正是我想要的。
      • 遗憾的是,此功能的行为并非 100% 像实际的打印功能。 THIS 启用了media emulate print 选项,而THIS 是实际的Firefox 打印预览。
      • 在 Mac 上:fn+shift+F2
      • 从 Firefox 62 开始,开发者工具栏已被删除:developer.mozilla.org/en-US/docs/Tools/GCLI。见stackoverflow.com/questions/47877112/…
      • answer below。您应该考虑编辑您的答案并将读者重定向到它。
      【解决方案7】:

      我一直使用 Web 开发人员工具栏(如其他答案中所述),但 Firebug 似乎不时会错过一些样式。所以我在浏览器中添加了一个书签,并添加了以下 Javascript 作为书签的 URL。现在我可以通过单击书签简单地切换到打印样式:

      javascript:(function(){var%20h,a,f;a=document.getElementsByTagName('link');for(h=0;h<a.length;h++){f=a[h];if(f.rel.toLowerCase().match(/stylesheet/)&&f.href&&(f.media=='print'||f.media=='screen')){var%20g=f.href.replace(/(&|%5C?)forceReload=\d+/,'');if(f.media.toLowerCase().match(/screen/))f.media="dontshow";if(f.media.toLowerCase().match(/print/))f.media="all";f.href=g+(g.match(/\?/)?'&':'?')+'forceReload='+(new%20Date().valueOf());}}})()
      

      上面的代码查找所有样式表链接,测试它是否为 media=print,如果是,则将其更改为 media=all(并通过将其替换为 media=dontshow 来隐藏所有 media=screen)并通过添加一个重新加载样式表URL 的时间标记。基本的重新加载脚本来自其他人,我添加了媒体部分。 这对我很有用!

      这将是上面用于解释的 JavaScript URL 的更易读版本:

      javascript: (function() {
          var h, a, f;
          a = document.getElementsByTagName('link');
          for (h = 0; h < a.length; h++) {
              f = a[h];
              if (f.rel.toLowerCase().match(/stylesheet/) && f.href && (f.media == 'print' || f.media == 'screen')) {
                  var g = f.href.replace(/(&|\?)forceReload=\d /, '');
                  if (f.media.toLowerCase().match(/screen/)) f.media = "dontshow";
                  if (f.media.toLowerCase().match(/print/)) f.media = "all";
                  f.href = g(g.match(/\?/) ? '&' : '?')
                  'forceReload=' (new Date().valueOf());
              }
          }
      })()
      

      【讨论】:

        【解决方案8】:

        在 chrome 开发者工具中 (F12 \ Ctrl(mac 上的 cmd) + Shift + C): 在仿真选项卡中(从 Chrome 32 起恕我直言),有一个“媒体”选项卡。

        您可以在此处选中媒体模拟复选框并选择您想要模拟的媒体(“打印”、“屏幕”等)

        【讨论】:

          【解决方案9】:

          在 Chrome 51 中:

          打开 devtools(CTRL + F12CTRL + SHIFT + I)并单击 ... 菜单,单击 More Tools &gt; Rendering settings 打开开发者控制台的 Rendering 选项卡(或者,如果控制台已打开,只需导航到此标签)。

          在该选项卡中,选择并选中 Emulate Media: print 的复选框。

          【讨论】:

          • 当心:这不会模拟隐藏背景图像/颜色之类的东西(Firefox 的答案就是这样)。
          • IE上有打印模拟器吗?
          【解决方案10】:

          在 Firefox 69 中,我找到了一个模拟打印媒体的按钮。只需打开开发人员工具 (F12) 并单击检查器。切换按钮是下面屏幕截图中突出显示部分中最左侧的图标,看起来像一张纸。

          【讨论】:

          • 这应该被视为与 FireFox 相关的答案。
          • 是的,差点错过了那个蓝色的小纸图标,谢谢
          • 点击,但没有任何反应
          • @Andrii 你能详细说明一下吗?
          猜你喜欢
          • 2011-08-30
          • 2016-02-10
          • 1970-01-01
          • 2018-10-17
          • 1970-01-01
          • 1970-01-01
          • 2017-06-09
          • 1970-01-01
          相关资源
          最近更新 更多