Comment puis-je faire exposer, uniquement 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 à aligner correctement le caractère.
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
cela permettait le HTML ...
content
HTML était autorisé, la séparation des préoccupations en souffrirait.Réponses:
Vous pouvez faire un exposant avec
vertical-align: super
, (plus unefont-size
réduction qui l' accompagne ).Cependant, assurez-vous de lire les autres réponses ici, en particulier celles de paulmurray et cletus , pour des informations utiles.
la source
font-size
doit être réduit pour donner l'effet réel en exposant.Honnêtement, je ne vois pas l'intérêt de faire des exposants / indices en CSS uniquement. Il n'y a pas d'attribut CSS pratique pour cela, juste un tas d'implémentations locales, y compris:
ou en utilisant l'alignement vertical ou je suis sûr que d'autres façons. La chose est, ça commence à se compliquer:
Le deuxième point mérite d'être souligné. Typiquement, les exposants / indices ne sont pas en fait un problème de style, mais indiquent la signification.
Note latérale: Il convient de mentionner cette liste d'entités pour les expressions mathématiques en exposant et en indice communes, même si cette question ne se rapporte pas à cela.
Les balises sub / sup sont en HTML et XHTML. Je voudrais juste les utiliser.
Comme pour le reste de votre CSS, les attributs de pseudo-élément et de contenu: after ne sont pas largement pris en charge. Si vous ne voulez vraiment pas mettre cela manuellement dans le HTML, je pense qu'une solution basée sur Javascript est votre prochain meilleur pari. Avec jQuery, c'est aussi simple que:
la source
La documentation CSS contient un équivalent CSS standard pour toutes les constructions HTML. C'est: la plupart des navigateurs web ces jours -ci ne gèrent pas explicitement
SUB
,SUP
,B
,I
et ainsi de suite - ils ( un peu sorta) sont convertis enSPAN
éléments avec des propriétés CSS appropriées, et le moteur de rendu offres uniquement avec cela.La page est l' annexe D. Feuille de style par défaut pour HTML 4
Les bits que vous voulez sont:
la source
line-height
. À mon humble avis, le seul moyen de ne pas bousillerline-height
est d'utiliserposition:relative
comme suggéré par cletus: stackoverflow.com/a/501689/260080Je travaillais sur une page dans le but d'avoir un texte clairement lisible, avec des éléments en exposant ne modifiant pas les marges supérieure et inférieure de la ligne - avec les observations suivantes:
Si, par
line-height: 1.5em
exemple, pour votre texte principal , vous devez réduire la hauteur de ligne de votre texte en exposant pour qu'il s'affiche correctement. J'ai utiliséline-height: 0.5em
.En outre,
vertical-align: super
fonctionne bien dans la plupart des navigateurs, mais dans IE8 lorsque vous avez un élément en exposant, le reste de cette ligne est poussé vers le bas. Au lieu de cela, j'ai utilisévertical-align: baseline
avec un négatiftop
etposition: relative
pour obtenir le même effet, ce qui semble fonctionner mieux entre les navigateurs.Donc, pour ajouter aux "implémentations locales":
la source
http://htmldog.com/articles/superscript/ Essentiellement:
Fonctionne bien dans la pratique, pour autant que je sache.
la source
Ce qui suit est tiré du html.css interne de Mozilla Firefox:
Donc, dans votre cas, ce serait quelque chose comme:
la source
Ceci est une autre solution propre:
De cette façon, vous pouvez toujours utiliser des balises sup / sub mais vous avez corrigé leur comportement idiot pour toujours bousiller la hauteur de la ligne de paragraphe .
Alors maintenant, vous pouvez faire:
Et la hauteur de votre ligne de paragraphe ne doit pas être foirée.
Testé sur IE7, IE8, FF3.6, SAFARI4, CHROME5, OPERA9
J'ai testé en utilisant un
p {line-height: 1.3;}
(c'est une bonne hauteur de ligne à moins que vous vouliez que vos lignes collent trop près) et cela fonctionne toujours, car "-0.6em" est une si petite quantité qu'avec cette hauteur de ligne le texte sous / sous s'adaptera et ne vous recoupez pas.J'ai oublié un détail qui pourrait être pertinent J'utilise toujours DOCTYPE dans la 1ère ligne de ma page (en particulier 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 bien lorsque le navigateur est en mode quirkmode (ou non standard) en raison du manque de DOCTYPE ou d'un DOCTYPE qui ne déclenche pas le mode Standard / Presque Standard.la source
Si vous modifiez la taille de la police, vous souhaiterez peut-être arrêter la réduction des tailles avec cette règle:
la source
Je ne sais pas si cela est lié mais j'ai résolu mon problème avec
²
les entités HTML car je n'ai pas pu ajouter d'autres balises html dans un<label>
balise. L'idée était donc d'utiliser des codes ASCII au lieu de balises CSS ou HTML.la source
Check-out: http://www.cssdesignpatterns.com/Chapter%2012%20-%20ALIGNING%20CONTENT/Vertical-aligned%20Content/example.html
si semble que vous voulez "vertical-align: text-top"
la source
La propriété CSS
font-variant-position
est à l'étude et pourrait éventuellement être la réponse à cette question. Depuis début 2017, seul Firefox le prend en charge.Voir MDN .
la source
Lié ou peut-être pas lié, l'utilisation d'exposant comme élément HTML ou comme span + css dans le texte peut causer des problèmes de localisation - dans les programmes de localisation.
Par exemple , disons « 3 ème logiciel tiers »:
Comment les traducteurs peuvent-ils traduire "rd"? Ils peuvent le laisser vide pour plusieurs langues cyrriliques, mais qu'en est-il des autres langues exotiques ou RTL?
Dans ce cas, il vaut mieux éviter d'utiliser des exposants et utiliser un libellé complet comme "logiciel tiers". Ou, comme mentionné ici dans d'autres commentaires, en ajoutant des signes plus en exposant via jQuery.
la source
la source
Voici la façon exacte dont sup utilise:
Trouvé via l'élément google chrome inspect.
la source