代码之家  ›  专栏  ›  技术社区  ›  Chris Cudmore

CSS和打印:保持文本块在一起

  •  24
  • Chris Cudmore  · 技术社区  · 14 年前

    这是一个典型的多项选择题考试,假设问题格式为:

    <question qid='1'>
    <stem>What is your name?</stem>
    <choice value = 'a'>Arthur, King of the Britons</choice>
    <choice value = 'b'>There are some who call me ... Tim!</choice>
    <choice value = 'c'>He is brave Sir Robin, brave Sir Robin, who-- Shut up! Um, n-- n-- n-- nobody, really. I'm j-- j-- j-- ju-- just, um-- just passing through.</choice>
    <choice value = 'd'>Sir Galahad... the Chaste.</choice>
    <choice value = 'e'>Zoot... Just Zoot.</choice>
    </question>
    

    我已经把这些都映射到网络上带有单选按钮的合适样式。

    现在,我需要制作一个测试的可打印版本。这实际上更简单,因为我不需要包括收音机,只需要“勾选”就可以了。主要的问题是如何防止问题在分页符上分裂。

    4 回复  |  直到 11 年前
        1
  •  29
  •   Parrots    14 年前

    我从来没有幸运地持续阻止过这样的事情。它可能有点脏,但是如果问题的长度通常相同,您可以在每x个问题之后强制分页吗?

    <style type="text/css">
    .pageBreak{
        page-break-before: always;
    }
    </style>
    
    <question>...</question><br class="pageBreak" />
    <question>...</question>
    

    (或将该类应用于问题或任何您想要的内容)

    您可以尝试在属性中使用分页符,但我没有看到它是一致的,因为浏览器对它的支持现在很混乱:

    question {
        page-break-inside:avoid;
    }
    
        2
  •  16
  •   Steve Blackwell    12 年前

    我建议你调查一下 page-break-after , page-break-inside page-break-before CSS中的规则。

        3
  •  1
  •   tahdhaze09    14 年前

    使用单独的打印样式表,并使用 page-break-before page-break-after 每一页的前导和结尾问题的选择器。

    如果测试是静态的,那么您可以绘制出所使用的类,使其在不使用CSS的情况下工作。

        4
  •  1
  •   Nate Barr    11 年前

    使用表格布局。但是为了避免改变语义,使用css。

    question {
        display: inline-table;
    }