在CSS中,通过 font-size属性来设置元素中所包含文本的字体大小。如果一个元素没有显式定义font-size属性,则会自动继承父元素的 font-size属性的计算结果。

定义 font-size 时,可以使用预定义关键字、绝对尺寸、相对尺寸:

1)预定义关键字

预定义关键字有 xx-small、x-small、small、medium、large、x-large、xx-large,尺寸按顺序依次增大,类似于衣服的尺寸。

使用预定义关键字有两大缺陷:一是只有 7 种选择,可选择范围太小;二是跟衣服的尺寸一样,不同厂商对每个关键字对应的字体大小的精确值可能各不不同,导致在不同浏览器下,文本的大小可能不同。因此,不推荐使用预定义关键字来定义字体的大小。

2)绝对尺寸

绝对尺寸有px(像素)、pt(点,1pt 相当于 1/72in)、in(英寸)、cm(厘米)、mm(毫米)等。如:

  1. .px {
  2. font-size: 14px;
  3. }
  4. .pt {
  5. font-size: 10pt;
  6. }
  7. .in {
  8. font-size: .15in;
  9. }
  10. .cm {
  11. font-size: .4cm;
  12. }
  13. .mm {
  14. font-size: 4mm;
  15. }
  1. <p class="px">字体大小: 14px</p>
  2. <p class="pt">字体大小: 10pt</p>
  3. <p class="in">字体大小: .15in</p>
  4. <p class="cm">字体大小: .4cm</p>
  5. <p class="mm">字体大小: 4mm</p>

上述代码定义了 5 种字体大小,都使用绝对单位。使用绝对长度单位后,在固定分辨率的显示器下,显示出来的都是固定大小。运行结果如图 3‑1 所示:

图3-1 font-size属性

如果以 px 为单位设置字体大小,使用IE浏览器的用户,就不能在浏览器上通过设置“文字大小”来对文本进行放大或缩小。如果文本太小,就会影响阅读,使用户体验大打折扣。

3)相对尺寸

相对尺寸有 em、%、rem,它们都是相对于某个参考基准的字体大小,来计算当前字体的大小,只是参考基准不同而已。

em 的参考基准是父元素。那么,如何计算要指定的 em 值呢?实际上,1em 总是等于父元素 font-size属性的值,这就是 em 的工作原理。据此,可以通过以下公式来确定百分比的值:

目标元素的字体大小 / 父元素的字体大小 = 值

因此,在使用 em 定义字体大小时,最好在 html 或 body 元素上建立一个基准。假设在 body 中设置的基准大小为 12px:

  1. body {
  2. font-size: 12px;
  3. }

如果希望 body 中所有段落的字体大小为 18px,根据上述公式:

18 / 12 = 1. 5

因此,只需将将段落的 font-size 设置为 1.5em 就可以了,这条规则就表示段落文本的字体大小为父元素文本大小的1.5 倍:

  1. body p {
  2. font-size: 1.5em;
  3. }

% 的参考基准也是父元素,100% 也总是等于父元素 font-size属性的值,即 1em 就等于 100%。也就是说,在用 % 定义字体大小时,只需将 em 的值换算成相应的百分数即可。因此,以下两条声明会得到相同的结果(假设两个段落具有相同的父元素):

  1. p.one {
  2. font-size: 1.5em;
  3. }
  4. p.one {
  5. font-size: 150%;
  6. }

需要注意的是,尽管 font-size 是可以继承的,但在使用 % 和 em 定义字体大小时,子元素继承的是计算结果的值,而不是 % 和 em 的数字。并且,% 和 em 还可以累积。考虑以下代码:

  1. p {
  2. font-size: 12px;
  3. }
  4. em {
  5. font-size: 200%;
  6. }
  7. strong {
  8. font-size: 200%;
  9. }
  1. <p>12px <em> 200% <strong> 200% </strong></em></p>

上述代码中,p 为父元素,em 为 p 的子元素,strong 为 em 的子元素。em 元素的基准是 p 元素,而 strong 元素的基准是 em 元素。计算结果如下:

em:12 × 200% = 24px

strong:24 × 200% = 48px

得到的运行结果如图 3‑2 所示:

图3-2 font-size属性继承

在这种多层嵌套的情况下,如果某一个计算结果不是整数,浏览器可能就会取整,子元素再继承取整后的值。如果嵌套很深,下层的字体大小就越来越偏离实际计算值。并且,由于参考基准总是随着元素发生变化,嵌套越深,计算起来也就越困难。

鉴于此,CSS3中新增的一个相对单位 rem(root em的简称),它总是以文档的根元素(即 html 元素)为参考基准,来设置其它元素的字体大小,即 1rem 相当于 html 元素 font-size属性的值。考虑以下代码:

  1. html {
  2. font-size: 10px;
  3. }
  4. p {
  5. font-size: 1.4rem;
  6. }

上述声明中,p 元素的字体大小将是 html 字体大小的1.4倍,则计算得到 p 元素的字体大小就是1.4 × 10px = 14px。

这样一来,无论嵌套多少层,参考基准始终不变,计算字体大小就变得容易多了。不过,需要注意的是,rem 是CSS3新增的一个相对单位,IE9 以下版本的老浏览器却不支持它,这也是很多编程人员尚未使用 rem 的原因。

在定义字体大小时,笔者建议在 html 元素中定义绝大多数元素所需要的字体大小,并让所有子元素继承 html 的字体大小。如果某个子元素需要要改变字体大小,则使用相对尺寸 em 或 % 或 rem 重新定义。

这样做的好处是,一方面,绝大多数元素都不必定义字体大小,减少不必要的定义;另一方面,如果完成所有的文字排版后,又要统一调整页面文字大小,就可以只修改 html 中的字体大小,其它所有文字的字体大小会自动变化,修改起来就很容易。

说明:

在某些特殊场景下,需要把 font-size 的值设置为0,来隐藏某些文本。但是,在IE6和IE7中,font-size: 0 的文本却变成了小黑点,并没有完全隐藏。

解决这个问题的最简单办法,就是在 font-size: 0 的同时,把 text-indent 属性设置为一个很大的负值,让这些文本显示在屏幕之外,自然就被隐藏起来。

关于作者

歪脖先生,十五年以上软件开发经验,酷爱Web开发,精通 HTML、CSS、JavaScript、jQuery、JSON、Python、Less、Bootstrap等,著有《HTML宝典》、《揭秘CSS》、《Less简明教程》、《JSON教程》、《Bootstrap2用户指南》、《Bootstrap3实用教程》,并全部在 GitHub 上开源。

CSS 字体大小 font-size属性相关推荐

  1. android设置应用字体大小,在Android应用程序改变的TextView的字体大小从原始设置更改字体大小(Font size...

    我想在我的应用程序指定我自己的文字大小,但我有这样一个问题. 当我在设备设置中更改字体大小,我的应用程序的字体大小TextView也会改变. Answer 1: 其实,设置字体大小只影响大小sp . ...

  2. CSS字体之font相关属性连写

    格式: font:font-style font-weight font-size font-family 例如: font:italic bold 90px "宋体": 注意: ...

  3. css设置字体大小会受分辨影响吗,CSS字体大小设置时的参考(转)

    font-size 设置的绝对关键字: 以下几个绝对字体大小的设置是有效的.当然他们是浏览器预定义设置的.给元素指定了绝对关键字font-size的时候,该元素就不会继承父元素的字体大小 font-s ...

  4. html的font字号1-7,CSS 字体大小font-size设置

    CSS font-size字体文字大小样式属性-字体大小样式篇: 本节DIVCSS7为大家介绍通过CSS样式设置文字字体大小知识,涉及CSS样式单词font-size. 一.设置字体大小CSS单词与语 ...

  5. HTML标记fort属性最大取值,CSS(2)---css字体、文本样式属性

    css字体.文本样式属性 这篇主要讲CSS文本属性中的:字体样式属性 和 文本样式属性. 一.字体样式属性 CSS 字体属性主要包括:字体设置(font-family).字号大小(font-size) ...

  6. [css] 字体的粗细的属性是用哪一个?它有哪些属性值?

    [css] 字体的粗细的属性是用哪一个?它有哪些属性值? font-size指的应该是字体大小,字体粗细应该是font-weight,值有normal,bold,bolder,lighter,inhe ...

  7. html5纯css字体大小自适应设置

    css 字体大小自适应样式设置篇 字体可以设置大小使用css font-size来实现,有时需要对字体大小根据浏览器分辨率来判断后自适应大小. 在CSS 2.0中字体大小自适应是难实现的,一般使用JS ...

  8. css字体大小兼容性问题

    css字体大小兼容性问题 记录一个在开发过程中遇到的问题,项目数据可视化大屏界面,使用的是rem布局,在完成时发现在ie浏览器和火狐浏览器字体显示正常,谷歌浏览器字体偏大并且换行,后来发现是使用rem ...

  9. css 字体大小_用一个 CSS 属性打造自适应网站

    英文 | https://dev.to/dip15739/responsive-website-with-only-1-css-property-3ea9 作者 | Dip Vachhani 用一个c ...

最新文章

  1. 刚刚!2020“中国高被引学者” 榜单发布:清华、北大、浙大位居内地前三!...
  2. V2EX › 郁闷于Python GUI开发,有没有好的框架啊?
  3. 计算机屏幕怎么睡眠状态,解决办法:显示器进入睡眠状态时如何解决问题
  4. svn+post-commit实现自动部署(转)
  5. linux怎样删除定时任务,Linux(CentOS)使用定时任务删除Tomcat日志文件
  6. 也用C#做个视频监控客户端来玩玩
  7. php 验证链接,PHP判断链接是否有效 的方法
  8. BP神经网络算法改进
  9. win10u盘被写保护怎么解除_win10系统中u盘被写保护怎么解除
  10. linux 命令详解 大于号_linux 命令中的大于号、小于号的作用
  11. 条码生成器如何生成GS1-128条码
  12. matlab中黄金分割法,优化算法之黄金分割算法 - Matlab
  13. 【HC-SR501人体红外传感器】
  14. 代码实现stable-diffusion模型,你也用AI生成获得一等奖的艺术图
  15. [单刷APUE系列]第十二章——线程控制
  16. 计算机底层——计算机的发展史
  17. Canny边缘检测方法中的非极大抑制
  18. 安装第二天import tensorflow 出现如下错误module ‘tensorflow‘ has no attribute ‘compat‘
  19. iVx实现页面简易新闻应用
  20. 地下管廊可视化管理系统搭建

热门文章

  1. 十大javascript难点
  2. TikTok搬运视频怎么做,搬运怎样的视频最好
  3. 使用wireshark检测RTP丢包问题
  4. 老照片修复清晰?父母以前的老照片还能修复吗?
  5. 优势比(Odds Ratios)
  6. ajax请求存在不安全的问题有哪些?如何解决这些不安全的很问题
  7. 阿里云Landing Zone系列--2 资源目录之--多账号
  8. 配置Exchange Server 2010多种邮件客户端收发电子邮件
  9. java中map和表单字符串相互转换
  10. 【正点原子FPGA连载】第一章 ZYNQ简介 -摘自【正点原子】领航者ZYNQ之FPGA开发指南_V2.0