如何仅在CSS中完成上标?
我有一个样式表,在其中用上标字符标记了外部链接,但是我很难使字符正确对齐。
我目前所拥有的看起来像这样:
a.external:after {
font-size: 50%;
vertical-align: top;
content: "+";
}
但这不起作用。
自然,<sup>
只有在content
允许HTML的情况下,我才会使用-tag 。
content
允许使用HTML,则关注点分离会受到影响。
如何仅在CSS中完成上标?
我有一个样式表,在其中用上标字符标记了外部链接,但是我很难使字符正确对齐。
我目前所拥有的看起来像这样:
a.external:after {
font-size: 50%;
vertical-align: top;
content: "+";
}
但这不起作用。
自然,<sup>
只有在content
允许HTML的情况下,我才会使用-tag 。
content
允许使用HTML,则关注点分离会受到影响。
Answers:
老实说,我看不出仅在CSS中执行上标/下标的意义。它没有方便的CSS属性,只有一堆本地实现,包括:
.superscript { position: relative; top: -0.5em; font-size: 80%; }
或使用垂直对齐,或者我相信其他方法。事实是,它开始变得复杂:
第二点值得强调。通常,上标/下标实际上不是样式问题,但表示含义。
旁注:值得一提的是,该实体列表包含常见的数学上标和下标表达式,即使该问题与此无关。
sub / sup标签位于HTML和XHTML中。我只会用那些。
至于您的CSS的其余部分,:after伪元素和内容属性不受广泛支持。如果您真的不想手动将其放入HTML中,那么我认为基于Javascript的解决方案是您的第二选择。使用jQuery,这很简单:
$(function() {
$("a.external").append("<sup>+</sup>");
};
CSS文档包含适用于所有HTML构造的行业标准CSS。那就是:大多数的网页浏览器,这些天没有明确处理SUB
,SUP
,B
,I
等等-他们(有点八九不离十)被转换成SPAN
适当的CSS属性的元素,渲染引擎只与交易。
该页面为附录D。HTML4的默认样式表
您想要的位是:
small, sub, sup { font-size: .83em }
sub { vertical-align: sub }
sup { vertical-align: super }
line-height
。恕我直言,唯一不会搞砸的方法line-height
是position:relative
按照cletus的建议使用:stackoverflow.com/a/501689/260080
我正在制作一个页面,目的是使文本清晰易读,上标元素不会改变行的顶部和底部页边距-有以下发现:
line-height: 1.5em
例如,如果您的主文本是,则应减小上标文本的行高,以使其正确显示。我用过line-height: 0.5em
。
而且,vertical-align: super
在大多数浏览器中都可以正常工作,但是在IE8中,当您有上标元素时,该行的其余部分将被向下推。因此,相反,我vertical-align: baseline
与否定项一起使用top
并position: relative
实现了相同的效果,这似乎在浏览器中效果更好。
因此,添加到“本地实现”中:
.superscript {
font-size: .83em;
line-height: 0.5em;
vertical-align: baseline;
position: relative;
top: -0.4em;
}
http://htmldog.com/articles/superscript/本质上:
position: relative;
bottom: 0.5em;
font-size: 0.8em;
据我所知,在实践中效果很好。
这是另一个干净的解决方案:
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 */
这样,您仍然可以使用sup / sub标记,但是您已修复了它们的愚蠢行为,总是弄乱了段落行高。
现在,您可以执行以下操作:
<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>
而且您的段落行高也不会搞砸。
在IE7,IE8,FF3.6,SAFARI4,CHROME5,OPERA9上测试
我使用进行了测试p {line-height: 1.3;}
(除非您希望行贴得太紧,否则行高是必须的),并且它仍然有效,因为“ -0.6em”的量很小,因此子行/子文本也适合该行高而且不要互相越过
忘记了可能相关的细节,我总是在页面的第一行中使用DOCTYPE (特别是我使用HTML 4.01 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
)。因此,由于缺乏DOCTYPE或未触发标准/几乎标准模式的DOCTYPE,我不知道此解决方案在浏览器处于怪癖模式(或非标准模式)时是否能很好地工作。
检出:http : //www.cssdesignpatterns.com/Chapter%2012%20-%20ALIGNING%20CONTENT/Vertical-aligned%20Content/example.html
如果看起来像您想要“ vertical-align:text-top”
.superscript {
position: relative;
top: 5px;
font-size: 90%;
vertical-align: super;
}