1

我有一个包含容器 div 标签和一些嵌套浮动 div 标签的布局。我以这种方式使用它们来产生两列效果(而不是表格单元格)。在网页上,一切都很好。但是当我打印时,浮动的没有正确显示。这是一组 2 组容器 div/浮动 div 和一个全宽 div 标签(无浮动)的序列。这是代码:

<div style="margin-bottom: 5px; border-top: 1px solid #000000; padding: 5px; font-size: 0;">
  <div style="display: inline-block; width: 50%; vertical-align: top; font-size: 11px;">
    <span style="font-weight: bold;">Provider: </span>
    Name here
  </div>
  <div style="display: inline-block; width: 50%; vertical-align: top; font-size: 11px;">
    <span style="font-weight: bold;">Location: </span>
    Name<br/>
    Street Address<br/>
    City, State Zip<br/>
    Phone
  </div>
</div>

<div style="margin-bottom: 5px; border-top: 1px solid #000000; padding: 5px; font-size: 0;">
  <div style="display: inline-block; width: 50%; vertical-align: top; font-size: 11px;">
    <span style="font-weight: bold;">Appointments:</span>
    <br />
    No appointments scheduled
  </div>
  <div style="display: inline-block; width: 50%; vertical-align: top; font-size: 11px;">
    <span style="font-weight: bold;">Care Team:</span>
    <br />
    Name Here
  </div>
</div>

<div style="margin-bottom: 5px; padding: 5px; border-top: 1px solid #000000;">
  <span style="font-weight: bold;">Referrals:</span>
  <br />
  No referrals available
</div>

如前所述,一切都在网页上正确呈现。感谢@avrahamcool,我已将其修复,以便顶部边框线正确显示。但是,当我使用 IE9 时,我得到如下所示的内容:


提供者: 此处姓名
地点:姓名
街道地址 城市
,州 邮政编码


预约:
没有预约
护理团队:
在此处命名


推荐人:
没有可用的推荐人

它在 Chrome 中运行良好。打印时,提供者/位置和预约/护理团队在边界线之间分为两列(并在屏幕上正常显示)

4

2 回答 2

4

我已经完全重新创建了你的标记,所以我可以使用它。

就是结果。(注意这有多美?)

我已经在 IE10、IE9、IE8、FF、Chrome 中测试过了。而且,每一个都印出来,它就像一个魅力。

如果您必须将 HTML 和 CSS 结合起来编写(我看不出有什么原因……但我该判断谁)我会尽力帮助您将我的解决方案应用于您的 HTML。

所以,主要的想法是完全失去这个float东西,并使用它inline-block

但是,inline-block为元素添加了额外的间距(由标记中的换行引起),导致 50% 比这多一点,因此使列不适合一行。我使用了许多技巧之一来解决这个问题。通过font-size:0;在容器上应用,并在他的孩子上重新应用字体大小。另外,我不得不verticaly-align:top;列。

所以,总而言之,这就是最终结果。

新的 HTML 标记

<div class="Container">
    <div class="Column">
        <span class="Header">Provider:</span>
        <span>Name here</span>
    </div>
    <div class="Column">
        <span class="Header">Location:</span>
        <span>Name</span>
        <br/>
        <span>Street Address</span>
        <br/>
        <span>City, State Zip</span>
        <br/>
        <span>Phone</span>
    </div>
</div>
<div class="Container">
    <div class="Column">
        <span class="Header">Appointments:</span>
        <br/>
        <span>No appointments scheduled</span>
    </div>
    <div class="Column">
        <span class="Header">Care Team:</span>
        <br/>
        <span>Name Here</span>
    </div>
</div>
<div class="Container">
    <span class="Header">Referrals:</span>
    <br/>
    <span>No referrals available</span>
</div>

新的 CSS

*
{
    margin: 0;
    padding: 0;
}
.Container
{
    margin-bottom: 5px;
    border-top: 1px solid #000000;
    font-size: 0;
}
    .Container *
    {
        font-size: medium;
    }
.Container .Column
{
    display: inline-block;
    width: 50%;
    vertical-align: top;
}
    .Container .Header
    {
        font-weight: bold;
    }

编辑: 出于某种原因,我已经放弃了你的填充。所以是一个在容器中填充的小提琴(其余的都和以前一样)

编辑 2 内联样式

<div style="margin-bottom: 5px;padding: 5px;border-top: 1px solid #000000;font-size: 0;">
    <div style="display: inline-block;width: 50%;vertical-align: top;font-size: medium;">
        <span style="font-weight: bold;">Provider:</span>
        <span>Name here</span>
    </div>
    <div style="display: inline-block;width: 50%;vertical-align: top;font-size: medium;">
        <span style="font-weight: bold;">Location:</span>
        <span>Name</span>
        <br/>
        <span>Street Address</span>
        <br/>
        <span>City, State Zip</span>
        <br/>
        <span>Phone</span>
    </div>
</div>
<div style="margin-bottom: 5px;padding: 5px;border-top: 1px solid #000000;font-size: 0;">
    <div style="display: inline-block;width: 50%;vertical-align: top;font-size: medium;">
        <span style="font-weight: bold;">Appointments:</span>
        <br/>
        <span>No appointments scheduled</span>
    </div>
    <div style="display: inline-block;width: 50%;vertical-align: top;font-size: medium;">
        <span style="font-weight: bold;">Care Team:</span>
        <br/>
        <span>Name Here</span>
    </div>
</div>
<div style="margin-bottom: 5px;padding: 5px;border-top: 1px solid #000000;">
    <span style="font-weight: bold;">Referrals:</span>
    <br/>
    <span>No referrals available</span>
</div>

内联式 V2

所以,它可能是对你不起作用的字体修复。我很难调试,因为它对我来说工作正常。所以让我们尝试另一种方法。这一次,我们将通过从标记中删除新行来消除列之间的间距。试试这个新标记。

<div style="margin-bottom: 5px;padding: 5px;border-top: 1px solid #000000;">
    <div style="display: inline-block;width: 50%;vertical-align: top;">
        <span style="font-weight: bold;">Provider:</span>
        <span>Name here</span>
    </div><div style="display: inline-block;width: 50%;vertical-align: top;">
        <span style="font-weight: bold;">Location:</span>
        <span>Name</span>
        <br/>
        <span>Street Address</span>
        <br/>
        <span>City, State Zip</span>
        <br/>
        <span>Phone</span>
    </div>
</div>
<div style="margin-bottom: 5px;padding: 5px;border-top: 1px solid #000000;">
    <div style="display: inline-block;width: 50%;vertical-align: top;">
        <span style="font-weight: bold;">Appointments:</span>
        <br/>
        <span>No appointments scheduled</span>
    </div><div style="display: inline-block;width: 50%;vertical-align: top;">
        <span style="font-weight: bold;">Care Team:</span>
        <br/>
        <span>Name Here</span>
    </div>
</div>
<div style="margin-bottom: 5px;padding: 5px;border-top: 1px solid #000000;">
    <span style="font-weight: bold;">Referrals:</span>
    <br/>
    <span>No referrals available</span>
</div>
于 2013-09-11T16:54:27.080 回答
0

媒体=“打印”像这样:

<link rel="stylesheet" href="print.css" type="text/css" media="print" />

这样做应该使它看起来与网页相同

是的,就像 isherwood 所说的那样依赖于浏览器,如果这就是你所指的。

于 2013-09-11T15:45:30.343 回答