【问题标题】:Toggling CSS display for screen but not print media [duplicate]为屏幕而不是打印媒体切换 CSS 显示 [重复]
【发布时间】:2015-06-11 17:28:01
【问题描述】:

我有这个 html:<div id="zoom">...</div>。加载页面时,我将其设置为“显示:无”。当某个事件被触发时,“zoom” id 被设置为“display:block”。但是,我想要的是,如果用户打印页面,即使在该特定事件被触发后,它也永远不会打印“缩放”ID 中的内容。该事件将其设置为通过 jQuery 阻止:

$("#zoom").css({"display":"block"});

有没有办法在 jQuery 中定义它应该只应用于屏幕媒体?上面的代码将它设置为所有媒体类型。

【问题讨论】:

  • 您是否尝试过使用印刷媒体查询?看起来像您在这种情况下会使用的,但从您帖子中的措辞听起来您已经熟悉媒体查询。
  • 你可以制作一个打印按钮,当点击它时,隐藏或完全删除 div
  • 我相信唯一的完整证明方法就像发布的链接一样。可以忽略打印按钮,任何 JS 本质上都会内联添加样式,因此在打印时会持续存在,因为打印将使用当前的 DOM 布局。我不完全确定 CSS 中的 !important 之类的东西是否会覆盖内联样式,但有可能。使用!important 也会有其他问题。因此,如果谨慎使用并且它可以工作,但我不想在我的 CSS 中使用重要的东西,因为它很难覆盖。
  • @Leeish !important 会覆盖内联样式,只要这些内联样式未同时指定为 !important
  • 我在下面看到了。我仍然会使用 !important ,除非它只是为了几件事。但我想如果!important 真的只在印刷媒体类型中,那将是可以管理的。就这一点而言,比另一个 js lib 更好。

标签: javascript jquery css


【解决方案1】:

除非我误解了这个问题,否则您应该可以只使用媒体查询进行打印。唯一奇怪的补充是您可能必须使用 !important 规则,因为该元素是使用 javascript 可见的(可能是内联样式)。

@media print {
  #zoom {
    display: none !important;
  }
}

【讨论】:

  • 你没有误会什么。唯一的问题是我不了解 !important 的全部内容。这就是我们所需要的。
  • @theglossy1 很高兴我能帮上忙 :)
猜你喜欢
  • 2022-12-09
  • 2012-08-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-13
相关资源
最近更新 更多