En exposant dans CSS seulement?

Comment puis-je faire du exposant, seulement en CSS?

j'ai une feuille de style où je marque les liens externes avec un caractère en exposant, mais j'ai du mal à obtenir le caractère aligné correctement.

Ce que j'ai actuellement, ressemble à ceci:

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

mais ça ne marche pas.

naturellement, j'utiliserais le <sup> - tag, seulement si content permettrait HTML...

280
css
demandé sur Dan Herbert 2009-02-02 01:04:16

13 réponses

vous pouvez faire le superscript avec vertical-align: super , (plus une réduction font-size ).

cependant, assurez-vous de lire les autres réponses ici, en particulier ceux par paulmurray et cletus , pour des informations utiles.

437
répondu Peter Boughton 2017-05-23 11:33:26

honnêtement, je ne vois pas l'intérêt de faire du superscript/subscript uniquement dans CSS. Il n'y a pas d'attribut CSS pratique pour cela, juste un tas d'implémentations maison incluant:

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

ou en utilisant vertical-align ou je suis sûr d'autres moyens. Chose est, il commence à se compliquer:

le second point mérite d'être souligné. Typiquement l'exposant / l'indice n'est pas en fait une question de style mais est indicatif du sens.

note de Côté: Il est intéressant de mentionner cette liste des entités pour la commune de mathématiques en exposant et en indice expressions même si cette question ne concerne pas que.

les balises sub / sup sont en HTML et XHTML. Je voudrais juste de l'utiliser.

comme pour le reste de votre CSS, les attributs :after pseudo-element et content ne sont pas largement supportés. Si vous ne voulez vraiment pas mettre cela manuellement dans le HTML je pense qu'une solution basée sur Javascript est votre meilleur pari suivant. Avec jQuery c'est aussi simple que:

$(function() {
  $("a.external").append("<sup>+</sup>");
};
168
répondu cletus 2015-06-19 10:17:31

la documentation CSS contient l'équivalent CSS standard de l'industrie pour toutes les constructions HTML. C'est-à-dire: la plupart des navigateurs Web de nos jours ne traitent pas explicitement SUB , SUP , B , I et ainsi de suite - ils (kinda sorta) sont convertis en SPAN éléments avec des propriétés CSS appropriées, et le moteur de rendu ne traite que de cela.

la page est Annexe D. feuille de style par défaut pour HTML 4

Les bits que vous souhaitez sont:

small, sub, sup { font-size: .83em }
sub             { vertical-align: sub }
sup             { vertical-align: super }
117
répondu paulmurray 2009-02-21 13:15:40

je travaillais sur une page dans le but d'avoir un texte clairement lisible, avec des éléments en exposant ne changeant pas les marges supérieure et inférieure de la ligne - avec les observations suivantes:

si pour votre texte principal vous avez line-height: 1.5em par exemple, vous devez réduire la hauteur de ligne de votre texte en exposant pour qu'il apparaisse correctement. J'ai utilisé line-height: 0.5em .

aussi, vertical-align: super fonctionne bien dans la plupart des navigateurs, mais dans IE8 quand vous avez un exposant présence d'un élément, le reste de la ligne, est poussé vers le bas. Donc à la place j'ai utilisé vertical-align: baseline avec un négatif top et position: relative pour obtenir le même effet, qui semble fonctionner mieux entre les navigateurs.

ainsi, pour ajouter aux "réalisations locales":

.superscript {
    font-size: .83em;
    line-height: 0.5em;
    vertical-align: baseline;
    position: relative;
    top: -0.4em;
}
24
répondu Lessan Vaezi 2010-01-07 08:31:13

http://htmldog.com/articles/superscript / essentiellement:

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

fonctionne bien dans la pratique, autant que je peux dire.

12
répondu Nick Presta 2012-07-19 22:34:55

ce qui suit est tiré du html interne de Mozilla Firefox.css:

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

donc, dans votre cas, ce serait quelque chose comme:

.superscript {
  vertical-align: super;
  font-size: smaller;
  line-height: normal;
}
9
répondu Christian Stadler 2014-07-13 13:26:14

c'est une autre solution propre:

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 cette façon vous pouvez toujours utiliser sup/sub tags mais vous fixé leur comportement idiote pour toujours visser la hauteur de la ligne de paragraphe .

donc maintenant vous pouvez faire:

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

et votre hauteur de ligne de paragraphe ne doit pas se foirer.

testé sur IE7, IE8, FF3.6, SAFARI4, CHROME5, OPERA9

j'ai testé en utilisant un p {line-height: 1.3;} (qui est une bonne hauteur de ligne sauf si vous voulez que vos lignes à coller trop près) et il fonctionne toujours, parce que" -0.6 em " est une si petite quantité que même avec cette hauteur de ligne Le sous/sous texte conviendra et ne pas aller sur l'autre.

a oublié un détail qui pourrait être pertinent j'utilise toujours DOCTYPE dans le première ligne de ma page (spécifiquement j'utilise le HTML 4.01 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> ). Donc je ne sais pas si cette solution fonctionne Eh bien lorsque le navigateur est en quirkmode (ou non en mode standard) en raison de L'absence de DOCTYPE ou D'un DOCTYPE qui ne déclenche pas le mode Standard/presque Standard.

5
répondu Marco Demaio 2010-09-01 19:06:36

si vous changez la taille de la police, vous pourriez vouloir arrêter de réduire les tailles avec cette règle:

sup sub, sub sup, sup sup, sub sub{font-size:1em !important;}
4
répondu freexe 2011-06-15 16:56:04

Je ne suis pas sûr que ce soit lié mais j'ai résolu mon problème avec &sup2; entités HTML car je n'ai pas été en mesure d'ajouter d'autres balises html à l'intérieur d'une étiquette <label> . Donc l'idée était d'utiliser des codes ASCII au lieu des balises CSS ou HTML.

1
répondu Archrade 2016-01-17 12:10:50

La propriété CSS font-variant-position est en cours d'examen et peuvent éventuellement être la réponse à cette question. Au début de 2017, seulement Firefox soutient, cependant.

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

voir MDN .

0
répondu hashchange 2017-02-22 21:32:31
.superscript {
  position: relative;
  top: 5px;
  font-size: 90%;
  vertical-align: super;
}
-2
répondu Razvan Cercelaru 2013-03-20 14:23:03

voici la façon exacte dont sup utilise:

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

L'a trouvé via google Chrome inspect element.

-2
répondu HiPeoples 2014-06-04 01:55:39