¿Superíndice solo en CSS?


¿Cómo puedo hacer superíndice, solo en CSS?

Tengo una hoja de estilos donde me marca los enlaces externos con un carácter superíndice, pero estoy teniendo un tiempo difícil conseguir que el carácter se alinean correctamente.

Lo que tengo actualmente, se ve así:

a.external:after {
  font-size: 50%;
  vertical-align: top;
  content: "+";
}

Pero no funciona.

Naturalmente, usaría la etiqueta <sup>, solo si content permitiera HTML...

 280
css
Author: Dan Herbert, 2009-02-02

13 answers

Puedes hacer superíndice con vertical-align: super, (además de un acompañante font-size reducción).

Sin embargo, asegúrese de leer las otras respuestas aquí, particularmente las de paulmurray y cletus, para obtener información útil.

 437
Author: Peter Boughton,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 11:33:26

Honestamente no veo el punto en hacer superíndice/subíndice solo en CSS. No hay ningún atributo CSS útil para ello, solo un montón de implementaciones de cosecha propia que incluyen:

.superscript { position: relative; top: -0.5em; font-size: 80%; }

O usando vertical-align o estoy seguro de otras maneras. La cosa es que empieza a complicarse:

Vale la pena enfatizar el segundo punto. Por lo general, el superíndice/subíndice no es realmente un problema de estilo, pero es indicativo de significado.

Nota al margen: Vale la pena mencionar esta lista de entidades para expresiones matemáticas comunes de superíndice y subíndice aunque esta pregunta no se relaciona con eso.

Las etiquetas sub/sup están en HTML y XHTML. Solo usaría esos.

En cuanto al resto de su CSS, el :después los atributos de pseudo-elemento y contenido no son ampliamente soportados. Si realmente no quieres poner esto manualmente en el HTML, creo que una solución basada en Javascript es tu siguiente mejor opción. Con jQuery esto es tan simple como:

$(function() {
  $("a.external").append("<sup>+</sup>");
};
 168
Author: cletus,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-06-19 10:17:31

La documentación CSS contiene el equivalente CSS estándar de la industria para todas las construcciones HTML. Es decir: la mayoría de los navegadores web en estos días no manejan explícitamente SUB, SUP, B, I y así sucesivamente - que (un poco sorta) se convierten en elementos SPAN con propiedades CSS apropiadas, y el motor de representación solo se ocupa de eso.

La página es Apéndice D. Hoja de estilo predeterminada para HTML 4

Los bits que desea son:

small, sub, sup { font-size: .83em }
sub             { vertical-align: sub }
sup             { vertical-align: super }
 117
Author: paulmurray,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-02-21 13:15:40

Estaba trabajando en una página con el objetivo de tener un texto claramente legible, con elementos superíndices QUE NO cambian los márgenes superior e inferior de la línea-con las siguientes observaciones:

Si para su texto principal tiene line-height: 1.5em por ejemplo, debe reducir la altura de línea de su texto superíndice para que aparezca correctamente. Usé line-height: 0.5em.

También, vertical-align: super funciona bien en la mayoría de los navegadores, pero en IE8 cuando tiene un elemento superíndice presente, el resto de esa línea se empuja hacia abajo. Tan en su lugar, usé vertical-align: baseline junto con un negativo top y position: relative para lograr el mismo efecto, que parece funcionar mejor en todos los navegadores.

Entonces, para agregar a las "implementaciones de cosecha propia":

.superscript {
    font-size: .83em;
    line-height: 0.5em;
    vertical-align: baseline;
    position: relative;
    top: -0.4em;
}
 24
Author: Lessan Vaezi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-01-07 08:31:13

Http://htmldog.com/articles/superscript/ Esencialmente:

position: relative;
bottom: 0.5em;
font-size: 0.8em;

Funciona bien en la práctica, por lo que puedo decir.

 12
Author: Nick Presta,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-07-19 22:34:55

Lo siguiente está tomado del html interno de Mozilla Firefox.css:

sup {
  vertical-align: super;
  font-size: smaller;
  line-height: normal;
}

Entonces, en tu caso sería algo como:

.superscript {
  vertical-align: super;
  font-size: smaller;
  line-height: normal;
}
 9
Author: Christian Stadler,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-07-13 13:26:14

Esta es otra solución limpia:

sub, sup {vertical-align: baseline; position: relative; font-size: 70%;} /* 70% size of its parent element font-size which is good. */
sub {bottom: -0.6em;} /* use em becasue they adapt to parent font-size */
sup {top: -0.6em;} /* use em becasue they adapt to parent font-size */

De esta manera, todavía puede usar las etiquetas sup/sub, pero arregló su comportamiento idiota para siempre arruinar la altura de la línea de párrafo.

Así que ahora puedes hacer:

  <p>This is a line of text.</p>
  <p>This is a line of text, <sub>with sub text.</sub></p>
  <p>This is a line of text, <sup>with sup text.</sup></p>
  <p>This is a line of text.</p>

Y la altura de la línea de párrafo no debe joderse.

Probado en IE7, IE8, FF3.6, SAFARI4, CHROME5, OPERA9

Probé usando un p {line-height: 1.3;} (que es una buena altura de línea a menos que desee que sus líneas se peguen demasiado cerca) y todavía funciona, causa "-0.6 em" es una cantidad tan pequeña que también con esa altura de línea el texto sub/sub encajará y no se sobrepasará entre sí.

Olvidé un detalle que podría ser relevante Siempre uso DOCTYPE en la 1ª línea de mi página (específicamente uso el HTML 4.01 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">). Así que no se si esta solución funciona bien cuando el navegador está en modo quirkmode (o no en modo estándar) debido a la falta de DOCTYPE o a un DOCTYPE que no desencadena el modo Estándar/Casi estándar.

 5
Author: Marco Demaio,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-09-01 19:06:36

Si está cambiando el tamaño de la fuente, es posible que desee dejar de reducir los tamaños con esta regla:

sup sub, sub sup, sup sup, sub sub{font-size:1em !important;}
 4
Author: freexe,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-06-15 16:56:04

No estoy seguro de si esto está relacionado, pero he resuelto mi problema con las entidades HTML &sup2; ya que no pude agregar ninguna otra etiqueta html dentro de una etiqueta <label>. Así que la idea era usar códigos ASCII en lugar de etiquetas css o HTML.

 1
Author: Archrade,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-01-17 12:10:50

La propiedad CSS font-variant-position está siendo considerada y eventualmente puede ser la respuesta a esta pregunta. Sin embargo, a principios de 2017, solo Firefox lo admite.

.super {
    font-variant-position: super;
}

Véase MDN.

 0
Author: hashchange,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-02-22 21:32:31
 -1
Author: Frank Schwieterman,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-02-01 22:12:54
.superscript {
  position: relative;
  top: 5px;
  font-size: 90%;
  vertical-align: super;
}
 -2
Author: Razvan Cercelaru,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-03-20 14:23:03

Aquí está la forma exacta en que sup usa:

.superscript{
    vertical-align:super;
    font-size:smaller;
}

Encontrado esto a través de Google chrome inspeccionar elemento.

 -2
Author: HiPeoples,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-06-04 01:55:39