0%

HTML基础

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621
1622
1623
1624
1625
1626
1627
1628
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
1639
1640
1641
1642
1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
1655
1656
1657
1658
1659
1660
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672
1673
1674
1675
1676
1677
1678
1679
1680
1681
1682
1683
1684
1685
1686
1687
1688
1689
1690
1691
1692
1693
1694
1695
1696
1697
1698
1699
1700
1701
1702
1703
1704
1705
1706
1707
1708
1709
1710
1711
1712
1713
1714
1715
1716
1717
1718
1719
1720
1721
1722
1723
1724
1725
1726
1727
1728
1729
1730
1731
1732
1733
1734
1735
1736
1737
1738
1739
1740
1741
1742
1743
1744
1745
1746
1747
1748
1749
1750
1751
1752
1753
1754
1755
1756
1757
1758
1759
1760
1761
1762
1763
1764
1765
1766
1767
1768
1769
1770
1771
1772
1773
1774
1775
1776
1777
1778
1779
1780
1781
1782
1783
1784
1785
1786
1787
1788
1789
1790
1791
1792
1793
1794
1795
1796
1797
1798
1799
1800
1801
1802
1803
1804
1805
1806
1807
1808
1809
1810
1811
1812
1813
1814
1815
1816
1817
1818
1819
1820
1821
1822
1823
1824
1825
1826
1827
1828
1829
1830
1831
1832
1833
1834
1835
1836
1837
1838
1839
1840
1841
1842
1843
1844
1845
1846
1847
1848
1849
1850
1851
1852
1853
1854
1855
1856
1857
1858
1859
1860
1861
1862
1863
1864
1865
1866
# html总结

## 一、标签种类

1. ### 标题标签 h标签

双标签 块级元素 自己独占一行 有1-6级 h1 -h6

2. ### 段落标签 p标签

双标签 块级元素 在浏览器中独占一行的标签3

3. ### 分隔符 <hr>

单标签 块级元素 自占一行的标签

4. ### 格式化文本标签

```html
<!-- 粗体 -->
<b>樊某某被安排了了</b>
<strong>被杨某安排了</strong>
<!-- 斜体 -->
<i>朗驰科技就是好</i>
<em>美女老师少不了</em>
<u>前端开发 下划线</u>
<del>开发岗 删除线</del>
<sup>上标</sup>
<sub>下标</sub>
<mark>高亮</mark>
```

双标签 内联元素,不自占一行

5. ### 按钮标签 button

普通的按钮标签,不具备任何功能,可以自主赋予功能具有自己的样式,可以自定义修改。

\- 双标签,按钮内部可以包裹文本。“特殊的”内联元素,可以设置宽度高度,不自占一行

双标签 特殊的”内联元素 不自占一行

6. ### 分区标签 div

双标签 块级元素

分区标签往往没有自带样式 可以说没有任何样式 目的包裹其他标签使用 或者需要单独指定样式

7. ### span标签

双标签 元素是内联元素,可用作文本的容器

<span> 元素也没有特定的含义。

当与 CSS 一同使用时,<span> 元素可用于为部分文本设置样式属性。

8. ### 换行标签 br

单标签 块级标签 自占一行的标签

9. ### 预格式化标签pre

可定义预格式化的文本,浏览器会完整保留设计者在源文件中所定义的格式,包括各种空格、缩进以及其他特殊格式。

双标签 块级元素 自占一行的标签

10. ### 超链接标签

\- `<a></a>`标签,定义超链接,用于从一个页面链接到另一个页面。

\- 最重要的属性是 `href` 属性是必填属性,它指示链接的目标。href 属性可以填写多种路径和其他目标方式。

\- a 标签是双标签,可以包含文字等,`<a href=""></a>`是内联元素,不自一行

```html
<body>
<ul>
<li><a href="#a1">第一章</a></li>
<li><a href="#a2">第二章</a></li>
<li><a href="#a3">第三章</a></li>
</ul>

<a id="a1">第一章内容</a>
<p style="width: 500px;height: 1000px;">孙悟空三大白骨精</p>

<a id="a2">第二章内容</a>
<p style="width: 500px;height: 1000px;">孙悟空怒锤红孩儿</p>

<a id="a3">第三章内容</a>
<p style="width: 500px;height: 1000px;">孙悟空大脑天宫</p>

<a href="#">回到顶部</a>
</body>
```

11. ### img标签

单标签,为“特殊的”内联元素

```html
<!-- img 单独调整width和height 可以随着比例放大缩小 如果同时指定 可能会失真 title="设置图片提示 -->

<a href="标签种类_2.html">
<img src="图片路径" width="200px" height="200px" title="设置图片提示">
</a>
```

12. ### 有序列表标签

\- `<ol></ol>`有序列表标签,**双标签**,第一层嵌套内只能包含`<li></li>`列表项标签,单独存在没有意义,块级元素可以**自占一行**显示

\- `<li></li>`列表项标签,为双标签可以包裹任何标签和文本,**块级元素**。d
|

\- 列表项前有数字顺序,type 类型 1、A、a、i、I

13. ### 无序列表标签

\- `<ul></ul>`无序列表标签,**双标签**,第一层嵌套内只能包含`<li></li>`列表项标签,单独存在没有意义,块级元素可以**自占一行**显示

\- `<li></li>`列表项标签,为双标签可以包裹任何标签和文本,**块级元素。**

\- type 类型 disc、square、circle 用来更改列表项的形状。type属性可以设置:

\- `type="disc"` 默认的

\- `type="circle"` 空心圆点

\- `type="square"` 小正方形(实心的)

14. ### 自定义列表

\- `<dl></dl>`自定义列表不仅仅是一列项目,而是项目及其注释的组合。双标签,块级元素。

\- 每个自定义列表项可以指定 `<dt></dt>` 列表标题,只能包裹文本。

\- 每个自定义列表项使用`<dd></dd>`双标签包裹文本和元素。

15. ### table表格标签

`<table></table>`表格标签。**双标签**可以包裹表格系列的标签,**块级元素,自占一行**

\- `<caption></caption>`表格标题标签,双标签,只可以包裹文本。块级元素,自占一行,可以指定表格的标题,只能有一个,可以省略不写。如书写一定在`<table></table>`标签内嵌套的第一行出现。

\- `<thead></thead>`表头标签,可以指定表格的列表表头,可不写

\- `<tbody></tbody>`表体标签,可以指定表格的主体部分,可不写

\- `<tfoot></tfoot>`表尾标签,可以指定表格的尾部说明,可不写。`<tfoot>` 标签必须被用在以下情境中:作为 `<table> `元素的子元素,出现在 `<caption>`和 `<thead> `元素之后,`<tbody>` 和 `<tr>` 元素之前。



\- `<tr></tr>`行标签,双标签只能包裹列标签和加粗列标签,可存在在表头、表体和表尾中,属于结构,代表一行的范围。

\- `<th></th>`加粗列标签,一般放在表头,当作列标题使用。

\- `<td></td>`表格单元列标签,放置内容如文本和其他标签。

16. ### form表单标签

\- `<form></form>` 表单标签是 HTML 表单用于搜集不同类型的用户输入

\- **双标签**,一般情况下不能单独使用,需要在 form 元素中加入 input 等标签共同使用

17. ### input 标签

\- `<input/>`元素是最重要的表单元素。它有很多形态,根据不同的 type 属性。

\- input 标签是**单标签**,主要依靠控件,input 的 type 类型就是用于书写控件的属性。它的控件有很多种类,从而达到我们要的需求。

\- input 标签是内联元素,但属于特殊的内联元素,可以定义宽度高度,**不自占一行**



文本框

```html
<input type="text" placeholder="输⼊⽤户名" name="username" maxlength="10" />
```

密码框

```html
<input type="password" placeholder="输⼊密码" name="pwd" />
```

复选框

```html
<input type="checkbox" name="eat" checked />吃⾯
<input type="checkbox" name="eat" />吃饭
<input type="checkbox" name="eat" checked />吃⼟

```

按钮

```html
<input type="submit" />
<input type="reset" />
<input type="button" value="普通按钮" />

```

文件上传

```html
<input type="file" />
<!-- 多⽂件上传 -->
<input type="file" multiple />

```

18. ### label标记标签

`<label></label>` 标记标签标签不会向用户呈现任何特殊效果。**双标签,内联元素,不自占一行**

19. select菜单标签

\- `<select></select>` 下拉菜单标签,**双标签,但不能单独存在**,只能包裹`<option></option>` 标签是选项标签

\- `<option></option>`的`value`属性是可以获取并且得到该下拉菜单用户选择的是哪一项

\- `multiple`属性代表该下拉菜单可以多选。

20. ### textarea文本域

文本域标签具有滚动条的多行文本输入控件,与单行文本框 text 控件不同

\- 它不能通过 maxlength 属性来限制字数,为此必须寻求其他方法来加以限制以达到预设的需求。

\- 文本域禁止缩放的样式`resize:none;`

21. ### iframe标签

\- `<iframe></iframe>`标签是一个内联框架,即用来在当前 HTML 页面中嵌入另一个文档的,且所有主流浏览器都支持 iframe 标签

\- 简单用法的属性

\- `src` iframe 页面地址,有同域跨域之分

\- `height` iframe 高度

\- `width` iframe 宽度

\- `name` iframe 命名

\- `scrolling`用来设置框架是否需要滚动条,取值可以是`yes,no,auto`

\- `auto`在需要的情况下出现滚动条(默认值)

\- `yes`始终显示滚动条(即使不需要)

\- `no`从不显示滚动条(即使需要)

\- 优势和劣势

\- 程序调入静态页面比较方便;

\- iframe 有不好之处:样式/脚本需要额外链入,会增加请求

\- 有同步和异步之分

\- 样式不好控制



<iframe name="Iframe1" src="https://www.taobao.com" width="100%" height="200"



scrolling="yes">

您的浏览器不⽀持嵌⼊式框架,或者当前配置为不显示嵌⼊式框架。

</iframe>

![image-20220928112714139](HTML基础/image-20220928112714139.png)

## 二、属性

1. ### style属性

规定元素的行内样式(inline style)

```html
- `color: red;` 字体颜色,色值可以是英文(部分生效)
- `background-color: green; `背景颜色,色值可以是英文(部分生效)
- `font-size: 20px;`字体大小,px 是像素单位
- `text-align: center;`块级标签中的文字和图片居中显示
- `width: 100%;`设置元素的宽度,百分比单位是参照父级元素的
- `height: 100px;`设置元素的高度
```

2. ### id 属性

定义唯一标识符(ID),在该页面上一个标签只能有一个不重复的 id 名,它具有唯一性。

id 属性的值不能是数字开头,不建议写中文

3. ### class 属性

可以将元素进行分类后给予相同的样式,减少了代码的书写量

\- 该页面上可以有多个元素拥有此类名,一个元素也可以有多个类。

\- class 选择器名称不能是数字开头,不建议写中文,可以是多个类名用空格隔开。

\- 值的书写规范与 id 相同

4. ### data-*⾃定义属性

是自定义数据属性,可以通过 JavaScript 与 HTML 之间进行专有数据的交换

`data-*` 这里的`*`可以替换为自定义的有意义的字母或单词,如:`data-buy`

5. ### title 标题属性

包含表示与其所属元素相关信息的文本。

\- 这些信息通常可以作为提示呈现给用户,但不是必须的。

6. ### href 属性**''<a标签>'**

```html
<!-- target 为_self本页面跳转 -->
<a href="./标签种类_2.html" target="_self">点我1</a>
<!-- target 为 _blank新页面跳转 -->
<a href="http://www.baidu.com" target="_blank">点我2</a>
<!-- 刷新页面 -->
<a href="">点我3</a>
<!-- 不刷新页面 -->
<a href="#">点我4</a>
<!-- 把要下载的数据放到a链接的href属性中 -->
<a href="下载路径">下载</a>
```

7. ### target 属性 **''<a标签>'**

```html
<!-- target 为_self本页面跳转 -->
<a href="./标签种类_2.html" target="_self">点我1</a>
<!-- target 为 _blank新页面跳转 -->
<a href="http://www.baidu.com" target="_blank">点我2</a>
<!-- 刷新页面 -->
<a href="">点我3</a>
<!-- 不刷新页面 -->
<a href="#">点我4</a>
<!-- 把要下载的数据放到a链接的href属性中 -->
<a href="下载路径">下载</a>
```

8. table表格标签的相关属性

![image-20220927163337657](HTML基础/image-20220927163337657.png)

9. form标签常用属性

\- 常用属性

​ \- name属性主要是对这个form进行标记

​ **\- methood=”get/post”,** get传送的数据量较小,不能大于2KB。post传送的数据量较大,一般被默认为不受限。get安全性非常低,post安全性较高。但是执行效率get安全性非常低,post安全性较高。但是执行效率却比post方法好。

​ **\- action,**处理表单提交的 URL(可以为node中的路由接口地址)。

​ \- enctype属性,当method属性值为post时,enctype 就是将表单的内容提交给服务器的媒体类型。application/x-www-form-urlencoded:未指定属性时的默认值。



## 三、选择器

1. ### 基础选择器 + 关系选择器

```html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
/* 基础选择器 */
/* 通用选择器 */
*
/* 元素选择器(标签选择器) */
h1{
color: #000;
}
p{

}
/* 类选择器 */
.class{
color: #000;
}
/* id选择器 */
#id{
color: #000;
}
/* 组合选择器 */
h1,h2,,h3,h4{
color: #000;
}
h1, .class{
color: #000;
}



/* 关系选择器 */
/* html 结构中存在三种关系,“兄弟关系”、“父子关系”、“后代关系” */

/* 父子选择器 可延伸*/
ol>li{
color:red;
}
/* 后代选择器 可延伸*/
ol li:first-child{
color: aqua;
}
/* 兄弟选择器 兄弟选择器可以选到该元素后面的兄弟,而选不到之前的 */
.f1~li{
color: blue;
}
/* 邻里选择器 相邻兄弟选择器只能选中“紧紧相邻”的一个兄弟*/
.f2+li{
color: purple;
}
</style>
</head>
<body>
<ol>
<li>天龙人</li>
<li>北京人</li>
<li>广东人</li>
<li>山西人</li>
</ol>

<ul>
<li class="f1">天龙人</li>
<li class="f2">北京人</li>
<li>广东人</li>
<li>山西人</li>
</ul>

</body>
</html>
```

2. ### 伪类选择器

```html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>伪选择器</title>
<style>
/* 网址没有被打开之前,或者没被打开过 */
h1>a:link{
color: aqua;
}
/* 访问过后 */
h2>a:visited{
color: aqua;
}
/* 鼠标悬停 */
h3>a:hover{
color: aqua;
}
/* 点击激活 */
h4>a:active {
color: aqua;
}
/* 标签获取焦点的样式 */
#i1:focus{
color: aqua;
}
#i2:checked{
color: red;
}

/* befor after */
p::after{
content: "之后";
color:aqua;
}
p::before{
content: "你好,";
color: red;
}

</style>
</head>
<body>
<!-- 伪类选择器 -->
<!-- 网址没有被打开之前,或者没被打开过 -->
<h1><a href="https://hyqq.xyz/" target="_blank">a:link特有</a></h1>
<!-- 访问过后 -->
<h2><a href="https://hyqq.xyz/" target="_blank">a:visited特有</a></h2>
<!-- 鼠标悬停 -->
<h3><a href="https://hyqq.xyz/" target="_blank">a:hover特有</a></h3>
<!-- 点击激活 -->
<h4><a href="https://hyqq.xyz/" target="_blank">a:active特有</a></h4>
<br>
<!-- 标签获取焦点的样式 -->
请输入:<input type="text" name="" id="i1">
<br>
请选择:<input type="radio" name="sex" id="i2"><input type="radio" name="sex" id="">


<!-- 伪标签选择器 -->
<p>世界</p>
</body>
</html>
```

3. ### css 优先级

- 优先级的原则

\- 顺序读取的优先级:是相同类型选择器采用顺序读取后来的优先

\- 选择器的优先级:不同类型选择器,按照权重原则采用(id 选择器 100,类选择器 10,元素选择器 1)

\- 继承的优先级:制定样式的优先级大于继承样式的优先级

\- 多个选择器一起使用的时候:根据权重值累加比较值后采用优先级

\- 最高优先级:!important,直接获取最高优先级,内联样式不能加!important


- 优先级的比重大小

按 CSS 引入方式分:`内联样式 > 内部样式 > 外部样式`(但要注意外部样式引用要在内部样式下面,才会低于内部样式的优先级)

(3)按元素分:`id选择器(100) > 类选择器(10) > 元素选择器(1)`

4. ### css3 高级选择器

1. 属性选择器

- 简单属性选择器

- 具有某个属性的元素:[属性名]{样式}

- 特指某个元素具有某个属性:元素名[属性名]{样式}

- 具备多个属性的元素:

```
[属性名1][属性名2]{样式声明}
```

- 特指某元素具备多个属性:

```
元素名[属性名1][属性名2]{样式声明}
```

- 筛选属性选择器

- 元素的属性名的值等于:

```html
[属性名=值]{样式}
```

- 元素的属性名以什么开头

```
[属性名^=开头字段]{样式}
```

- 元素的属性名以什么结尾

```
[属性名$=结尾字段]{样式}
```

- 元素的属性名包括什么字段

```
[属性*=包括字段]{样式}
```

- 元素的属性名包括的**独立字段**

```
[属性名~=包含的字段]{样式}
```

- 目标伪类选择器

- \- 对应锚点被激活时,匹配的样式,使用 a 标签的 href 属性连接元素锚点

\- `选择器:target{样式声明}`

- 结构性伪类选择器

- \- 匹配父元素的第一个孩子 :`父元素>:first-child {样式声明}`

\- 匹配父元素的最后一个孩子 :`父元素>:last-child {样式声明}`

\- 匹配父元素的第 n 个孩子: `父元素>:nth-child(n) {样式声明}`

\- 匹配内部没有任何内容(包含文本)的标签 :`父元素 >:empty{ 样式声明}`

\- 匹配父元素的唯一子元素:`父元素 >:only-child{样式声明}`

\- 使用`not()`参数为选择器,否定该括号内选择器的其他所有选择器,类似于取反:`父元素 >:not(不想要的选择器){样式声明}`

## 四、字体和颜色

1. ### 字体的尺寸和单位

定义宽度和高度的单位:px pt em rem

一般PC端使用px pt

移动端使用 em rem vw vh

最大宽度和最小宽度 最大高度和最小高度

max-width min-width max-height min-height

不允许出现负值

2. ### 颜色

- 英文颜色:transparent透明色

- 十六进制颜色:**#rrggbb**

1、2 位代表红色范围

3、4 位代表绿色范围

5、6 位代表蓝色范围

- rgb颜色:

- rgb()函数:r 代表红色色值,g 代表绿色色值,b 代表蓝色色值
- 取值范围 0~255 之间的 256 个数
- rgba()函数:a 代表透明度,取值 0~1 之间的数字,0 代表完全透明

3. ### 行高

- 作用:控制行间距(给每行上下增加间距)

- 属性名:line-height

- 取值

- 数字+px
- 倍数(当前标签font-size的倍数)

- 应用

- 让单行文本垂直居中 可以设置为line-height:文字父元素的高度
- 网页精准布局时,会设置line-height:1可以取消上下间距

- 行高与font-size

- 如果同时设置了行高和font连写,注意覆盖问题
- font:style weight size/line-heigt family





## 五、边框

1. ### 边框属性

- border-width边框宽度

border-style边框样式,solid 实线,dashed 虚线,dotted 点点

border-color边框颜色

2. 边框的方向

- border-bottom下边框

border-top上边框

border-left左边框

border-right右边框

3. 边框的简写方式

- border:30px solid green; 三个位置分别可以写边框宽度、边框样式边框颜色,没有严格要求书值都写顺序。

## 六、元素的分类

1. 元素的显示属性

- display`元素以什么方式显示(以下为常用显示方式)

\- `display: block;`以块级元素方式显示

\- `display: inline;`以内联元素方式显示

\- `display: inline-block;`属于行内元素,但以块级显示,俗称行内块

\- `display: none;`不显示

\- `display: table;`以 table 方式显示(不是重点)

2. inline-block

- 它是行内元素的一种

\- 不自占一行横向从左向右排列

\- 可以设置宽度、高度以及内外边距

\- 常见的行内块级显示元素`img button input`

\- 会出现幽灵空白节点

\- 把 img 标签变成块级元素 `display: block;`

\- 父级元素`font-size: 0;`去掉空白节点

## 七、显示和隐藏属性

```html
1. display:none

- display:none;使元素消失,脱离文档流的消失

display:block;使元素出现,元素显示为块级元素

2. visibility: hidden

- visibility: visible; 元素显示

visibility: hidden;元素隐藏,占据自身位置

3. opacity: 100%

- opacity 属性代表元素的透明度,取值范围是 0-1 之间的数字,0 代表完全透明,1 代表不透明

缺点是,元素内的一切都会随着透明度改变
```



## 八、元素的修饰

1. ### 圆角

1. #### 元素的四个角:

- \- `border-top-left-radius`左上角

\- `border-top-right-radius`右上角

\- `border-bottom-left-radius`左下角

\- `border-bottom-right-radius`右下角

2. #### 圆角的取值:

- \- 水平边和垂直边设置相同

\- 1 个值代表四个角

\- 2 个值代表左上和右下,右上和左下

\- 3 个值代表左上,右上和左下,右下

\- 4 个值代表 左上,右上,右下,左下

\- 水平边和垂直边设置相同(了解)

\- 水平边圆角/垂直边圆角

3. #### 圆形

- \- 圆形,元素宽高一致`border-radius: 50%;`

\- 椭圆形,元素宽高不一致`border-radius: 50%;`

\- 胶囊型`border-radius: 高度的一半

2. #### 盒子阴影

1. ##### 盒子阴影的属性

- \- `box-shadow: x轴偏移 y轴偏移 羽化 扩展 颜色 内阴影`

\- 第一个值和第二个值代表: x 轴上的偏移量 和 y 轴上的偏移量(正负值)。

\- 第三个值代表:模糊半径的大小(羽化)不允许负值。

\- 第四个值代表:扩展半径的大小,向四周扩散相等的大小,正值放大,负值缩小。

\- 第五个值代表:颜色值。

\- 第六个值(可选)代表:阴影向内 inset:默认阴影向外扩散。

3. #### 光标设置

- \- `cursor: default;`箭头

\- `cursor: pointer;`小手

\- `cursor: wait;`等待

\- `cursor: text;`文本

\- `cursor: crosshair;`十字

\- `cursor: progress;`箭头+等待

\- `cursor: help;`箭头+问号

4. #### 表单轮廓

- \- `outline`属性

\- 简写`outline:width style color;`

\- input 标签有默认的轮廓线,清空轮廓线`input {outline: none;} 或 {outline: 0;}`\- `outline`属性

\- 简写`outline:width style color;`

\- input 标签有默认的轮廓线,清空轮廓线`input {outline: none;} 或 {outline: 0;}`

5. #### 列表样式

- \- `list-style` 属性是一个简写对属性集合

\- `list-style`简写,`list-style:none`去掉标识(常用)

\- 分开写样式包括:

\- `list-style-type`列表标记

\- `list-style: none;`没有标记

\- `list-style: disc;`默认实心圆点

\- `list-style: circle;`空心圆点

\- `list-style: '♥';`自定义圆点

\- `list-style-image`设置列表标识为小图片

\- url()使用绝对路径或者相对路径

\- 最好放小图,图标大小无法设置

\- `list-style-position`设置标识在 li 的定位

\- `list-style-position: outside;`默认在 li 外

\- `list-style-position: inside;`默认在 li 里

## 九、背景

1. ### 背景颜色

- background-color: 颜色色值;

2. ### 背景图片

- background-image: url(路径);

注意:背景图必须要求元素具有宽度和高度

3. ### 背景图和img的区别

- 尺寸角度

- img 具有自己的尺寸,不设置宽度高度,可以直接显示 (如同照片)

- 背景图必须设置宽度和高度 (如同打印)

- 增加内容角度

- img 图片上不可以直接写文字,除非在 img 盒子外部定位
- 背景图是可以在图片上写文字的,背景图其实和颜色一样

- 功能角度

- img 一般用于产品展示,可以根据素材更新
- 背景图一般做大背景或者更新小图标 icon

4. ### 背景图平铺

- background-repeat:repeat; 默认值 横向纵向都
- background-repeat:no-repeat; 不平铺
- background-repeat:repeat-x; x轴平铺
- background-repeat:repeat-y; y轴平铺

5. ### 背景图定位

- background-position: 可以改变背景图的默认的位置,默认位置在元素的左上角。

- \- `background-position:x轴 y轴` 两个方向

\- `background-position-x` 单独定义 x 轴

\- `background-position-y` 单独定义 y 轴

关键字:top、bottom、center、right、left

可以使用长度单位,如:px、pt、em、%等

6. ### 背景图尺寸

- background-size`属性来控制背景图片的大小.在拉伸方向中有宽度拉伸和高度拉伸两种,所以可以指定两个值`background-size:x轴拉伸 y轴拉伸

- 取 1 个值,这个值指定图片的宽度,图片的高度隐式的为 auto

\- 尺寸可以为 px、pt、em、%

\- cover:铺满整个容器的宽高,而图片多出的部分则会被裁掉;

\- contain:容器内至少有一张完整的图,no-repeat 情况下容器会有留白区域。repeat 情况下留白区域则平铺背景图

7. ### 背景简写

- background:color image repeat position;`简写属性,四组值用空格分开,没有顺序

\- background 简写中不包括`background-size`,`size`需要单独写

## 十、溢出

1. ### 溢出属性

- overflow: hidden;`溢出隐藏

\- `overflow: scroll;`x 轴 y 轴都出现拖动条,子元素不超出也会有滚动条的那条轨道。

\- `overflow: auto;`只有溢出的方向出现拖动条

\- `overflow: visible;`溢出默认展示

\- 单独设定 x 轴或者 y 轴的溢出

\- overflow-x: auto;

\- overflow-y: hidden;

\- 如果 overflow-x、overflow-y 的值相同,则等同于 overflow 设置了这个值。

\- overflow-x:hidden;那么 overflow-y 就会被重置为 auto。

2. ### overflow 与 BFC(清除浮动和清除外边距溢出时着重讲解)

- BFC(Block formatting context)直译为"块级格式化上下文"。它是一个独立的渲染区域,并且与这个区域外部毫不相干。内部元素除了脱离文档流,之外无论如何设置都不会影响父级。(如同杯中水,如何改变也不会撒出)

-计算BFC的高度时,浮动元素也参与计算。所以形成 BFC 的元素可以清除浮动带来的影响,不然的话,子元素浮动,父元素塌陷,父元素的兄弟元素会和父元素的子元素重叠,就违背了 BFC 的初衷,所以要清除浮动带来的影响。- scroll、auto、hidden 这三个可以触发元素的 BFC 特性。visible 不会。

\- 利用 overflow 形成 BFC 的应用:

\- 清除浮动影响:父元素设置 overflow:auto/scroll/hidden;可以清除子元素浮动带来的影响。(形成 bfc 结界,与外界隔绝,仅支持 ie7+及现代浏览器)

\- 避免 margin 穿透/重叠问题(形成 bfc 结界,与外界隔绝)

## 十一、盒子模型

1. ### 盒子的概念

- 页面中额外每一个标签,都可以看做是一个“盒子”,通过盒子的视角更方便的进行布局
- 浏览器在渲染网页时,会将网页中的元素看做是一个个的矩形区域,我们称之为盒子

2. ### 盒子模型

- CSS中规定每个盒子分别由:**内容区域(content)** **内边距区域(padding) 边框区域(border) 外边距区域(margin)**构成,这就是盒子模型
- 标准盒子和怪异盒子
- 标准盒模型采用的W3C标准,盒子的content内容部分由width宽度和height高度决定,**添加padding内边距或border外边框后,宽高都会进行相应增长;**
- ②怪异盒模型也称为IE盒模型,是IE浏览器设计元素时遵循的规则。怪异盒模型的宽高在div盒子初次设置时就已经规定,添加padding或者border,会从中减少content内容的占据区域,来为padding和border制造空间,宽高不会相对应的进行增长。
- 计算方法
- 标准盒子模型的内容计算:content=width*height,
盒子的总宽度=width+padding(左右)+margin(左右)+border(左右)
总宽度等于所有附加值,偏移值的总和;
- 怪异盒子模型的内容计算:content=width*height+padding+border
盒子的总宽度=width+margin(左右)此时的width宽度已经包含了padding和border的值;

3. ### 内边距

- adding 指盒子的“内补间”,宽高之外到边框以内的距离。

\- 可以设置长度,如 px、em、rem 等,且不支持负值

\- padding 有四个方向分别是上、右、下、左

\- padding-top 上内边距

\- padding-right 右内边距

\- padding-bottom 下内边距

padding-left 左内边距

- \- 1 个值,将用于全部的四边。

\- 2 个值,第一个用于上、下,第二个用于左、右。

\- 3 个值,第一个用于上,第二个用于左、右,第三个用于下。

\- 4 个值,将按上、右、下、左的顺序作用于四边。



4. ### 外边距

- margin 指盒子的外边距,外边距是当前元素和其他兄弟元素之间的距离。

\- 可以设置长度,如 px、em、rem,%等,%取值都是父元素宽度的百分比取值。

\- 正值时是增大该方向外边距,负值时是缩小该方向外边距。

\- margin 有四个方向分别是上、右、下、左

\- margin-top 上外边距

\- margin-right 右外边距

\- margin-bottom 下外边距

\- margin-left 左外边距

- 和内边距一样,外边距可以简写 1 ~ 4 个值,下和右不会产生效果的原因,是因为外边距其实是当前元素与同级元素之间的距离。

\- 1 个值,将用于全部的四边。

\- 2 个值,第一个用于上、下,第二个用于左、右。

\- 3 个值,第一个用于上,第二个用于左、右,第三个用于下。

\- 4 个值,将按上、右、下、左的顺序作用于四边。

- **margin 有一个特殊的取值是 auto**,auto 对上下外边距无效,左右取相同的值,使当前元素在父元素内左右居中。

\- 块级元素在父元素中水平居中`margin:上下距离 auto;`

\- 上下距离在没有的时候可以写 0

\- 内联素使用 margin:auto,不能完成居中效果

- **margin 的无效情形**

外边距可以让元素发生位移效果,但只有左和上外边距会移动当前元素。

下和右外边距,只能让当前元素和周围的元素保持距离。当旁边没有其他元素时,它只是看上去无效。因为,`margin`是设置同级元素间的间隔,并不是设置它在父元素中的位置。如果右侧和下面并没有元素,就不会出现效果。

## 十二、浮动和流体布局

1. ### 默认文档流

\- 流就是文档布局的自身特性,而定位机制可能就会打破原有流的特性

\- 默认文档流,画格子,内联和块级

\- 内联元素,从左向右排列

\- 块级元素,从上向下排列

2. ### 脱离文档流

文档一旦脱离文档流,不受文档流的布局约束了,在算其父元素的高度时,就不包括其自身了。以下属会导致元素脱离文档流:

\- float 浮动

\- position 定位(绝对定位、固定定位)

3. ### 浮动

子元素在父元素中浮动,会使其脱离文档流,

导致父元素对其的管理能力

- 浮动属性

\- `float:none`默认不浮动

\- `float:left`左浮动

\- `float:right`右浮动

- 浮动过程:

\- 脱离文档流不再撑起父元素

\- 不再自占一行

\- 在元素浮动的“当前行”向左或向右对齐

- 1.元素浮动后对父级的高度有影响,不再撑起父级的高度

2.元素浮动后可以在父元素的左侧或右侧排列

3.元素浮动后不自占一行

4.元素浮动后会对后面的文档流中的兄弟元素产生影响会遮盖其后面的兄弟元素

5.内联元素浮动后,自动变成块级元素

6.浮动元素仍受父元素影响,还是在父元素的范围内

**7.当父元素内所有元素均浮动,元素们宽度相加大于父元素宽度时,会换行**

8.当元素浮动时虽然不自占一行,但会向前占位,前方空值的位置都会属于自己所有,因此后方的元素换行时,不能占据元素向前占位的地域(见元素占位示意图)

9.当元素浮动时,原则会盖住其后方在文档流中的兄弟元素。但文字、图片等(行内元素和行内块)不会被盖住,其后兄弟元素的文字不会被盖住而是环绕浮动元素四周显示。解决方案包裹文字的元素浮动在前一个元素侧面。

4. ### 清除浮动

- 清除浮动并不是去除浮动,而是将浮动带来的负面效果解决掉。因为浮动会产生高度坍塌

\- 浮动的影响父元素无高度

\- 父元素无高度后,父元素的兄弟元素会向上,发生被遮盖

- **利用高度解决**

给父元素高度,弊端是未必知道子元素的高度

- **父元素也浮动**

父元素浮动,会影响父元素的兄弟元素

- **父元素溢出隐藏**

overflow:hidden/auto,父元素中的子元素可能会被隐藏(利用BFC 块级格式化上下文中,使用该属性可保证浮动元素也可以被计算入父级的高度)

- **用伪元和clear属性素解决**

给父元素增加一个在尾部的伪元素

```html
.clearfix:after {
content: "";
display: block;
clear: both;
}
.clearfix {
*zoom: 1;
} /*IE/7/6*/

```



## 十三、定位

1. ### position 属性

\- `position`属性是定位属性,用于指定一个元素在文档中的定位方式。

\- top,right,bottom 和 left 属性值则决定了该元素的距离四边的位置,可以为负值。

\- 开发中多用绝对长度单位 px 进行调整,如果在移动端中,可以使用 rem、vw 等单位进行调整。

\- 常用取值:

\- `relative` 相对定位

\- `absolute` 绝对定位

\- `fixed` 固定定位

sticky

2. ### 相对定位

**\- 相对定位 position: relative 不脱离文档流。**

\- 可使用 top,right,bottom 和 left 做偏移。

**\- 元素相对的位置是自己本来的位置,移动不改变页面布局。**

\- 相对定位属性不会影响周围的布局,但会出现新的层叠顺序。

\- 当四个方向值发生重合时,以 top 和 left 为优先。

3. ### 绝对定位

**\- absolute 绝对定位,元素将脱离文档流,其他元素不为该元素预留空间。**

\- 它的移动参照为祖先元素的偏移,来确定元素位置。元素会逐层向上寻找自己的参照元素,当找到的最近一层祖先元素具有 position 属性时,该元素就会以这个祖先元素的原点为参照点。

\- 可使用 top,right,bottom 和 left 做偏移。

\- 当四个方向值发生重合时,以“上 top”和“左 left”为优先。

\- 绝对定位的元素可以设置外边距,且不会与其他边距合并。

\- 应用场景背景图中的文字和按钮,轮播图中的控制符

4. ### 固定定位

fixed 固定定位是元素,决定它的“包含块”是 html,唯一可以限定固定定为元素的就是 html 根元素

\- `position: fixed;`它到父级始终是 html

\- 直接在窗口的某个位置固定

\- 可使用 top,right,bottom 和 left 做偏移。

5. ### 粘性定位

- sticky

6. ### 层叠

1. z-index 就是 z 轴的顺序,z-index 可以设置字符值,如:auto,多数情况设置整数值,可以为负值。z-index 的最大值是 21,4748,3647 (21 亿多)。跨度尽量 10 以上

2. 层叠顺序取值

\- `z-index`层叠顺序

直接设置没有单位的整数,可以为负值,值越大层级越高

3. 层叠领域的准则

**\- 值大的在上:z-index 的值,在同一个层叠上下文领域,层叠水平值大的那一个覆盖小的。**

**\- 后来的在上:当元素的层叠水平一致的时候,在文档流中处于后面的元素会覆盖前面的元素。**



## 十四、渐变

1. ### 线性渐变

- 颜色和角度

- background-image: linear-gradient(color1,color2,……);`渐变最少两个颜色,才能体现出颜色的变化

\- `linear-gradient()`渐变颜色的参数用逗号分开,可以写多种颜色表达方式

\- 渐变的方向,按照参数顺序依次向下,可以在颜色前加入角度或关键字控制渐变方向

\- `90deg` 角度

\- to 终点 关键词,就是终点在哪个位置,top,left,right,bottom,记得加空格 (不建议使用)

- 渐变的比例

- background-image:linear-gradient(方向,颜色1 起始值 结束值,颜色2 起始值 结束值,颜色n 起始值 结束值……)`

\- 多个颜色渐变时,渐变的区域需要调整,可采取控制颜色范围的方法。在函数内颜色的后面加入长度单位(如 px 或%)用空格分隔。

2. ### 径向渐变

- 渐变的方向和范围

- \- `background-image: radial-gradient(color1,color2,……);`

\- background-image:radial-gradient(颜色 1 起始值 结束值,颜色 2

起始值 结束值,颜色 n 起始值 结束值……)

- 半径

- background-image: radial-gradient(半径,颜色1,颜色4,颜色3);`

\- `background-image: radial-gradient(x轴半径 y轴半径,颜色1,颜色4,颜色3);`

\- 半径只传入一个参数,则表示该渐变形状为圆

\- 半径可以使用 px

- 圆心起点

- \- background-image: radial-gradient(x 轴半径 y 轴半径 at x 轴圆心 y 轴圆心,颜色 1 起始值 结束值,颜色 2 起始值 结束值……)

在圆心后面增加 at 空格 x 轴 y 轴的原点位置,可以使用长度单位或关键词。取值可使用 px,% 或者关键词:left/top/bottom/right

- \- 注意重点

\- 半径只传入一个参数,则表示该渐变形状为圆

\- 颜色范围用的百分比,半径变化,百分比参照半径

\- 颜色范围用的是 px,则不会因为半径的变化而变化

3. ### 重复的渐变

- \- 注意重复的渐变要求浏览器版本,版本过低的浏览器版本无法查看效果

\- `background-image: repeating-linear-gradient()` 重复的线性渐变

\- `background-image: repeating-radial-gradient()` 重复的径向渐变

\- 当半径过小,页面分辨率显示效果会怪异

## 十五、弹性布局

- 弹性布局是 css3 主推的一个布局,传统布局是基于文档流和盒子模型的,主要以浮动布局,定位布局等。

- 弹性布局是 css3 主推的一个布局,传统布局是基于文档流和盒子模型的,主要以浮动布局,定位布局等。

**给父元素家 display:flex**;使子元素横向排列,不用每个子元素浮动了

父元素不需要清除浮动了,高度依然被子元素撑开

1. 容器和项目

- 使用 flex 布局的元素(父元素),称为"容器"

它的所有“子元素”自动成为容器成员,称为 "项目"

它们各自有控制布局的属性,必须是容器包裹着项目

2. 主轴

- 主轴就是项目的排列方向,主轴会出现四个方向:

\- x 轴:起点在左侧

\- x 轴:起点在右侧

\- y 轴:起点在顶端

\- y 轴:起点在底端

3. 交叉轴

- 交叉轴就是在主轴的垂直方向,项目可在交叉轴上移动

4. 将容器指定为 flex 布局

\- 任何一个容器都可以指定为 Flex 布局:

\- 行内元素也可以使用 Flex 布局:

\- 注意,设为 Flex 布局以后,子元素的 float、clear 等属性将失效。

5. 容器的属性

1. 主轴的方向

- flex-direction` 代表主轴的方向,即项目的排列方向

\- row 左向右

\- row-reverse 右向左

\- column 上向下

\- column-reverse 下向上

2. 项目换行

- 默认情况下,项目都排在一条线上。`flex-wrap`属性定义如果一条轴线排不下,如何换行的模式。

\- nowrap 默认不换行

\- wrap 换行

\- wrap-reverse 反向换行

6. 主轴和换行的简写方式

- `flex-flow`属性是`flex-direction`属性和`flex-wrap`属性的简写形式,默认值为`row nowrap`横向排列不换行。

7. 主轴上的对齐方式

- `justify-content`属性定义了项目在主轴上的对齐方式。是默认起点对齐、终点对齐还是居中对齐等。

前提是,如果项目会换行,则下行按照下一行的数量对齐,间隔与上一行可能不同。不换行元素会在容器缩小是缩小,不会出现对齐效果。

- \- flex-start 默认起点对齐

\- flex-end 终点对齐

\- center 居中对齐,一起居中

\- space-between 两端对齐,项目之间的间隔都相等,左右贴边

\- space-around 每个项目两侧的间隔相等,项目之间的间隔比项目与边框的间隔大一倍

8. 交叉轴对齐方式

- `align-items`属性定义项目在交叉轴上如何对齐,"前提是"前提是项目换行,容器的垂直轴方向是有独立高度或者宽度的。注意:多行项目会有行间距离

- \- flex-start 交叉轴的起点对齐

\- flex-end 交叉轴的终点对齐

\- center 交叉轴的中点对齐

\- baseline 项目的第一行文字的基线对齐,需要给项目设置单独的高度和内上边距和行高可以看出来

\- stretch 默认值,如果项目未设置高度或设为 auto,将占满整个容器的高度

9. 多轴线对齐方式

- `align-content`属性定义了多根轴线的对齐方式。如果项目只有一根轴线,该属性不起作用。

- \- flex-start 与交叉轴的起点对齐。

\- flex-end 与交叉轴的终点对齐。

\- center 与交叉轴的中点对齐。

\- space-between 第一行和最后一行贴开始和结束,其他均分中间位置

\- space-around 每行间距两侧或上下间距相等,比边框间距大一倍

\- stretch 默认值

10. 项目属性

- 项目排列数次序(排队拿号)

\- `order`属性定义项目的排列顺序。数值越小,排列越靠前,默认为 0。

\- 相当于拿号排队,默认是原有元素的顺序,这个是可以重新更改的,单独设置给每个项目,值越大排的越靠后。

\- 调整顺序用的不是很多,因为有点反人类思维

- 项目的放大比例(多吃多占)

\- `flex-grow`属性定义项目的放大比例,默认为 0,即如果存在剩余空间,也不放大

\- 当项目设置了该属性之后,原来的宽度或宽度失效。

\- 项目不换行时:

\- 父元素有多余的空间,设置放大比例的元素按照比例占据多余空间

\- 父元素没有多余空间,当父元素总长度等于和低于元素宽度或者高度相加总和时,元素们同等比例缩小,无特殊化,放大比例失效。

\- 项目换行时:

\- 父元素会有多余空间,因为只要空间不够就换行了,只要有多余空间,放大比例元素会在当前行按照自己的比例分隔剩余空间。默认比例的元素会正常按照宽度占位

\- 父元素宽度与元素宽(高度)相加正好相等,多余空间是 0,那么设置放大比例的元素,则暂时不会变更宽度。

- 项目的缩小比例(缩水比例)

\- `flex-shrink`属性定义了项目的缩小比例,默认为 1,负值无效。

\- 前提是容器设置不换行才能看出效果,容器设置宽度看的更清晰

\- `flex-shrink:0`:项目不换行容器缩小,其中的项目同等压缩,但设置了 flex-shrink:0 的项目不会压缩,会保持自己的宽度(高度)也就是不参与压缩

\- `flex-shrink`:其他值如 2、10 等,缩小比例值越大,缩小的比重就越大

- 项目的自动尺寸(特立独行)

\- 当`flex-basis`和`width`属性同时存在时,`width`属性不生效

\- flex 布局有多余空间时,item 的宽度为`flex-basis`设置的宽度

\- 当 flex 空间不够时,由于`flex-shrink`的默认值为 1,所以所有 flex items 容器等比例被压缩,设置`flex-basis`的项目也会按照最大值的相对比例压缩,不会和其他元素比例相同。

- flex 属性简写

flex 属性是 flex-grow(放大比例), flex-shrink(缩小比例) 和 flex-basis(自动尺寸)的简写,默认值为 0 1 auto。后两个属性可选。

## 十六、元素的动效

1. ### transition过渡

- transition 在英文中是过渡的意思,过渡可以为一个元素在不同状态之间切换不同的过渡效果。它由四个部分构成,分别是:**过渡属性的名称**,**过渡需要的时间**,**过渡的方式**和过渡的延迟时间。

- **过渡属性的名称**

\- `transition-property` 过渡样式

过渡一定是有变化都,在 css 中变化都是样式,比如我们需要过渡一个颜色,那么你要过渡的属性名称就是`background-color`

\- 当过渡多个样式的时候可以写 all

- **过渡需要的时间**

\- `transition-duration`如果让过渡的感觉柔和一下,那就是需要过渡的时间不是一瞬间的而是慢慢的。

\- 过渡的时间直接是以秒 s 或者 ms 为单位,默认 0s

- **过渡的方式**

\- `transition-timing-function`过渡方式,过渡方式的不同而在运动中改变速度

\- 贝塞尔曲线函数是非常复杂`http://www.css3beziercurve.net/` 函数是非常复杂的,但是在

\- css 中为我们封装了 5 种

\- 默认值,先慢再快最后慢`transition-timing-function:ease;`

\- 先慢,后越来越快`transition-timing-function:ease-in;`

\- 速度在开始和结束时都很慢,中间不加速`transition-timing-function:ease-in-out;`

\- 先快,后越来越慢`transition-timing-function:ease-out;`

\- 匀速`transition-timing-function:linear;`

- **过渡的方式**

\- `transition-timing-function`过渡方式,过渡方式的不同而在运动中改变速度

\- 贝塞尔曲线函数是非常复杂`http://www.css3beziercurve.net/` 函数是非常复杂的,但是在

\- css 中为我们封装了 5 种

\- 默认值,先慢再快最后慢`transition-timing-function:ease;`

\- 先慢,后越来越快`transition-timing-function:ease-in;`

\- 速度在开始和结束时都很慢,中间不加速`transition-timing-function:ease-in-out;`

\- 先快,后越来越慢`transition-timing-function:ease-out;`

\- 匀速`transition-timing-function:linear;`

- **简化写法**

\- 顺序是 transition:过渡时间 延迟时间 过渡方式 过渡样式

\- 注意“执行时间和延迟时间的顺序”不能改变

\- 最简写法:transition:过渡时间;

2. ### 多重样式过渡

使用 transition 进行多个样式并且不同时过渡样式时,每一个不同时间的过渡样式需要用逗号分隔。

3. ### transform变化

- CSS 里变化这个属性属于 css 的一个精彩的革新,transform 属性允许多种变化效果的函数对元素进行改变。

变换分为两种:2D(重点)和 3D,需要知道三个轴 xyz。

- **transform 变化属性**

四个最常用的变化函数,分别是:

\- translate 位移

\- scale 缩放

\- rotate 旋转

\- skew 扭曲

- **translate()位移函数**

translate()在变换中位移可以有 X 轴、 Y 轴、Z轴的位移方向,参数可以使用长度单位,百分比对应的是自己的宽度和高度,正直或者负值均可。Z轴的位移只有在父元素具有透视的效果下才可以看到。

\- `transform: translateX(x); ` 沿 X 轴方向平移 正值右移 负值左移

\- `transform: translateY(y);` 沿 Y 轴方向平移 正值下移 负值上移

\- `transform: translate(x, y);` 沿 X 轴和 Y 轴同时平移

\- 注意:位移和固定定为不同,它并没有脱离文档流,也不会影响其他元素的布局

元素居中,之前 margin 负值是需要知道元素的宽度和高度,使用 translate 百分比值则不需要

- **rotate()旋转函数**

\- rotate()函数在 2d 变换中旋转只能以 Z 轴进行旋转,所以 rotate()函数默认为 Z 轴旋转函数。

\- 参数为旋转角度,deg 单位为旋转角度。角度可以为正值或负值。

\- 旋转中心点,是元素最中心的点

- **scale()缩放函数**

\- scale()缩放函数中的参数是以倍数为基础的,1 代表当前大小

\- 1 以上的“正数”为当前大小的倍数。

\- 1 以下 0 以上的“正数”为缩小的倍数。

\- 0 倍为消失

\- 当参数值为负值的时候,元素进行镜面翻转,同样倍数会起作用

- **skew()倾斜扭曲函数**

\- skew()在 2d 变换中倾斜可以有 X 轴和 Y 轴的倾斜角度

\- 填写旋转角度,deg 单位为旋转角度,角度可以为正值或负值。

\- skew()默认为 X 轴倾斜函数

- **变换函数的执行顺序**

当变换属性需要叠加使用时,不可以生明多个 transform 属性,而是需要把所有要使用的变换函数添加在一个 transform 属性中,用空格分隔。但存在前后顺序问题。

- **基点**

transform-origin 属性是可以改变元素变化时的原点,默认情况下,元素的中心原点位于 x 轴和 y 轴的 50%处。

\- 在变化中,任何元素都有一个中心原点。默认情况下,元素的中心原点位于 x 轴和 y 轴的 50%处。

\- transform-origin 属性取值有两种:一种是“长度值”;另外一种是“关键字”。

\- 当取值为长度值时,单位可以为 px、em 和百分比等。

4. ### 透视效果

- 透视

在 css 变换中如果想作出 3d 效果,一定要关注透视距离 perspective 属性。

perspective 属性值越大,元素的变形就越小。

perspective 属性值越小,元素的变形就越大。

\- perspective 属性定义透视距离,距离为长度单位

\- 模拟人眼睛到 3D 变化元素之间的距离

\- 【重点】透视距离只能定义在 3D 变化的父元素上

- transform-style

3D元素构建是指某个图形是由多个元素构成的,可以给这些元素的父元素设置transform-style: preserve-3d来使其变成一个真正的3D图形。

\- 让盒子位于三维空间里transform-style: preserve-3d;

\- 让子盒子位于此元素所在的平面内(默认)transform-style: flat;

- 旋转函数 x 轴和 y 轴

2d 中旋转是 z 轴旋转,而想要感受 3d 效果,需要旋转的 x 轴和 y 轴。

\- `transform:rotateX(deg);`x 轴旋转

\- `transform:rotateY(deg);`y 轴旋转

- 位移函数 z 轴

3d变换中的移动,z中的正方向面向用户,值越大,越靠近用户。

\- transform: translateZ(正值) 沿z轴向前(接近模拟视觉的距离)

\- transform: translateZ(负值) 沿z轴向前(远离模拟视觉的距离)

5. ### 动画

- 动画就是指定一组或多组成套的动作,按照指定时间,指定的方式自动完成。h5 中动画的运用效率要高于使用 js 来体现动画效果,因为动画是渲染式的。

- 关键帧

`@keyframes` 是 css 中的@规则,通过在动画序列中定义关键帧的样式,来控制 CSS 动画序列中的步骤。

以百分比来规定改变发生的时间,或者通过关键词 "from" 和 "to",等价于 0% 和 100%。

0% 是动画的开始时间,100% 动画的结束时间。

为了获得最佳的浏览器支持,应该始终定义 0% 和 100% 选择器。

- 动画名称

`animation-name`属性就是指定动画要使用哪一个关键帧。

- 动画持续时间

`animation-duration`属性代表一个动画周期的时长,单位为秒(s)或者毫秒(ms),默认值 0 秒。

- 动画的运动方式

`animation-timing-function`属性跟`transition-timing-function`属性就是过渡的运动方式类似。同样也具有封装好的方式和贝塞尔曲线的方式。

\- ease;默认

\- ease-in;

\- ease-out;

\- ease-in-out;

\- linear;

\- steps(数值, 定位) 定位:start/end 默认 end 指逐步运动

- 动画的延迟时间

`animation-delay`属性动画的延迟时间和之前过渡的延迟时间一样使用

- 结束状态

在动画运行到某个位置的时候,动画停止,元素默认会迅速回到起始位置

\- `animation-fill-mode`:设置动画结束时盒子的状态

\- 属性值:`forwards`保持动画结束后的状态

\- 属性值:`backwards`动画结束后回到最初的状态

- 动画化执行顺序

animation-direction 属性是动画的执行顺序

\- 属性值:normal 正向,默认值

\- 属性值:reverse 反向

- 动画循环次数

\- `animation-iteration-count`属性主要用来定义动画的播放次数。

\- 其值通常为整数,但也可以使用带有小数的数字,其默认值为 1,这意味着动画将从开始到结束只播放一次。

\- 如果取值为`infinite`,动画将会无限次的播放。

- 简写方式

\- animation: 动画执行时间 延迟时间 执行关键帧名称 运动方式 运动次数 结束状态;

\- 最简方式 animation: 动画执行时间 执行关键帧名称;

\- 执行时间和延迟时间顺序不可调整

\- `animation: 2s 3s move linear 1 forwards reverse;`

- 动画停止

\- animation-play-state 属性规定动画是否正在运行或暂停。

\- 属性值:running 运动的,默认值

\- 属性值:paused 暂停的

- 开源 CSS 动画库

\- animate.css 下载下载:http://www.animate.net.cn/

\- 元素加入需要的类名

\- 当前元素使用 animate 属性,属性值为类名和运行时间

\- 需要在元素先加上 `animate__animated` 类,之后在加入其他类

## 十七、响应式布局

- 多终端开发

\- 现今需求从 pc 增加到移动端,移动端的发展迅速

\- 多种规格的终端产生 pad,各种手机,手表,三维立体影像

\- 用户在操作时的便捷,比如手机很小按钮的大小比例

- 响应式布局的产生

意在实现不同屏幕分辨率的终端上浏览网页的不同展示方式。通过响应式设计能使网站在多种终端上有更好的浏览阅读体验。(参考站长素材 https://sc.chinaz.com/moban/)

\- 响应式也叫自适应网页,可以根据“浏览设备”的不同改变布局样式和文本及图片的效果。

\- 同时要考虑,设备的屏幕横置等因素。

- 视口的设置

\- 视口(viewport)可以理解为浏览器窗口,不包含浏览器的内容。使用视口约束浏览器大小,让内容区域完全展示在用户面前。

\- 响应式和移动端页面必须设置视口,pc 看不出效果

`<meta name="viewport" content="属性名=属性值">`视口的设置通过 content 属性设置需要的值,如果 content 后面有多个属性,则属性与属性之间用英文逗号隔开

\- width=device-width 视口宽度为设备宽度(device 设备)

\- initial-scale=1.0 初始化视口不缩放

\- maximum-scale=1.0 最大是缩放倍率(不缩放)

\- user-scalable=0 用户不能缩放

\- 简写方式`<meta name="viewport" content="width=device-width, initial-scale=1.0">`

- 注意事项

\- 多用流式布局(文档流+浮动)和弹性布局,少用定位

\- 文本,图片,尺寸尽量写相对单位,少用绝对单位

\- 复杂页面不适和使用适应响应式

- vw 和 vh

\- vw(Viewport Width)、vh(Viewport Height)是基于视图窗口的单位。

- “视区”所指为浏览器内部的可视区域大小,不包含任务栏标题栏以及底部工具栏的浏览器区域大小。

\- vw:1vw 等于视口宽度的 1%

\- vh:1vh 等于视口高度的 1%

- 优势

\- % 是相对于父元素的大小设定的比率, vw、 vh 是视窗大小决定的。

\- vw、 vh 优势在于能够直接获取高度,而用 % 在没有设置 body 高度的情况下,是无法正确获得可视区域的高度的。

\- 元素会根据视口的大小设定宽高,切换手机型号查看效果

## 十八、技巧总结

1. ### 水平居中的方法

- **text-align:center**;
- 适用于 文本 span a input img 标签
- 需要给以上元素的父元素设置text-align:center;
- **margin:0 auto**;
- 适用于 **div p h** 等大盒子标签 直接给当**前元素本身**设置即可
- 注意:此方法针对的是有固定宽度的盒子 大盒子没有设置宽度默认会沾满整个父元素

2. ### 外边距的合并问题

- 出现场景:垂直布局的块级元素 上下的margin会合并
- 结果 :两者距离为margin的最大值
- 解决方法:
- 只给其中一个盒子设置margin即可

3. ### 外边距的塌陷问题

- 场景:互相嵌套的块级元素 子元素的margin-top会作用在父元素上
- 结果:导致父元素一起向下移动
- 解决方法:
- 给父元素设置border-top 或者 padding-top(分隔父子元素的margin-top)
- 给父元素设置overflow:hidden
- 转换成行内元素
- 设置浮动

4. ### 行内元素的margin和padding中的无效情况

- 场景:给行内元素设置margin和padding时
- 结果:
- 水平方向的margin和padding在布局中生效
- 垂直方向的margin和padding在布局中无效

5. ### HTML嵌套规范注意点

- 块级元素一般作为大容器 可以嵌套:文本、块级元素、行内元素、行内块等

- **但是 p标签中不建议嵌套div、p、h等块级标签**

```html
<p>
<div> </div>
</p>
```

- 浏览器会将div上下分成两个部分 自动将缺失的标签补齐 如下

```html
<p> </p>
<div> </div>
<p> </p>
```

- a标签内部可以嵌套任意元素

- **但是不能嵌套a标签自己**