CSS 字体大小 font-size属性
在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(毫米)等。如:
.px {
font-size: 14px;
}
.pt {
font-size: 10pt;
}
.in {
font-size: .15in;
}
.cm {
font-size: .4cm;
}
.mm {
font-size: 4mm;
}
<p class="px">字体大小: 14px</p>
<p class="pt">字体大小: 10pt</p>
<p class="in">字体大小: .15in</p>
<p class="cm">字体大小: .4cm</p>
<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:
body {
font-size: 12px;
}
如果希望 body 中所有段落的字体大小为 18px,根据上述公式:
18 / 12 = 1. 5
因此,只需将将段落的 font-size 设置为 1.5em 就可以了,这条规则就表示段落文本的字体大小为父元素文本大小的1.5 倍:
body p {
font-size: 1.5em;
}
% 的参考基准也是父元素,100% 也总是等于父元素 font-size属性的值,即 1em 就等于 100%。也就是说,在用 % 定义字体大小时,只需将 em 的值换算成相应的百分数即可。因此,以下两条声明会得到相同的结果(假设两个段落具有相同的父元素):
p.one {
font-size: 1.5em;
}
p.one {
font-size: 150%;
}
需要注意的是,尽管 font-size 是可以继承的,但在使用 % 和 em 定义字体大小时,子元素继承的是计算结果的值,而不是 % 和 em 的数字。并且,% 和 em 还可以累积。考虑以下代码:
p {
font-size: 12px;
}
em {
font-size: 200%;
}
strong {
font-size: 200%;
}
<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属性的值。考虑以下代码:
html {
font-size: 10px;
}
p {
font-size: 1.4rem;
}
上述声明中,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属性相关推荐
- android设置应用字体大小,在Android应用程序改变的TextView的字体大小从原始设置更改字体大小(Font size...
我想在我的应用程序指定我自己的文字大小,但我有这样一个问题. 当我在设备设置中更改字体大小,我的应用程序的字体大小TextView也会改变. Answer 1: 其实,设置字体大小只影响大小sp . ...
- CSS字体之font相关属性连写
格式: font:font-style font-weight font-size font-family 例如: font:italic bold 90px "宋体": 注意: ...
- css设置字体大小会受分辨影响吗,CSS字体大小设置时的参考(转)
font-size 设置的绝对关键字: 以下几个绝对字体大小的设置是有效的.当然他们是浏览器预定义设置的.给元素指定了绝对关键字font-size的时候,该元素就不会继承父元素的字体大小 font-s ...
- html的font字号1-7,CSS 字体大小font-size设置
CSS font-size字体文字大小样式属性-字体大小样式篇: 本节DIVCSS7为大家介绍通过CSS样式设置文字字体大小知识,涉及CSS样式单词font-size. 一.设置字体大小CSS单词与语 ...
- HTML标记fort属性最大取值,CSS(2)---css字体、文本样式属性
css字体.文本样式属性 这篇主要讲CSS文本属性中的:字体样式属性 和 文本样式属性. 一.字体样式属性 CSS 字体属性主要包括:字体设置(font-family).字号大小(font-size) ...
- [css] 字体的粗细的属性是用哪一个?它有哪些属性值?
[css] 字体的粗细的属性是用哪一个?它有哪些属性值? font-size指的应该是字体大小,字体粗细应该是font-weight,值有normal,bold,bolder,lighter,inhe ...
- html5纯css字体大小自适应设置
css 字体大小自适应样式设置篇 字体可以设置大小使用css font-size来实现,有时需要对字体大小根据浏览器分辨率来判断后自适应大小. 在CSS 2.0中字体大小自适应是难实现的,一般使用JS ...
- css字体大小兼容性问题
css字体大小兼容性问题 记录一个在开发过程中遇到的问题,项目数据可视化大屏界面,使用的是rem布局,在完成时发现在ie浏览器和火狐浏览器字体显示正常,谷歌浏览器字体偏大并且换行,后来发现是使用rem ...
- css 字体大小_用一个 CSS 属性打造自适应网站
英文 | https://dev.to/dip15739/responsive-website-with-only-1-css-property-3ea9 作者 | Dip Vachhani 用一个c ...
最新文章
- 刚刚!2020“中国高被引学者” 榜单发布:清华、北大、浙大位居内地前三!...
- V2EX › 郁闷于Python GUI开发,有没有好的框架啊?
- 计算机屏幕怎么睡眠状态,解决办法:显示器进入睡眠状态时如何解决问题
- svn+post-commit实现自动部署(转)
- linux怎样删除定时任务,Linux(CentOS)使用定时任务删除Tomcat日志文件
- 也用C#做个视频监控客户端来玩玩
- php 验证链接,PHP判断链接是否有效 的方法
- BP神经网络算法改进
- win10u盘被写保护怎么解除_win10系统中u盘被写保护怎么解除
- linux 命令详解 大于号_linux 命令中的大于号、小于号的作用
- 条码生成器如何生成GS1-128条码
- matlab中黄金分割法,优化算法之黄金分割算法 - Matlab
- 【HC-SR501人体红外传感器】
- 代码实现stable-diffusion模型,你也用AI生成获得一等奖的艺术图
- [单刷APUE系列]第十二章——线程控制
- 计算机底层——计算机的发展史
- Canny边缘检测方法中的非极大抑制
- 安装第二天import tensorflow 出现如下错误module ‘tensorflow‘ has no attribute ‘compat‘
- iVx实现页面简易新闻应用
- 地下管廊可视化管理系统搭建