html - 如何设置 html 页面布局对媒体类型的依赖?

标签 html css

A、B 是 html 中的部分(创建为表格)。我需要在屏幕上以某种方式显示它们,在打印品上以另一种方式显示它们。此外,A 和 B 有两个子部分:A', A'' 和 B', B''(其中每个子部分都是非空的并且 A=A'A'';B=B'B'' 这意味着 A等于 A' 后跟 A''(B 相同))。 在屏幕上,我想先显示 A,然后再显示 B(这里的小节不相关)。 在打印时我想要 2 页,其中第一页包含 A'、B' 部分(按给定顺序),第二页包含 A''、B''。

屏幕:A B

打印页面: 第一页:A'B'

第二页:A''B''

有什么办法可以解决这个问题吗?

最佳答案

如果我没有正确理解您的意思:您必须声明一些 CSS 来隐藏屏幕上的部分,并声明一个特定的 CSS 来添加分页符:

@media screen {
    .print-only {
        display: none;
    }
}

.page-break {
    page-break-after: always;
}

然后你就可以使用它们了:

<article>
    <section class="print-only">A'</section>
    <section class="print-only">B'</section>
    <span class="print-only page-break></span>
    <section class="print-only">A''</section>
    <section class="print-only">B''</section>
</article>

所有部分在打印时(仅)可见,并且在 A'B' 和 A''B'' 之间会有一个分页符。现在你必须改变他们的顺序。这不是可移植的(您可能需要使用供应商特定的前缀(-moz-ms-webkit),这里我展示了 CSS3语法:

@media screen {
    .print-only {
        display: none;
    }
}

@media print {
    article {
        display: box;
    }

    section {
        box-orient: vertical;
    }

    .first-page {
        box-ordinal-group: 1;
    }

    .first-page:last {
        page-break-after: always;
    }

    .second-page {
        box-ordinal-group: 2;
    }
}

您的 HTML 将是:

<article>
    <section class="first-page">A'</section>
    <section class="second-page">B'</section>
    <section class="first-page">A''</section>
    <section class="second-page">B''</section>
</article>

关于html - 如何设置 html 页面布局对媒体类型的依赖?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29673535/

相关文章:

javascript - 如何使 superfish 下拉菜单响应?

html - iFrame 最佳实践

css - 如何制作 3 列,右列有两个部分

jQuery replaceWith() 在使用 indexOf() 时无法正常工作

javascript - Onsubmit window.location 不工作

选择之前会弹出 JavaScript 警报

HTML5 CSS3 页脚栏

javascript - 在更改下拉选择时将 addClass 添加到 div

javascript - 如何使用 jQuery 选择器获取此元素?

jquery - 使用 jQuery 问题切换重叠 div 的 z-index