8

有没有办法将一个类的字体大小指定为继承字体大小的 70%?

我有一个通用的“按钮”类,它用适当的边框、背景等设置我的按钮。我在多个地方使用它,包括一个字体大小相当小的地方和另一个字体大小相当大的地方。

<div style="font-size: 26px;">
Push this: <input class="button" type="submit" value="Go">
</div>
<div style="font-size: 10px;">
Push this too: <input class="button" type="submit" value="Go">
</div>

在这两种情况下,我都希望按钮字体大小约为按钮所在 span 或 div 字体大小的 70%。

我可以用纯 CSS 做到这一点吗?

4

4 回答 4

15

EM 确实像百分比一样工作,因为基本字体大小始终为 1em,而 .7em 将是该百分比的 70%(同样,1.2em 将相当于基本字体大小的 120%)。尽管您需要在文档正文上定义基本字体大小,但要使其正常工作。通过实验我发现 font-size: 77%; 在所有浏览器中为您提供一个不错的基本尺寸(即它使 1em 以“正常”和可读的尺寸呈现)。您可能需要尝试 75% 到 80% 之间的其他值,具体取决于您要使用的字体系列。还要记住,相对字体大小是累积继承的——例如:

<style>
small { font-size: .8em; }
span.tiny { font-size: .8em } 
</style>

<small>This text is 80% of base size where as 
    <span class="tiny">this text is 80% of 80% (or 64%) of base size</span>
</small> 

这对您有利,因为您只需为按钮类提供 .7em 的字体大小即可实现您想要的效果(按钮的字体大小将始终为其父对象的 70%)。快乐编码!

2014年编辑:

值得指出的是,浏览器对 Root EM 单元的支持现在非常好*,如果您还没有使用它,那么值得研究一下。根 EM (rem) 与根(文档)字体大小相关联,与“正常”EM 不同,它不受嵌套影响 - 它始终与根字体大小相关。虽然em's 对于大多数文本大小仍然非常有用,正是因为它确实尊重嵌套,但rem它非常适用于边距和填充等内容,您可能不想通过嵌套更改大小(这是左边距未对齐的常见原因) ,但您确实希望随根html字体大小一起更改大小(通常使用媒体查询)。

您可以在 Design Shack 上阅读更多关于 EM 与 REM的信息。

*) IE8 是唯一不支持它的常见浏览器 (~5%) - 如果您需要支持 IE8,只需在声明前包含一个等效大小(以像素为单位)。rem

于 2008-11-17T12:57:13.483 回答
9

在 CSS 中,如果你给出一个相对单位,默认情况下它是相对于你继承的大小的。这意味着,您可以将按钮的字体大小定义为“70%”。

字体大小还有另外两个方便的相对单位:em 和 ex。1 em 是字母“M”的宽度,1 ex 是字母“x”的高度——显然也是继承的。

你不应该使用 px 作为字体大小,就像你的例子一样。px 不服从屏幕的 DPI。例如在我的屏幕上,10px 和 26px 都会很小您应该改用“pt”,甚至以“em”开头。

于 2008-11-17T08:14:35.080 回答
3

尝试:

font-size: 0.7em;

这里有更多信息:如何在 A List Apart中调整 CSS 中的文本大小

于 2008-11-17T08:12:33.713 回答
1
<input style="font-size: 70%" class="button" type="submit" value="Go">

?

于 2008-11-17T08:29:04.723 回答