chrome 和 safari 上的打印宽度不同

Posted

技术标签:

【中文标题】chrome 和 safari 上的打印宽度不同【英文标题】:Print width different on chrome and safari 【发布时间】:2017-01-13 01:32:28 【问题描述】:

我正在模态视图上实现报表查看器。 这些是一些打印样式:

@page
   margin: 5mm;


body
   visibility: hidden;

.modal-report
   width: 100%;
   height: 100%;
   margin: 0;

#report-view-container-id, #report-view-container-id *
   visibility: visible;

#report-view-container-id
   width: 100%;
   height: 100%;
   position: absolute;
   top:0;
   left: 0;


.report-view-container-letter

   max-width: 23.59cm;
   max-height: 27.94cm;
   min-width: 23.59cm;
   min-height: 27.94cm;
   padding-right: 15px; 
   padding-left: 15px;

在 Firefox 上,当我尝试打印效果很好时,宽度是完美的,但在 google chrome 和 safari 上,宽度约为 60%。 6 年前已经有一个question 被问过,但什么也没说。

在火狐上:

在谷歌浏览器和 Safari 上:

这有点 plnkr 试图重新创建我的案例

【问题讨论】:

请提供相关的 html,并删除任何对问题没有影响的 CSS(例如,我们不需要 visibility: visible,因为没有设置为 visibility: hidden)。如果您使用“sn-p”(如果您单击“编辑”,则为< > 图标,我们将能够看到结果演示! 【参考方案1】:

我在 Safari 中打印时遇到了类似的问题。文本没有换行,会从页面的右侧流出。为了解决这个问题,我在样式表中添加了以下内容。 nuke 最重要的元素是 Bootstrap 的 .container 类。

@media print 
html, body, main, header, footer, .container 
    background: transparent !important;
    color: #000 !important;
    box-shadow: none !important;
    text-shadow: none !important;
    position: relative !important;
    text-indent: 0 !important;
    clear: both !important;
    width: auto !important;
    height: auto !important;
    border: none !important;
    overflow: visible;
    margin: 0 auto 0.5% auto !important;
    top: auto !important;
    left: auto !important;
    right: auto !important;
    bottom: auto !important;
    padding: 0 !important;
    text-align: left !important;
    max-width: none !important;
    min-width: auto !important;
    min-height: auto !important;
    max-height: auto !important;
    direction: ltr !important;

之前:

之后:

【讨论】:

【参考方案2】:

这还不是答案,但评论不会让我包含我需要的格式……

@page 不是有效的媒体查询,将被忽略。对于打印样式,这应该是@media printmargin 没有被应用到任何东西——你想要类似的东西

@media print 
    mytargetelement 
        margin: 5mm
    

这对你的问题有帮助吗?

【讨论】:

这是我唯一可以提出的建议,直到您编辑您的问题以添加一个完整(但最小)的示例 :) ***.com/help/mcve

以上是关于chrome 和 safari 上的打印宽度不同的主要内容,如果未能解决你的问题,请参考以下文章

带有 flexbox 的引导列在 iOS 和 Safari 上的宽度不合适

Safari css 宽度过渡不适用于不同的单位测量

使用 JavaScript 获取图像的真实宽度和高度? (在 Safari/Chrome 中)

测量图像的宽度和高度在 Chrome 和 Firefox 中返回 0,但在 Safari 中有效

移动设备上的 Safari - 计算样式与给定不同

CSS:Chrome 和 Safari 似乎为宽度“添加”边框,而 IE、Firefox 和 Opera 没有