1. 字体相关的样式
我们前面讲过字体的两个属性
color用来设置字体颜色font-size字体的大小serif衬线字体(字的开始和结尾 带个小勾)
sans-serif非衬线字体 (字横平竖直)
monospace等宽字体(每个字母的宽度相等)
cursive手写体
fantasy梦幻字体
上述字体是字体的分类,我们经常使用的一些字体,如微软雅黑、黑体、楷体、宋体、Consolas等,才是具体的某种字体(自己写的代码决定分类,浏览器决定字体,所以不同的浏览器会出现不同的字体,就涉及到浏览器兼容问题);
指定字体的类别后,浏览器会自动使用该类别下的字体 font-familyfont-family可以同时指定多个字体,多个字体间使用逗,隔开字体生效时优先使用第一个,第一个无法使用则使用第二个,以此类推;
font-family: 'Courier New', Courier, monospace

3. 几种字体
手写体
Indie Flower
Ink Free
Nanum Pen
MV Boli
Segoe Print
Shadows Into
艺术体
Barrio
Julius Sans One
Lobster
Monoton
Poiret One
乱码字体
MT Extra
Symbol
Webdings
Wingdings
中文字体
方正粗黑宋简体
微软雅
黑体
楷体
宋体
仿宋
4. @font-face 联网字体
我们除了可以使用系统自带的字体样式外,
还可以在服务器端自定义字体位置@font-face可以将服务器中的字体直接提供给用户下载去使用
(用户需要联网访问这个字体的下载地址,这个字体的地址就是在我pc端存储的本地地址)
@font-face {/* 自己指定字体 名字 */font-family: 'myFont1';/* 服务器中字体 路径 */src: url('/font/ZCOOLKuaiLe-Regular.woff'),url('/font/ZCOOLKuaiLe-Regular.otf'),url('/font/ZCOOLKuaiLe-Regular.ttf')format('truetype');/* 指定字体格式,一般不写,保险问题 */}p {font-size: 30px;color: salmon;font-family: myFont1;}

问题
- 加载速度:受网络速度影响,可能会出现字体闪烁一下变成最终的字体
- 版权:有些字体是商用收费的,需要注意
- 字体格式:字体格式也有很多种(woff、otf、ttf这个兼容性最好),未必兼容,可能需要指定多个
5. 图标字体(iconfont)
字体与图片的区别:
- 图片放大以后容易失真,字体不会;
- 图片内存大,字体需要内存很小;
-
图标字体简介
在网页中经常需要使用一些小型图标,可以通过图片来引入图标。但是图片大小本身比较大,所以在使用图标时,我们还可以将图标直接设置为字体,然后通过
@font-face的形式来对字体进行引入,这样我们就可以通过使用字体的形式来使用图标fontawesome的字体库
有三种引入方式:
通过类 :重点是类格式
** class="fab fa-js;**- 通过伪元素:
**::before、::after;** - 通过实体 :
**&#x图标编码;**fontawesome
官方网站:https://fontawesome.com/ 下载解压完毕之后,直接将css和webfonts移动到项目中即可使用
1.通过类class设置
格式:重点是类格式 class="fab fa-js
/*引入all.css*/<link rel="stylesheet" href="/font/fontawesome/css/all.css"><style>/*添加颜色处理*/i{color: green;}/*引用的成形图案的名称*/.fa-venus-mars,.fa-mars-double {color: red;}.fa-html5 {color: #E34D22;}.fa-css3 {color: blue;}.fa-js {color: #D1B514;}</style>/*总的设置*/<i class="fas fa-bell" style="font-size: 50px; color: green;"></i>/*从zeal里面粘出来 fa-bell, 前面不是fas就是fab, 后边通过style设置图标字体的大小和颜色*//*css里面是标签fab、fas和样式fa-lg的合成库, webfont是🔔等成形图案的合成库*/<!-- 大小 --><i class="fab fa-weixin fa-lg"></i>/*fab类别标签 和 fa-lg大小 来自css,fa-weixin来自webfont(由于是二进制文件无法显示,一般从zeal手册查询)*/<i class="fab fa-weixin fa-2x"></i><i class="fab fa-weixin fa-3x"></i><br><!-- 边框 --><i class="fab fa-weixin fa-2x fa-border"></i><br><!-- 旋转 --><i class="fab fa-weixin fa-2x fa-rotate-90 "></i><!-- 水平对称 --><i class="fab fa-weixin fa-2x fa-flip-horizontal "></i><!-- 垂直对称 --><i class="fab fa-weixin fa-2x fa-flip-vertical "></i><br><!-- 动画 --><i class="fa fa-venus-mars fa-3x fa-spin"></i><i class="fa fa-mars-double fa-3x fa-pulse"></i><br><!-- 列表 --><ul class="fa-ul"><li><i class="fa-li fa fa-check-square"></i>can be used</li><li><i class="fa-li fa fa-spinner fa-spin"></i>as bullets</li><li><i class="fa-li fa fa-square"></i>in lists</li>/*fa-li 首行缩进 fa是标签 */</ul><br><br><br><!-- 组合 --><span class="fa-stack fa-lg"><i class="fab fa-html5 fa-stack-1x fa-10x"></i><i class="fab fa-css3 fa-stack-1x fa-4x"></i><i class="fab fa-js fa-stack-1x fa-2x"></i></span>
其中fas/fab是免费的,其他是收费的
2. 通过伪元素::设置(适合批量操作)
实际上就是把实体class中设置的 内容和样式大小 批量操作到了css的style的样式中
- 找到要设置图标的元素通过
::before或::after选中 - 在
content中设置字体的编码 设置字体的样式
fab:font-family: 'Font Awesome 5 Brands';fas:font-family: 'Font Awesome 5 Free'; font-weight:900;```html
武陵春·春晚
[宋] 李清照
- 风住尘香花已尽,
- 日晚倦梳头。
- 物是人非事事休,
- 欲语泪先流。
- 闻说双溪春尚好,
- 也拟泛轻舟。
- 只恐双溪舴艋舟,
- 载不动、许多愁。

<a name="4d27faef"></a>
#### 3. 通过实体&#x设置
通过实体来使用图标字体:`&#x图标编码;`<br />图形的编码在zeal手册的最右边;html
/注意分号;结尾 + 和类fab、fas/

<a name="tt5Ir"></a>
###
<a name="iconfont"></a>
### iconfont阿里的字体库
官方网站:[https://www.iconfont.cn/](https://www.iconfont.cn/)<br />iconfont是阿里的一个图标字体库,海量图标库,图标字体非常丰富,但是版权有点模横两可,如果需要商用,最好联系作者。不过一般情况下,公司企业都会有自己的UI设计团队,会自己去进行设计,这里使用方式大同小异
- iconfont需要添加购物车后再添加至项目然后下载,下载包中有demo.html,详细介绍了使用方式
- iconfont也提供了一种在线方式,直接在`我的项目`中选择`在线链接`可以复制出一份`@font-face`的css代码
<br />后续步骤与前面介绍的一致html
引入样式:
Lorem ipsum, dolor sit amet consectetur adipisicing elit. Totam deserunt tempore fugit quos eaque, ipsa rerum suscipit iure cumque aspernatur esse cupiditate nihil quas nulla odit? Sequi accusantium labore maiores.

<a name="701ff3e6"></a>
## 6. 行高
<a name="2a6f38d3"></a>
### 行高`line height`
文字占有的实际高度,可以通过`line-height`来设置行高
- 可以自动垂直方向居中
- 可以直接指定一个大小 `px`/`em`
- 也可以直接为行高设置一个整数(字体大小的倍数),eg: line-hight : 1;行高的大小就是字体的1倍;
行高经常还用来设置文字的行间距:`行间距 = 行高 - 字体大小`
html
<a name="i4JmS"></a>
###
<a name="2251fc0e"></a>
### 字体框
字体框就是字体存在的格子,设置`font-size`实际上就是在设置字体框的高度<br />行高会在字体框的上下平均分配<br />css
border: 1px black solid;
font-size: 100px;
/ line-height: 100px; /
不指定行高时,`content`高度`131.556px`:说明`line-height`默认值大约是`1.31` ~ `1.32`(倍数)<br /><br />指定行高时,`content`高度`99.556px`:少了`0.444px`,并且字母`p`下面溢出<br /><br />**存疑问题**<br />经测试,`line-height`大约比`100.444px`略大一点时,`content`高度才会大于`100px`,暂未知原因
<a name="hYvgQ"></a>
###
<a name="667edac0"></a>
### 字体font的简写属性
`font` 可以设置字体相关的所有属性:<br />`font: font-style font-variant font-weight font-size/line-height font-family`<br />其中某些值可以不写,会用默认值;但是最后两个字体大小和字体族是必须写的;<br />设置字体的时候存在**覆盖**的问题;<br />**默认值**
| 属性 | 默认值 | 其他常用值 |
| --- | --- | --- |
| `font-style` | `normal` | `italic`斜体 |
| `font-variant` | `normal` | `small-caps` |
| `font-weight`字体加粗 | `normal` | `bold`(100~900级别) |
| `font-size`字体大小(必写值) | `medium` | `small`<br />、`large` |
| `line-height`行高 | `normal` | |
| `font-family`字体族(必写值) | 取决于浏览器 | |
**示例1**css
/ font-size: 50px;
font-family: ‘Courier New’, Courier, monospace; /
font: 50px ‘Courier New’, Courier, monospace;

**示例2**css
/ small-caps值设置小型大写字母字体,所有小写变大写,同时字体尺寸更小(了解即可) /
font: bold small-caps italic 50px ‘Courier New’, Courier, monospace;
<br />**注意 Pay Attention:简写属性省略的值会使用默认值,所以会覆盖前面的非简写属性(不仅仅对于字体而言)**
<a name="5e64bca5"></a>
## 7. 文本对齐方式
<a name="98d695d6"></a>
### 水平对齐
`text-align` 文本的水平对齐
| `text-align`<br />属性值 | 对齐方式说明 |
| --- | --- |
| `left` | 左侧对齐 |
| `right` | 右侧对齐 |
| `center` | 居中对齐 |
| `justify` | 两端对齐 |html
`**left**`** 左侧对齐**<br /><br />`**right**`** 右侧对齐**<br /><br />`**center**`** 居中对齐**<br /><br />`**justify**`** 两端对齐**<br />
<a name="11b7fc50"></a>
### 垂直对齐
`vertical-align` 设置元素垂直对齐的方式
| `vertical-align`<br /> 属性值 | 对齐方式说明 |
| --- | --- |
| `baseline` | 基线对齐 |
| `top` | 顶部对齐 |
| `bottom` | 底部对齐 |
| `middle` | 居中对齐 |
`**baseline**`** 基线对齐**<br /><br />`**top**`** 顶部对齐**<br /><br />`**bottom**`** 底部对齐**<br /><br />`**middle**`** 居中对齐**<br /> <br />这里的居中对齐高度 = 基线高度 + x的高度 / 2<br />这种居中对齐并非实际上的居中对齐,一般也不会用这种方式对文字进行垂直方向的对齐<br />`**vertical-align**`** 还可以设置px值设置垂直对齐方式**css
vertical-align: 10px;

**图片的垂直对齐问题**html
<br />明显默认情况下,图片底部有一定缝隙,我们稍作修改,给img元素添加`vertical-align`属性值css
/ 只要不是基线对齐,就能消除底部缝隙 /
vertical-align: top;
vertical-align: bottom;
vertical-align: middle;
<br />**Q:为什么图片会有缝隙?**<br />A:图片属于替换元素,特点与文本一致,也有自己的基线,默认也是基线对齐。而基线位置不在最底部,所以会出现缝隙
<a name="lo6Lc"></a>
## 8.文本的其他样式
<a name="NLuTS"></a>
### `1.text-decoration` 文本修饰设置
可选值:
- none(默认值)
- underline(下划线)
- line-through(删除线)
- overline(上划线)
- 还可以支持加入颜色和样式(ie不支持);html
hhhhhhhhhh
<a name="Wi5cY"></a>
###
<a name="RYARn"></a>
### 2.网页处理留白组合使用(共四个值)…html
`white-space`留白的方式 <br /> 可选值:
- normal(默认值)
- nowrap(不换行)--会导致出现横向滚动条
- pre(保留格式中的空白)
`text-overflow`文本溢出部分变成省略号
<a name="W0Q4W"></a>
## 9.实践-京东顶部导航条结构html
<!DOCTYPE html>
