译自: https://fedoramagazine.org/design-faster-web-pages-part-3-font-css-tweaks/
作者: Sirko Kemter
译者: David Dai
欢迎回到我们为了构建更快网页所写的系列文章。本系列的 第一部分 和 第二部分 讲述了如何通过优化和替换图片来减少浏览器脂肪。本部分会着眼于在 CSS( 层叠式样式表 )和字体中减掉更多的脂肪。
首先,我们先来看看问题的源头。CSS 的出现曾是技术的一大进步。你可以用一个集中式的样式表来装饰多个网页。如今很多 Web 开发者都会使用 Bootstrap 这样的框架。
这些框架当然方便,可是很多人都会将整个框架直接复制粘贴走。Bootstrap 非常大:目前 Bootstrap 4.0 的“最小”版本也有 144.9 KB. 在这个以 TB 来计数据的时代,它可能不算多。但就像所说的那样,一头小牛也能搞出大麻烦。
我们回头来看 getfedora.org 的例子。我们在 第一部分 中提过,第一个分析结果显示 CSS 文件占用的空间几乎比 HTML 本身还要大十倍。这里显示了所有用到的样式表:
那是九个不同的样式表。其中的很多样式在这个页面中并没有用上。
Font-awesome CSS 代表了包含未使用样式的极端。这个页面中只用到了这个字体的三个字形。如果以 KB 为单位,getfedora.org 用到的 font-awesome CSS 最初有 25.2 KB. 在清理掉所有未使用的样式后,它只有 1.3 KB 了。这只有原来体积的 4% 左右!对于 Bootstrap CSS,原来它有 118.3 KB,清理掉无用的样式后只有 13.2 KB,这就是差异。
下一个问题是,我们必须要这样一个 bootstrap.css 和 font-awesome.css 吗?或者,它们能不能合起来呢?没错,它们可以。这样虽然不会节省更多的文件空间,但浏览器成功渲染页面所需要发起的请求更少了。
最后,在合并 CSS 文件后,尝试去除无用样式并缩小它们。这样,它们只有 4.3 KB 大小,而你省掉了 10.1 KB.
不幸的是,在 Fedora 软件仓库中,还没有打包好的缩小工具。不过,有几百种在线服务可以帮到你。或者,你也可以使用 CSS-HTML-JS Minify ,它用 Python 编写,所以容易安装。现在没有一个可用的工具来净化 CSS,不过我们有 UnCSS 这样的 Web 服务。
CSS3 带来了很多开发人员喜欢的东西。它可以定义一些渲染页面所用的字体,并让浏览器在后台下载。此后,很多 Web 设计师都很开心,尤其是在他们发现了 Web 设计中图标字体的用法之后。像 Font Awesome 这样的字体集现在非常流行,也被广泛使用。这是这个字体集的大小:
current free version 912 glyphs/icons, smallest set ttf 30.9KB, woff 14.7KB, woff2 12.2KB, svg 107.2KB, eot 31.2
所以问题是,你需要所有的字形吗?很可能不需要。你可以通过 FontForge 来去除这些无用字形,但这需要很大的工作量。你还可以用 Fontello . 你可以使用公共实例,也可以配置你自己的版本,因为它是自由软件,可以在 Github 上找到。
这种自定义字体集的缺点在于,你必须自己来托管字体文件。你也没法使用其它在线服务来提供更新。但与更快的性能相比,这可能算不上一个缺点。
现在,你已经做完了所有对内容本身的操作,来最大限度地减少浏览器加载和解释的内容。从现在开始,只有服务器的管理技巧才才能帮到你了。
有一个很简单,但很多人都做错了的事情,就是使用一些智能缓存。比如,CSS 或者图片文件可以缓存一周。但无论如何,如果你用了 Cloudflare 这样的代理服务或者自己构建了代理,首先要做的都应该是缩小页面。用户喜欢可以快速加载的页面。他们会(默默地)感谢你,服务器的负载也会更小。
via: https://fedoramagazine.org/design-faster-web-pages-part-3-font-css-tweaks/
作者: Sirko Kemter 选题: lujun9972 译者: StdioA 校对: wxy
本文由 LCTT 原创编译, Linux中国 荣誉推出
了更方便地控制网页中各种各样的字体,CSS提供了一系列的字体样式属性,具体如下。
(1)font-size属性:字号
font-size属性用于设置字号,该属性的属性值可以为像素值、百分比数值、倍率等。表3-l列举了fomt-size属性常用的属性值单位,具体如下。
单位 | 说明 |
em | 倍率单位,指相对于当前对象内文本的字体倍率 |
px | 像素值单位,是阿页设计中常用的单位 |
% | 百分比数值单位,指相对于当前对象内文本的字体百分比 |
在表1所列的常用单位中,推荐使用像素值单位—px。例如,将网页中所有段落文本的字号设为12px,CSS样式示例代码如下:
· p(font-size:12px;)
(2)font-family属性:字体fomt-family属性用于设置字体。网页中常用的字体有宋体、微软雅黑、黑体等。例如,将网页中所有段落文本的字体设置为微软雅黑,CSS样式示例代码如下:
p[font-family:“微软雅黑“:]
fomt-family属性可以同时指定多个字体,各字体之间以逗号隔开。如果浏览器不支持第一种字体,则会尝试下一种,直到匹配到合适的字体。例如,同时指定3种字体的CSS样式示例代码如下:
body[font-fanily:“华文彩云”,“宋体“,“黑体";]
当应用上述代码后,浏览器会首选“华文彩云”字体,如果用户计算机上没有安装该字体则选择“宋体”。以此类推,当fomt-fammily属性指定的字体都没有安装时,浏览器就会选择用户计算机默认的字体。使用font-family属性设置字体时,需要注意以下几点。
· 各种字体之间必须使用英文逗号隔开。
· 中文字体需要加英文引号,但英文字体不需要加引号。当需要设置英文字体时,英文字体名必须位于中文字体名之前。CSS样式示例代码如下:
body[font-fanily:Arial,“微款雅黑”,“未体”,”黑体”:] /“正确的书写方式"
body(font-fanijy:“微软稚黑”,“宋体”。“黑体”,Arial:) /“错误的书写方式"/
· 如果字体名包含空格、#、S等符号,则该字体必须加英文引号,如“font-family.“Times New Roman":"
· 尽量使用系统欺认字体,以保证网页中的文字在任何用户的浏览器中都能正确显示。
(3)font-weight属性:字体粗细
font-weighn 属性用于定义字体的粗细,其属性值如表所示。
值 | 描述 |
normal | 默认属性值,定义标准样式的字符 |
bold | 定义粗体字符 |
bolder | 定义更粗的字符 |
lighter | 定义更细的字符 |
100~900(100的整数倍) | 定义由细到相的字符,其中400等同于normal,700等同于bold,数值越大字体越粗 |
表2列举了常用的font-weight属性的属性值。在实际工作中,常用的属性值为normal和bol,分别用于定义正常和加粗显示的字体。
(4)font-variant属性:变体
font-variant 属性用于设置英文字符的变体,一般用于定义小型大写字体,该属性仅对英文字符有效。font-variant 属性的可用属性值如下。
· normal:默认值,测览器会显示标准的字体。small-caps:浏览器会显示小型大写的字体,即所有的小写字
母均会转换为大写字母。但是所有使用小型大写字体的字母和其余文本相比,字体尺寸更小。例如,图3-l2中框线标注的小型大写字母,就是使用font-variant属性设置的。
(5)font-style属性:字体风格
fomt-style属性用于定义字体风格。例如,设置斜体、倾斜或正常字体。font-style属性的可用属性值如下。
· nommal:默认值,测览器会显示标准的字体样式。
· italic:测览器会显示斜体的字体样式。
· oblique:测览器会显示倾斜的字体样式。
当font-style属性取值为italic或oblique时,文字都会显示倾斜的样式,两者在显示效果上并没有本质区别。但italie使用了字体的倾斜属性,并不是所有的字体都有倾斜属性;而obhique只是使文字倾斜,无关该字体有没有倾斜属性。
(6)fomt属性:综合设置字体样式
fomt属性用于对字体样式进行综合设置,其基本语法格式如下:
选择器{font:font-style font-varlant font-weight font-size/line-height font-fanlly:}
使用fomt属性综合设置字体样式时,必须按上述语法格式中的顺序书写,各个属性以空格隔开(line-height用于设置行间距,属于文本外观属性,在后面将具体介绍)。例如,下面设置字体样式的示例代码:
p{font-fanily:Arial,"宋体";font-size:30px; font-style:italic; font-weight:boid; font-variant:
amal1-cape; line-height:40px;}
上述代码可以使用fomt属性综合设置字体样式,其等价于:
p{font:italic small-caps bold 30px/40px Arial,"宋体";}
其中,不需要设置的属性可以省略(省略的属性将取默认值),但必须保留fomt-size和 font-family属性,否则font 属性将不起作用。
下面通过一个案例具体演示如何使用fomt属性综合设置字体样式,如下所示。
<!doctype html>
<html>
<head>
<meta charset.-"utf-8">
<title>font l国性</title>
<style type-"text/css">
.one{ font:italic 18px/30px"隶书":}
.two{ font:italic l8px/30px;}
</style>
</head>
<body>
<p class="one">段落1:使用font 属性综合设置段落文本的字体风格、字号,行高和字体。</p>
<p class="two“>段落2:使用font属性综合设置段落文本的字体风格、字号和行高。由于省略了字体属性font-family,
这时font属性不起作用。</p>
</body>
</htnl>
定义了两个段落,同时使用fomt属性分别对它们进行相应的设置,效果如图。
从图中可以看出,font属性设置的样式并没有对第二个段落文本生效,这是因为对第二个段落文本的设置中省略了字体属性“font-family”。
(7)@font-face规则
@font-face是CSS3的新增规则,用于定义服务器字体。通过@font-face规则,可以使用计算机未安装的字体。@font-face规则定义服务器字体的基本语法格式如下:
@font-face{
font-family:字体名称:
src:字体路径;
}
在上述语法格式中,font-family用于指定该服务器字体的名称,该名称可以随意定义;sre用于指定该字体文件的路径。
下面通过一个剪纸字体的案例来演示@font-face规则的具体用法,如下所示。
<!doctype html>
<html>
<head>
<meta charset-"utf-8">
<title>afont-face规则</title>
<style type-"text/css">
@font-face{
font-fanily:jianzhi; /*服务器字体名称*/
src:url(FZJZJN.TTF); /*服务器字体文件的路径*/
}
p{
font-fanily:jianzhi; /*设置字体样式*/
font-size:32px;
}
</style>
</head>
<body>
<p>明确责任</p>
<p>肩负使命</p>
</body>
</htnl>
在例3-6中,第7~10行代码用于定义服务器字体;第12代码用于为段落标签设置字体样式。效果如图所示。
从图中可以看出,当定义并设置服务器字体后,页面就可以正常显示剪纸字体。总结例3-6,可以得出使用服务器字体的步骤。
①下载字体,并存储到相应的文件夹中。
②使用@font-face规则定义服务器字体。
③对元素应用“font-family”字体样式。
SS属性值 字体与文本
网页设计中有很多的文字要去处理,标题、段落、文章、列表以及表单中的文本。这一篇章我们讨论一下HTML中的字体与文本
字体
首先要有一个认识字体和文本不是一个东西哦。字体是不同的文本体式或者可以说是字的形体结构。对于英文来说有很多种不同的样式包括字母、数字和符号组成的。
文本指的是通过文本属性描述对文本的处理方式。行高,字符间距,缩进等。
那么网页中的字体是哪里来的呢?其中有哪些属性?文本属性中有哪些小秘密呐?
来源
用户机器中安装的字体
保存在第三方网站上的字体(link)
保存在服务器上的字体。这些字体可以使用@font-face规则随网页一起发给浏览器(一般字体图片都会放到一个单独的服务器上,更加的优化)
字体属性
font-family
字体族
font-family用于设定元素中的文本使用什么字体。通常给一个文档页面设置一个主字体(因为font-family是可以继承的),然后针对那些需要使用不用样式的字体在单独应用font-family。
因为字体来源我们已经知道了,两条路径要么是用户机器,要么是网上,那么就存在某种字体不能再某个网页中使用的可能。所以需要给出一组字体,这组字体叫做字体栈 。
简单的来说就是就是预备队,如果用户机器上没有某种字体,预备的字体就用作用了,用户还可以使用另一种字体阅读。
/* font-family的值不区分大小写 但是如果引入的是在线字体库请不要随意修改 有可能导致无法使用提供的定制字体 */ body{font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;}
font-size
字体大小
浏览器样式表默认为每个HTML元素都设定了font-size,言外之意是我们在设置font-size的时候其实是在修改默认值。字体大小的单位px、%、em。但是有一个很重要的点是字体的大小也是可以去继承的这个地方可能会出现一些未知的错误。
px是一个很常见的单位,em也是一个单位有什么区别呢?
px是绝对单位,em是一种相对单位与百分比是一样的,浏览器默认样式表在设定所有元素的字体大小时使用的都是相对单位em,h1被设定为2em,h2是1.5em,p是1em。默认情况下1em = 16px。这也是font-size的基准大小。
example 1
1 2 3 4 5 6 7 8 9 10 11 | <style> /* h1此时2em */ body{font-size: 200%;} /* h1此时应该是多少呢? */ body{font-size: 20px;} p{font-size: 16px;} </style> <body> <h1>我是谁</h1> <p>font-size</p> </body> |
tip:其它的以绝对单位设定的会重新设定字体的大小,不会产生继承。同时我们在设定的时候可以选择关键字值,比如x-small,medium,x-large等等 ,当然用的很少,你会在浏览器看到medium感兴趣的可以去观察一下吧。
example 2
1 2 3 4 5 6 7 | <style> /* span的字体大小是多少呢? */ p{font-size: 80%;} </style> <body> <p>我是<span>小贵</span></p> </body> |
example 3
1 2 3 4 5 6 7 8 9 10 | <style> /* h1的字体大小是多少呢? */ /* span的字体大小是多少呢? */ body{font-size: 150%;} p{font-size: 80%;} </style> <body> <h1>我是小小</h1> <p>我是<span>小小</span></p> </body> |
tip:使用绝对单位的好处是,在祖先元素的字体大小变化时,不会出现意外的连锁反应。
font-style
字体样式
值 | 描述 |
---|---|
normal | 默认值。浏览器显示一个标准的字体样式。 |
italic | 浏览器会显示一个斜体的字体样式。(斜体代表强调含义所以还是用em) |
oblique | 浏览器会显示一个倾斜的字体样式。 |
inherit | 规定应该从父元素继承字体样式。 |
font-weight
字体粗细
这个貌似没什么好说的,还是过了吧。主要一点最好使用bold,normal当然strong标签是加粗的状态,你们应该懂我的意思。
font-variant
字体变化
值 | 描述 |
---|---|
normal | 默认值。浏览器会显示一个标准的字体。 |
small-caps | 浏览器会显示小型大写字母的字体。 |
inherit | 规定应该从父元素继承 font-variant 属性的值。 |
font
简写,复合写法
强调两个规则
rule
必须声明size与family。
顺序 font-weight、font-style、font-variant随意调换,其次font-size,font-family。
同时还可以设置行高 font:bold italic small-caps 16px/1.5 ‘Microsoft yahei’ 16px/1.5的这个1.5代表的是倍数。
今天就分享到这,明天在分享!
如果你们想要了解或者想要深入学习java和web可以进我的群里进行交流学习,群号:web330336289,java644038439。欢迎我们进去交流学习,我们一同学习一同行进,我觉得程序员不应该中止脚步,而是一向在学习的道路上一向行进。
编码:天弘
*请认真填写需求信息,我们会在24小时内与您取得联系。