2010-01-12 9 views
20

Este es un típico examen de opción múltiple, asumir un formato de pregunta:CSS y prensa: Mantener bloque de texto junto

<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> 

y tengo todo esto asigna a los estilos apropiados con los botones de radio para la web.

Ahora, tengo que hacer una versión imprimible de la prueba. Esto es realmente más simple, ya que no necesito incluir radios, solo '___' para una marca de verificación. El problema principal es cómo evitar que la pregunta se divida durante el salto de página.

+0

Reversión de la edición. "viudas" es la etiqueta correcta. "Windows" no lo es. –

+0

Esto no necesita una nueva etiqueta. – Charles

+0

Eso puede ser cierto. Pero la edición fue incorrecta. –

Respuesta

23

Nunca he tenido suerte con la prevención constante de algo así. Puede ser un poco sucio, pero si las preguntas son generalmente de la misma duración, ¿puede forzar un salto de página después de cada X pregunta?

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

<question>...</question><br class="pageBreak" /> 
<question>...</question> 

(O aplicar esa clase a la pregunta o lo que quieras)

puede intentar utilizar el page-break-dentro de la propiedad, pero no he visto que sea consistente como soporte de los navegadores para los que es un desastre en este momento:

question { 
    page-break-inside:avoid; 
} 
+1

Parece que page-break-inside solo se admite en Opera, lo que lo hace casi inútil para "The Real World" (tm) Pensé en la otra opción, pero los tallos varían de una línea a párrafos enteros, por lo no hay consistencia en el tamaño. –

+1

Funciona en IE8, aunque actualmente el sitio w3schools dice que IE no es compatible. Creo que las versiones anteriores no. La versión de Firefox 3 que tengo actualmente, no. Tengo un requisito similar, sin embargo, en un informe que se imprimirá, decidí probar la generación de PDF, con la esperanza de que XSL-FO funcione. – jamiebarrow

+1

'page-break-inside: avoid' funciona para mí en Chrome 22 (todavía nada en Firefox 15). – bdukes

1

use una hoja de estilos de impresión independiente, y utilizar los page-break-before y page-break-after selectores para su líder y preguntas que terminan en cada página.

Si la prueba es estática, puede trazar las clases que utiliza y hacer que funcione sin más que CSS.

+0

examen es al azar, seleccionado de un grupo. Por lo tanto, no hay forma de saber cuál es la primera y la última pregunta de una página. –

+1

Necesitará JS para analizar y encontrar dónde termina una pregunta en relación con el tamaño que desea que tenga su "página". – tahdhaze09

1

Usa un diseño de tabla. Pero para evitar cambiar la semántica, use CSS.

question { 
    display: inline-table; 
} 
Cuestiones relacionadas