CSS的 字体

CSS字体属性定义字体,加粗,大小,文字样式。

serif和sans-serif字体之间的区别

在计算机屏幕上,sans-serif字体被认为是比serif字体容易阅读

CSS字型

在CSS中,有两种类型的字体系列名称:

通用字体系列 - 拥有相似外观的字体系统组合(如 "Serif" 或 "Monospace")

特定字体系列 - 一个特定的字体系列(如 "Times" 或 "Courier")

Generic family字体系列说明SerifTimes New RomanGeorgiaSerif字体中字符在行的末端拥有额外的装饰Sans-serifArialVerdana"Sans"是指无 - 这些字体在末端没有额外的装饰MonospaceCourier NewLucida Console所有的等宽字符具有相同的宽度

字体系列

font-family 属性设置文本的字体系列。

font-family 属性应该设置几个字体名称作为一种"后备"机制,如果浏览器不支持第一种字体,他将尝试下一种字体。

注意 : 如果字体系列的名称超过一个字,它必须用引号,如Font Family:"宋体"。

多个字体系列是用一个逗号分隔指明:

实例

p{font-family:"Times New Roman", Times, serif;}

对于较常用的字体组合,看看我们的 Web安全字体组合。

字体样式

主要是用于指定斜体文字的字体样式属性。

这个属性有三个值:

正常 - 正常显示文本

斜体 - 以斜体字显示的文字

倾斜的文字 - 文字向一边倾斜(和斜体非常类似,但不太支持)

实例

p.normal {font-style:normal;}

p.italic {font-style:italic;}

p.oblique {font-style:oblique;}

字体大小

font-size 属性设置文本的大小。

能否管理文字的大小,在网页设计中是非常重要的。但是,你不能通过调整字体大小使段落看上去像标题,或者使标题看上去像段落。

请务必使用正确的HTML标签,就<h1> - <h6>表示标题和<p>表示段落:

字体大小的值可以是绝对或相对的大小。

绝对大小:

设置一个指定大小的文本

不允许用户在所有浏览器中改变文本大小

确定了输出的物理尺寸时绝对大小很有用

相对大小:

相对于周围的元素来设置大小

允许用户在浏览器中改变文字大小

如果你不指定一个字体的大小,默认大小和普通文本段落一样,是16像素(16px=1em)。

设置字体大小像素

设置文字的大小与像素,让您完全控制文字大小:

实例

h1 {font-size:40px;}

h2 {font-size:30px;}

p {font-size:14px;}

上面的例子可以在 Internet Explorer 9, Firefox, Chrome, Opera, 和 Safari 中通过缩放浏览器调整文本大小。

虽然可以通过浏览器的缩放工具调整文本大小,但是,这种调整是整个页面,而不仅仅是文本

用em来设置字体大小

为了避免Internet Explorer 中无法调整文本的问题,许多开发者使用 em 单位代替像素。

em的尺寸单位由W3C建议。

1em和当前字体大小相等。在浏览器中默认的文字大小是16px。

因此,1em的默认大小是16px。可以通过下面这个公式将像素转换为em:px/16=em

实例

h1 {font-size:2.5em;} /* 40px/16=2.5em */

h2 {font-size:1.875em;} /* 30px/16=1.875em */

p {font-size:0.875em;} /* 14px/16=0.875em */

尝试一下 »

在上面的例子,em的文字大小是与前面的例子中像素一样。不过,如果使用 em 单位,则可以在所有浏览器中调整文本大小。

不幸的是,仍然是IE浏览器的问题。调整文本的大小时,会比正常的尺寸更大或更小。

使用百分比和EM组合

在所有浏览器的解决方案中,设置 <body>元素的默认字体大小的是百分比:

实例

body {font-size:100%;}

h1 {font-size:2.5em;}

h2 {font-size:1.875em;}

p {font-size:0.875em;}

我们的代码非常有效。在所有浏览器中,可以显示相同的文本大小,并允许所有浏览器缩放文本的大小。

更多实例

设置字体加粗

这个例子演示了如何设置字体的加粗。

可以设置字体的转变

这个例子演示了如何设置字体的转变。

在一个声明中的所有字体属性

本例演示如何使用简写属性将字体属性设置在一个声明之内。

所有CSS字体属性

Property描述font在一个声明中设置所有的字体属性font-family指定文本的字体系列font-size指定文本的字体大小font-style指定文本的字体样式font-variant以小型大写字体或者正常字体显示文本。font-weight指定字体的粗细。

如您还有不明白的可以在下面与我留言或是与我探讨QQ群308855039,我们一起飞!

Web 性能优化:使用 CSS font-display 控制字体加载和替换

作者 | 张旭乾 责编 | 欧阳姝黎出品 | 峰华前端工程师

在编写网站的时候,或多或少都会用到一些网络上的字体,CSS 3 中虽然加入了对 Web Fonts(网络字体)的支持,但是浏览器对它们的加载和默认处理方式会极大的影响网站的性能和用户体验。例如默认情况下,在 Web Fonts 加载时,使用该字体的地方会显示空白,直到字体下载完成之后才会显示,这时通过改变 CSS 中的 font-display 属性,就可以避免这个问题。

什么是 Web Fonts

在介绍 font-display 之前,先了解一下什么是 Web Fonts。在以前使用 CSS 指定字体时只能使用用户电脑本地上现有的字体,而由于每个用户电脑上的字体可能都不一样,所以能用的基本上就是操作系统内置的一些字体,例如微软雅黑,宋体,苹果苹方,这些也叫做安全字体(Web Safe Fonts)。为了使字体显示正常,我们一般会通过 font-family 属性同时指定多个字体,如果第一个字体没有在操作系统中找到,就会使用下一个后备字体( Fallback Font ),以此类推:

* {font-family: "PingFang SC", "Microsoft Yahei", sans-serif;}

后来,CSS 开始支持 @font-face 这个指令,可以加载自定义的字体文件,这个时候可以把字体随网站一起发布,用户在浏览网站的时候,会下载 @font-face 中指定的字体。例如下边的代码加载了 fonts 目录下的 Raleway 字体:

@font-face {font-family: 'Raleway';font-style: normal;font-weight: 500;src: url(/fonts/raleway.woff2) format('woff2');}

src 属性用于指定字体的位置,其中 url() 函数也接受网络地址,来加载第三方提供的字体文件,这样也催生了像 Google Fonts 这样的云字体服务。不过,基本上只有英文字体才适合 Web Fonts,因为它只有 26 个英文字母外加数字,体积小,适合在网络上传输,而中文光常用的就有 3000 个字符,所以一般只使用操作系统自带的,不过现在也有字体服务会根据网站上所使用的文字去动态的生成字体文件。

浏览器加载 Web Fonts 的时期

浏览器加载 Web Fonts 时按顺序会有三个时期:

阻塞期(Block Period)。在此期间如果字体没有加载完成,那么浏览器会使用 font-family 指定的字体列表中的后备字体(Fallback)进行渲染,但是显示为空白,也就是对于用户是不可见的。在此期间字体加载完成之后才能正常显示该字体。交换期(Swap Period)。跟阻塞期类似,但是在这个时期内,它会在字体加载时,先用后备字体渲染文本并显示出来(而不是显示空白),在此期间字体加载完成之后才能正常的显示该字体。失败期(Failure Period)。如果字体加载失败,则使用后备字体显示文本。

至于每个时期有多长,是根据 font-display 属性的值来确定的。

font-display 介绍

font-display 确切的说不是 CSS 属性,而是专用于 @font-face 指令的描述符,它可以取如下几个值:

auto 。这个是 font-display 的默认值,字体的加载过程由浏览器自行决定,不过基本上和取值为 block 时的处理方式一致。block 。在字体加载前,会使用备用字体渲染,但是显示为空白,使得它一直处于阻塞期,当字体加载完成之后,进入交换期,用下载下来的字体进行文本渲染。不过有些浏览器并不会无限的处于阻塞期,会有超时限制,一般在 3 秒后,如果阻塞期仍然没有加载完字体,那么直接就进入交换期,显示后备字体(而非空白),等字体下载完成之后直接替换。swap 。基本上没有阻塞期,直接进入交换期,使用后备字体渲染文本,等用到的字体加载完成之后替换掉后备字体。fallback 。阻塞期很短(大约100毫秒),也就是说会有大约 100 毫秒的显示空白的后备字体,然后交换期也有时限(大约 3 秒),在这段时间内如果字体加载成功了就会替换成该字体,如果没有加载成功那么后续会一直使用后备字体渲染文本。optional 。与 fallback 的阻塞期一致,但是没有交换期,如果在阻塞期的 100 毫秒内字体加载完成,那么会使用该字体,否则直接使用后备字体。这个就是说指定的网络字体是可有可无的,如果加载很快那么可以显示,加载稍微慢一点就不会显示了,适合网络情况不好的时候,例如移动网络。

那么在了解 font-display 之后,那么我们应该不难看出来,对于大部分情况应该把它的值设置为 swap ,这样在加载网络字体期间,使用后备字体进行渲染,加载完成之后在替换为指定的网络字体。

应用

现在使用谷歌的 Web Fonts 字体服务已经不需要我们用手动去写 @font-face 指令了,而是通过调用它的接口,直接返回一段 @font-face 指令 CSS 代码,同时它也支持 display=swap 参数,来让返回的 CSS 代码中,设置 font-display 为 swap ,这个可以从我的网站上看到:

/* https://fonts.font.im/css?family=Raleway:500,700&display=swap */@font-face {font-family: 'Raleway';font-style: normal;font-weight: 500;font-display: swap;src: url(https://fonts.gstatic.font.im/s/raleway/v19/1Ptug8zYS_SKggPNyCAIT4ttDfCmxA.woff2) format('woff2');unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;}/* ... */

浏览器支持

从 caniuse.com[1] 网站上可以查到,这个属性在各个浏览器中的支持程度为(最低版本):

IEEdegeFireFoxChromeSafariIOS SafariAndroid BrowserChrome for AndroidFireFox for AndroidNo79586011.111.3818886

生于2001年的《程序员》曾陪伴了无数开发者成长,影响了一代又一代的中国技术人。时隔20年,《新程序员》带着全球技术大师深邃思考、优秀开发者技术创造等深度内容回来了!同时将全方位为所有开发者呈现国内外核心技术生态体系全景图。扫描下方小程序码即可立即订阅!

相关问答

在html中怎样定义文字的位置?

代码:2、margin外边距:代码:3、绝对定位position:absolute;top:50px;left:20px;让文字内容相对div容器绝对定位,需要对div容器设置:pos...

OPPO手机界面如何更换字体颜色?-ZOL问答

4.最后在混搭里找到字体这项点击,选择自己喜欢的字体下载应用。按照以上步骤就可以改变桌面的字体大小。您好,手机字体的更换方法:在手机设置--显示--字体-...

html如何实现点击图片弹出文字?

要实现点击图片弹出文字,可以使用HTML和CSS的技术。首先,在HTML中,在图片上添加一个超链接,链接到一个隐藏的div标签,然后在这个div标签中添加要弹出的文字...

在html中如何设置底部边框?

1、首先新建一个html文件,输入基本的内容,这里设置一个div,并把它的class设置为demo,用浏览器打开看看默认的效果:2、设置div的样式,这里给div300px的宽度...

同花顺软件字体大小如何调整-ZOL问答

属性外观字体大小很简单的如果不行就换个主题试试菜单栏上有setting,中文版的估计叫设置之类的。点开,有Editor然后点击choose。剩下的就不用...

阅读下面的文字,完成文后各题。粉墨人生韩静霆①那些天,画...

[回答]12.(1)趴在窗台看化装(2)混票逃票进戏院(3)痴迷沉醉二人转(4)辛苦赚钱买乐器。13.①郝同学是我戏剧梦想的“伙伴”,见证了我与戏剧结缘的过程。②...

有没有一种软件可以导入文字输出语音的?

题主这是想实现文本配音吗?说实话,这样的软件有很多,很多软件合成的音质比较机械,听起来非常难受。给大家整理了以下两款文字转语音工具,看看有没有你喜欢的...B...

华为短信字体大小设置-天气加

[回答]1、首先打开桌面【设置】选项点击进入。2、然后点击【显示与亮度】选项。3、接着点击【字体与显示大小】选项。4、最后在【字体大小】拉动滚动条调...

用友软件字体怎么调_会计学堂

[回答]可以在用友软件中调整字体,具体步骤如下:1、点击“工具”→“选项”;2、在“选项”窗口中点击“字体”;3、在“字体”标签页中,可以通过调整字体大...

免费的文字转语音的工具有哪些?

文字转语音的软件可以说是多种多样的,就是因为软件太多,在选择软件的时候就成了一个问题,到底该选择哪一个呢?选择使用工具我们都喜欢实用的,这样的可以帮到...