CSS

字体大小 | font-size

font-size

该font-size CSS属性指定字体的大小。设置字体大小可能会改变其他项目的大小,因为它被用来计算em和ex <length>单位的值。

/* <absolute-size> values */ font-size: xx-small; font-size: x-small; font-size: small; font-size: medium; font-size: large; font-size: x-large; font-size: xx-large; /* <relative-size> values */ font-size: smaller; font-size: larger; /* <length> values */ font-size: 12px; font-size: 0.8em; /* <percentage> values */ font-size: 80%; /* Global values */ font-size: inherit; font-size: initial; font-size: unset;

Initial valuemedium
应用于all elements. It also applies to ::first-letter and ::first-line.
是否继承yes
百分比refer to the parent element's font size
媒体visual
计算值as specified, but with relative lengths converted into absolute lengths
Animation typea length
规范顺序the unique non-ambiguous order defined by the formal grammar

语法

font-size属性以两种方式之一指定:

  • 作为从绝对大小关键字列表或从相对大小关键字列表中选择的单个关键字

  • 作为一个<length-percentage>值。

xx-small, x-small, small, medium, large, x-large, xx-large基于用户的默认字体大小(是medium)的一组绝对大小的关键字。类似表象HTML的<font size="1">通过<font size="7">,其中用户的默认字体大小<font size="3">。larger, smaller大于或小于父元素的字体大小,大致上是用于分隔上面的绝对大小关键字的比率。<length-percentage>

<length>或<percentage>正值。<length>在em 中指定值的单位时,ex将根据所讨论元素的父元素上的字体大小来定义大小。例如,0.5em是当前元素父级的一半字体大小。当指定单位时rem,大小是相对于<html>(根)元素使用的字体的大小定义的。

<percentage>

值引用父元素%27s字体大小。

最好使用相对于用户的默认字体大小的值, 并避免绝对值, 例如具有 em 或 ex 的单位的长度。但是, 如果必须使用此类绝对值, 则 px 比其他单位更可取, 因为它们的含义不会因操作系统认为 (通常不正确) 显示器的分辨率而异。

形式语法

<absolute-size> | <relative-size> | <length-percentage>where <absolute-size> = xx-small | x-small | small | medium | large | x-large | xx-large <relative-size> = larger | smaller <length-percentage> = <length> | <percentage>

可能的办法

有几种方法来指定字体大小,像素或ems的关键字或数值。根据特定网页的需要选择合适的方法。

关键词

关键字是设置网页字体大小的好方法。通过在主体元素上设置关键字字体大小,您可以在页面的其他位置设置相对字体大小,从而使您能够在整个页面上轻松地向上或向下缩放字体。

象素

当您需要像素精度时,以像素值(px)设置字体大小是一个不错的选择。px值是静态的。这是一个独立于操作系统的跨浏览器方式,可以让浏览器根据您指定的像素高度来渲染字母。结果可能在浏览器中略有不同,因为它们可能使用不同的算法来实现类似的效果。

字体大小设置也可以组合使用。例如,如果父元素设置为16px并且其子元素设置为larger,则子元素显示的大于页面中的父元素。

注:以像素为单位定义字体大小是不可及,因为用户无法从浏览器中更改字体大小。例如,视力有限的用户可能希望设置比网页设计人员选择的字体大小大得多的字体大小。如果您希望创建一个包容性的设计,请避免使用像素作为字体大小。

Ems

设置字体大小的另一种方法是使用em值。em值的大小是动态的。定义font-size属性时,em等于适用于所讨论元素的父级的字体的大小。如果您没有在页面的任何位置设置字体大小,那么这是浏览器的默认设置,通常是16px。所以默认1em = 16px,2em = 32px。如果你font-size在body元素上设置了20px,那么1em = 20px和2em = 40px。请注意,值2本质上是当前em大小的乘数。

为了计算所需的任何像素值的em等价物,可以使用以下公式:

em = desired element pixel value / parent element font-size in pixels

例如,假设页面主体的字体大小设置为16px。如果你想要的字体大小是12px,那么你应该指定0.75em(因为12/16 = 0.75)。同样,如果你想要一个10px的字体大小,那么指定0.625em(10/16 = 0.625); 为22px,指定1.375em(22/16)。

em是CSS中非常有用的单位,因为它会自动调整它的长度,使其相对于读者选择使用的字体。

要记住的一个重要事实是:EM重视化合物。使用以下HTML和CSS:

html { font-size: 62.5%; /* font-size 1em = 10px on default browser settings */ } span { font-size: 1.6em; }

<div> <span>Outer <span>inner</span> outer</span> </div>

结果是:

假设浏览器的默认值font-size是16px,那么“outer”这个单词将被渲染为16px,但是“inner”这个单词将被渲染为25.6px。这是因为内部跨度font-size是1.6 em,这是相对于其父母的font-size,相对于其父母font-size。这通常被称为复合

REMS

rem发明价值观是为了避开混合问题。rem值是相对于根html元素而不是父元素。换句话说,它允许您以相对的方式指定字体大小,而不受父级大小的影响,从而消除复合。

下面的CSS几乎和前面的例子一样。唯一的例外是该单位已被更改为rem

html { font-size: 62.5%; /* font-size 1em = 10px on default browser settings */ } span { font-size: 1.6rem; }

然后,我们将这个CSS应用到相同的HTML中,如下所示:

<span>Outer <span>inner</span> outer</span>

在这个例子中,单词“outer inner outer”全部显示在16px(假设浏览器的字体大小已经保持默认值16px)。

实例

例1

/* Set paragraph text to be very large. */ p { font-size: xx-large } /* Set h1 (level 1 heading) text to be 2.5 times the size * of the text around it. */ h1 { font-size: 250% } /* Sets text enclosed within span tag to be 16px */ span { font-size: 16px; }

例2

.small { font-size: xx-small; } .larger { font-size: larger; } .point { font-size: 24pt; } .percent { font-size: 200%; }

<h1 class="small">Small H1</h1> <h1 class="larger">Larger H1</h1> <h1 class="point">24 point H1</h1> <h1 class="percent">200% H1</h1>

示例

注记

em并且exfont-size属性上的单位与父元素的字体大小相关(不同于所有其他属性,它们与元素上的字体大小有关)。这意味着em单位和百分比会做同样的事情font-size

规格

SpecificationStatusComment
CSS Fonts Module Level 3The definition of 'font-size' in that specification.Candidate RecommendationNo change
CSS TransitionsThe definition of 'font-size' in that specification.Working DraftDefines font-size as animatable.
CSS Level 2 (Revision 1)The definition of 'font-size' in that specification.RecommendationNo change
CSS Level 1The definition of 'font-size' in that specification.RecommendationInitial definition

浏览器兼容性

FeatureChromeEdgeFirefox (Gecko)Internet ExplorerOperaSafari
Basic support1.0(Yes)1.0 (1.7 or earlier)5.57.01.0
Rem values31.0(Yes)31.091 1128.07.0

FeatureAndroidChrome for AndroidEdgeFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Basic support1.01.0(Yes)1.0 (1)6.06.01.0
Rem values4.14212?10124.1