【问题标题】:Cannot change width of element for print media无法更改打印介质的元素宽度
【发布时间】:2014-07-14 18:27:00
【问题描述】:

假设屏幕媒体中有两列并排放置。两列都有transition: width .1s;(可以适应任何延迟)。现在的任务是更改打印介质的宽度。从 Google Chrome v35 开始,我必须使用变通方法才能实现。

让我给你看一个例子(你可以查看实时示例:http://jsbin.com/faxow

HTML

<div class="column eight">Lorem ipsum</div>
<div class="column four">Lorem ipsum</div>

CSS

.column { float: left; transition: width .1s; }

.eight { width: 66.66667%; }
.four { width: 33.33333%; }

@media print {
  .eight, .four { width: 100%; }
}

这不会将width: 100% 应用于 Google Chrome(至少 v35)中印刷媒体中的列,除非我:

  • transition: width .1s 移动到@media screen {} 范围
  • 完全摆脱transition: width .1s
  • 在带有 Javascript 的 window.matchMedia('print') 侦听器中使用 alert()

有什么特殊原因吗?这是预期的行为吗?

【问题讨论】:

    标签: css google-chrome printing


    【解决方案1】:

    这是因为在@media print 中,浏览器无法解释转换代码。
    您可以通过添加以下内容来简单地解决问题:

    @media print {
      * {
        transition: none !important;
        -webkit-transition: none !important;
        -moz-transition: none !important;
      }
    }
    

    【讨论】:

    • 我喜欢你的解决方案。它看起来比我想出的更优雅(@media 屏幕内的范围转换)。但这有点不是我要问的。我想知道为什么 Chrome 会发生这种情况而不是其他浏览器,以及正确的行为是什么,我在 W3C 中找不到任何规范。有什么想法吗?不过,我很感谢您的回答,我相信这对未来的许多人都会有所帮助。
    猜你喜欢
    • 2018-11-25
    • 1970-01-01
    • 2023-03-14
    • 1970-01-01
    • 1970-01-01
    • 2011-03-25
    • 1970-01-01
    • 1970-01-01
    • 2019-10-28
    相关资源
    最近更新 更多