2009-10-16 13 views

Respuesta

0

Bueno, no se puede hacer eso con HTML simple y corriente. Como se mencionó, usa CSS. ¡Pero también querrás un poco de posicionamiento!

+0

¿Cómo lo hago? – netimen

3

Hay muchas maneras en que puede hacer esto con CSS, y cada una tiene sus pros y sus contras. Una forma sería usar posicionamiento relativo. Un ejemplo rápido podría funcionar así:

<span class="fraction"> 
    <span class="numerator">3</span> 
    <span class="denominator">4</span> 
</span> 

Y el CSS para ir junto con esto:

span.fraction { } 

/* Or child selector (>) if you don't care about IE6 */ 
span.fraction span.numerator { 
    position:relative; 
    top:-0.5em; 
} 

span.fraction span.denominator { 
    position:relative; 
    top:0.5em; 
    left:-0.5em; /* This will vary with font... */ 
} 

Este ejemplo particular funcionaría mejor si se utiliza una fuente de espacio fijo.

+1

Pero aquí el desplazamiento a la izquierda depende del tamaño del superíndice y del subíndice. Pero, ¿y si el nominador es 31234 y el denominador es 56547? ¿Hay una decisión unificada que funcione, no dependiendo del tamaño del superíndice y del subíndice? – netimen

+0

@netimen Este es un buen punto y pensé en él después de actualizar el ejemplo anterior. En resumen: no, no hay valor mágico. Esta es una ocasión en la que el módulo CSS3 Ruby puede ser útil. –

+0

@ netimen Sería posible calcular el desplazamiento correcto usando JavaScript y luego aplicarlo a cada instancia de super/subíndice. ¿Qué es lo que intentas representar? Fracciones? ¿Compuestos químicos? –

4

Aquí hay una solución limpia. Crear dos clases CSS:

.nobr { 
    white-space: nowrap; 
} 
.supsub { 
    display: inline-block; 
    margin: -9em 0; 
    vertical-align: -0.55em; 
    line-height: 1.35em; 
    font-size: 70%; 
    text-align: left; 
} 

Es posible que ya tenga la clase "nobr" como reemplazo <nobr>. Ahora para expresar la fórmula molecular para el sulfato, utilice la clase "supsub" como sigue:

<span class="nobr">SO<span class="supsub">2-<br />4</span></span> 

es decir, incluir su superíndice/subíndice dentro de la clase "supsub", y poner un < br/> entre ellos. Si desea que sus superíndices/subíndices sean un poco más grandes o más pequeños, ajuste el tamaño de la fuente y luego modifique con la alineación vertical y la altura de línea. La opción -9em en el margen es evitar que los superíndices/subíndices se agreguen a la altura de la línea que los contiene; cualquier gran valor servirá.

2

Utilice el estilo de tabla CSS (excepto para IE8 y abajo). HTML:

<span class="over-under"> 
    <span class="over">sup</span> 
    <span class="under">sub</span> 
</span> 

CSS:

span.over-under { 
    position: relative; 
    top: 1em; 
    display: inline-block; 
} 
span.over-under > .over { 
    display: table-row; 
} 
span.over-under > .under { 
    display: table-row; 
} 

violín: https://jsfiddle.net/FredLoney/Loxxv769/4/

Además de ser más simple que ajustes de posición relativa, esta solución evita distorsiones de diseño que surgen de esas alternativas. Ver, por ejemplo, https://jsfiddle.net/FredLoney/da89nyk2/1/.

Cuestiones relacionadas