# HTML(5) 和 CSS(3)语言核心

# HTML 语义
- 什么叫HTML
超文本标记语言(HyperText Markup Language)是一种用于创建网页的标准标记语言

- HTML4常用标签汇总:
基本文档:html、head、body...
基本标签:h1-h6、p、br、hr
文本格式化:strong、b、em、i、small、del、sub、sup...
链接:a、link
图片:img、map、area
区块:div、span
三大列表:ul li、 ol li、 dl dt dd
表格:table、caption、th、tr、td、thead、tbody、tfoot
框架:iframe
表单:form、input、select、option、textarea、button、label
2
3
4
5
6
7
8
9
10
- HTML5常用标签汇总:
图形新元素:canvas
新多媒体元素:audio、video、source、embed、track
新表单元素:deatalist、keygen、output
新的语义和结构元素:article、aside、bdi、command、details、dialog、summary、
figrue、figcaption、footer、header、mark、meter、nav、
progress、ruby、rt、rp、section、time、wbr
2
3
4
5
6
- 什么叫语义化
指对文本内容的结构化(内容语义化),选择合乎语义的标签(代码语义化),便于开发者阅读,维护 和写出更优雅代码的同时,让浏览器爬虫和辅助技术更好的解析。
说人话就是:用正确的标签做正确的事情。

- 语义化的好处:
利于SEO优化(也就是搜索引擎的抓取,搜索引擎的爬虫依赖于标记来确定上下文和各个关键字的权重)
在样式丢失的时候,可以比较好的呈现结构
更好的支持各种终端,比如无障碍阅读,有声小说等
利于团队维护和开发,W3C定义了一个标准,团队中都遵循这个标准,那么代码的差异就会缩小,在开发和维护的时候可以提高效率。
- 布局规范:
table 是用来放表格数据的,不是用来布局的
使用 margin 的规则:通常情况下, margin 都是天价在元素的 bottom 和 right, 有时候也可以是 top 或 left。 无论如何,尽量避免同时在 bottom 和 top, 或者 right 和 left 添加 margin, 用 last-of-type 选择器来去掉最后一个子元素的 margin;
# HTML 扩展

- DOCTYPE文档声明:
- 声明帮助浏览器正确地显示网页;
- 定义这个文档的类型,浏览器会先识别这句话,会按照这个类型去解析这个文档;
- 一般高版本兼容低版本,所以在工作中我们默认写高版本就可以了(html5文档声明);
- 文档声明不区分大小写;
- 文档声明必须放在第一行(因为浏览器是从上到下解析的);
- 必须写文档声明,如果不写就会发生怪异事件;
- 文档声明不是一个标签,它只是一个声明;
HTML5
<!DOCTYPE html>
2
- meta 元信息 (高能预警)
meta标签提供关于 HTML 文档的元数据。元数据不会显示在页面上,但是对于机器是可读的。 它可用于浏览器(如何显示内容或重新加载页面),搜索引擎(关键词),或其他 web 服务。
// 申明编码
<meta charset="UTF-8" />
// 页面关键词
<meta name="keywords" content="" />
//页面描述
<meta name="description" content=" " />
// 视口-移动设备
<meta name="viewport" content="width=device-width, initial-scale=1" />
// 定义网页作者
<meta name="author" content="author name" />
// 优先使用IE最新版本和 Chrome
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
// 页面重定向和刷新
<meta http-equiv="refresh" content="0;url=" />
// 禁止浏览器从本地计算机的缓存中访问页面内容:这样设定,访问者将无法脱机浏览
<meta http-equiv="Pragma" content="no-cache">
// 转码申明:用百度打开网页可能会对其进行转码(比如贴广告),避免转码可添加如下meta。
<meta http-equiv="Cache-Control" content="no-siteapp" />
// 启用 WebApp 全屏模式
<meta name="apple-mobile-web-app-capable" content="yes" />
// 隐藏状态栏/设置状态栏颜色:只有在开启WebApp全屏模式时才生效。
// content 的值为 default | black | black-translucent
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent"/>
// 添加到主屏后的标题
<meta name="apple-mobile-web-app-title" content="标题" />
// 忽略数字自动识别为电话号码
<meta content="telephone=no" name="format-detection" />
// 忽略识别邮箱
<meta content="email=no" name="format-detection" />
// uc强制竖屏
<meta name="screen-orientation" content="portrait" />
// UC强制全屏
<meta name="full-screen" content="yes">
// UC应用模式
<meta name="browsermode" content="application">
// QQ强制竖屏
<meta name="x5-orientation" content="portrait">
// QQ强制全屏
<meta name="x5-fullscreen" content="true">
// QQ应用模式
<meta name="x5-page-mode" content="app">
// 浏览器内核控制
<meta name="renderer" content="webkit|ie-comp|ie-stand">
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
看完上面大概是这个表情:

- SVG 可伸缩矢量图形 (Scalable Vector Graphics)
- SVG 用来定义用于网络的基于矢量的图形;
- SVG 使用 XML 格式定义图形;
- SVG 图像在放大或改变尺寸的情况下其图形质量不会有所损失;
- SVG 是万维网联盟的标准;
- SVG 与诸如 DOM 和 XSL 之类的 W3C 标准是一个整体;
- 与其他图像格式相比(比如 JPEG 和 GIF),使用 SVG 的优势在于:
- SVG 图像可通过文本编辑器来创建和修改
- SVG 图像可被搜索、索引、脚本化或压缩
- SVG 是可伸缩的
- SVG 图像可在任何的分辨率下被高质量地打印
- SVG 可在图像质量不下降的情况下被放大
<svg height="210" width="300">
<polygon points="100,10 40,198 190,78 10,78 160,198"
style="fill:red;stroke:black;stroke-width:5;fill-rule:evenodd;" />
</svg>
2
3
4
# CSS绘制属性
- linear-gradient() 线性渐变
linear-gradient() 函数用于创建一个表示两种或多种颜色线性渐变的图片
background: linear-gradient(color-stop1, color-stop2, …)
background: linear-gradient(#e66465, #9198e5);
background: linear-gradient(direction, color-stop1, color-stop2, …)
/* 从右下到左上、从蓝色渐变到红色 */
background: linear-gradient(to left top, blue, red);
background: linear-gradient(angle, color-stop1, color-stop2);
/* 从下到上,从蓝色开始渐变、到高度40%位置是绿色渐变开始、最后以红色结束 */
background: linear-gradient(0deg, blue, green 40%, red);
2
3
4
5
6
7
8
颜色A - B渐变
width: 200px;
height: 200px;
margin: 20px;
background: linear-gradient(red, green);
2
3
4
颜色A - B渐变 带一个方位
width: 200px;
height: 200px;
margin: 20px;
background: linear-gradient(to left, red, green);
2
3
4
颜色A - B渐变 带多个方位
width: 200px;
height: 200px;
margin: 20px;
background: linear-gradient(to left top, red, green, blue);
2
3
4
颜色A - B渐变 带角度
width: 200px;
height: 200px;
margin: 20px;
background: linear-gradient(45deg, red, green);
2
3
4
- radial-gradient() 函数创建了一个图片,其由一个从原点辐射开的在两个或者多个颜色之前的渐变组成
径向渐变:默认的形状是椭圆,至少得有两个颜色值。 形状:ellipse 椭圆(默认),circle(圆)
(用的比较少,如果很复杂的话基本就是直接上图。)
background: radial-gradient(#e66465, #9198e5);
background: radial-gradient(closest-side, #3f87a6, #ebf8e1, #f69d3c);
background: radial-gradient(circle at 100%, #333, #333 50%, #eee 75%, #333 75%);
background: radial-gradient(ellipse at top, #e66465, transparent),
radial-gradient(ellipse at bottom, #4d9f0c, transparent);
2
3
4
5
- background-size 背景尺寸
- 检索或设置对象的背景图像的尺寸大小。
- 该属性提供2个参数值(特性值cover和contain除外)。
- 如果提供两个,第一个用于定义背景图像的宽度,第二个用于定义背景图像的高度。
- 如果只提供一个,该值将用于定义背景图像的宽度,第2个值默认为auto,即高度为auto,此时背景图以提供的宽度作为参照来进行等比缩放。
取值情况:
- length:用长度值指定背景图像大小。不允许负值。
- percentage:用百分比指定背景图像大小。不允许负值。
- auto: 背景图像的真实大小。
- cover: 将背景图像等比缩放到完全覆盖容器,背景图像有可能超出容器。(宽高都会缩放,覆盖容器)
- contain:将背景图像等比缩放到宽度或高度与容器的宽度或高度相等,背景图像始终被包含在容器内。
- background-origin
设置或检索对象的背景图像计算 background-position 时的参考原点(位置)
取值情况:
- border-box: 从border区域(含border)开始显示背景图像
- content-box: 从content区域开始显示背景图像
- padding-box: 从padding区域(含padding)开始显示背景图像
border-box

content-box

padding-box

- background-clip 指定对象的背景图像向外裁剪的区域
取值情况:
- padding-box: 从padding区域(不含padding)开始向外裁剪背景。
- border-box: 从border区域(不含border)开始向外裁剪背景。
- content-box: 从content区域开始向外裁剪背景。
- text: 从前景内容的形状(比如文字)作为裁剪区域向外裁剪,如此即可实现使用背景作为填充色之类的遮罩效果
- border-radius 圆角
- 四个值: 第一个值为左上角,第二个值为右上角,第三个值为右下角,第四个值为左下角。 顺时针转
- 三个值: 第一个值为左上角, 第二个值为右上角和左下角,第三个值为右下角
- 两个值: 第一个值为左上角与右下角,第二个值为右上角与左下角
- 一个值: 四个圆角值相同
其实老是记不住,3个和2个的情况,,😔
助记:第一个值永远是左上角,第二个永远是右上角 其他的就是取对角
左上角 = 右下角 右上角 = 左下角

- box-shadow 盒子阴影
- 营造层次感(立体感)
- 充当没有宽度的边框
- 特殊效果
取值情况:
- none: 无阴影
- length ①: 第1个长度值用来设置对象的阴影水平偏移值。可以为负值
- length ②: 第2个长度值用来设置对象的阴影垂直偏移值。可以为负值
- length ③: 如果提供了第3个长度值则用来设置对象的阴影模糊值。不允许负值
- length ④: 如果提供了第4个长度值则用来设置对象的阴影外延值。可以为负值
- color: 设置对象的阴影的颜色
- inset: 设置对象的阴影类型为内阴影。该值为空时,则对象的阴影类型为外阴影
box-shadow: X轴偏移量 Y轴偏移量 [阴影模糊半径] [阴影扩展半径] [阴影颜色] [投影方式];
X轴偏移量 必须写 可以为 0 水平方向 正直越大 右 负值越大 左
Y轴偏移量 必须写 可以为 0 水平方向 正直越大 右 负值越大 左
2
3

- text-shadow 文字阴影
设置或检索对象中文本的文字是否有阴影及模糊效果
- none: 无阴影
- length ①: 第1个长度值用来设置对象的阴影水平偏移值。可以为负值
- length ②: 第2个长度值用来设置对象的阴影垂直偏移值。可以为负值
- length ③: 如果提供了第3个长度值则用来设置对象的阴影模糊值。不允许负值
- color : 设置对象的阴影的颜色
- clip-path 路径裁剪
属性使用裁剪方式创建元素的可显示区域。区域内的部分显示,区域外的隐藏
- 对容器进行裁剪
- 常见几何图形
- 自定义路径 clip-path生成器 https://www.html.cn/tool/css-clip-path/
/* 圆形circle(半径at圆心坐标) */
.circle{
width: 100px;
height: 100px;
background: #0cc;
-webkit-clip-path: circle(50% at 50% 50%);
}
2
3
4
5
6
7
/* 椭圆形ellipse(长、短轴半径at圆心坐标) */
.ellipse{
width: 100px;
height: 100px;
background:#aaa;
-webkit-clip-path: ellipse(25% 50% at 50% 50%);
}
2
3
4
5
6
7
/* 内置矩形inset (上右下左的边距round上右下左圆角) */
.inset{
width: 100px;
height: 100px;
background: #99f;
-webkit-clip-path: inset(10px 20px 30px 10px round 20px 5px 50px 0);
}
2
3
4
5
6
7
/* 正三角形 */
.triangle{
width: 100px;
height: 87px;
background: #c00;
-webkit-clip-path: polygon(0% 100%, 50% 0%, 100% 100%);
}
2
3
4
5
6
7
/* 正方形 */
.square{
width: 100px;
height: 100px;
background: #069;
-webkit-clip-path: polygon(0% 0%, 0% 100%, 100% 100%, 100% 0%);
}
2
3
4
5
6
7
# CSS机制At-rule
At-rule 这是个什么鬼
/* 常规规则 */
@charset
@import
@namespace
/* 嵌套规则 */
@document
@font-face 😕 😒
@keyframes 😆 😃
@media
@page
@supports
2
3
4
5
6
7
8
9
10
11
12
@font-face {
font-family: 'MyWebFont';
src: url('myfont.woff2') format('woff2'),
url('myfont.woff') format('woff');
}
2
3
4
5
@keyframes fadeIn {
0% {
opacity: 0;
}
100% {
opacity: 1;
}
}
2
3
4
5
6
7
8
# CSS 变量 var 的使用
CSS变量的语法和用法
- CSS中原生的变量定义语法是:变量名前面要加两根连词线
--*- 变量使用语法是:var()函数用于读取变量
var(--*)其中*表示我们的变量名称- var()函数还可以使用第二个参数,表示变量的默认值。如果该变量不存在,就会使用这个默认值; 第二个参数不处理内部的逗号或空格,都视作参数的一部分
- 变量名大小写敏感,--header-color和 --Header-Color是两个不同变量
- 在CSS变量中,不能包含$,[,^,(,%等字符,普通字符局限在只要是“数字[0-9]”“字母[a-zA-Z]”“下划线_”和“短横线-”这些组合,但是可以是中文,日文或者韩文
body {
--深蓝: #369;
background-color: var(--深蓝);
}
:root {
--1: #369;
}
body {
background-color: var(--1);
}
2
3
4
5
6
7
8
9
10
11
/* 全局变量 */
:root {
--color: blue;
}
.box {
color: var(--color)
}
/* 局部变量 */
.box {
/* 定义 */
--color: red;
/* 调用 */
color: var(--color);
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/* var() 函数还可以使用第二个参数,表示变量的默认值。如果该变量不存在,就会使用这个默认值。 */
/* 第二个参数不处理内部的逗号或空格,都视作参数的一部分 */
color: var(--foo, #7F583F);
var(--font-stack, "Roboto", "Helvetica");
var(--pad, 10px 15px 20px);
2
3
4
5
- CSS变量的拼接
- 如果变量值是一个字符串,可以与其他字符串拼接
- 如果变量值是数值,不能与数值单位直接连用
- 如果变量值带有单位,就不能写成字符串
/* 字符串 */
--bar: 'hello';
--foo: var(--bar)' world';
/* 变量值是数值 */
foo {
--gap: 20;
margin-top: var(--gap)px; /* 无效 */
}
/* 上面代码中,数值与单位直接写在一起,这是无效的。必须使用calc() 函数,将它们连接, */
foo {
--gap: 20;
margin-top: calc(var(--gap) * 1px);
}
/* 变量值带有单位 */
.foo {
--foo: '20px';
font-size: var(--foo); /* 无效 */
}
.foo {
--foo: 20px;
font-size: var(--foo); /* 有效 */
}
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
- CSS变量的兼容性处理
对于不支持 CSS 变量的浏览器,可以采用下面的写法
/* 用属性值得无效声明 */
a {
color: #7F583F;
color: var(--primary);
}
/* 也可以使用@support命令进行检测 */
@supports ( (--a: 0)) {
/* supported */
}
@supports ( not (--a: 0)) {
/* not supported */
}
2
3
4
5
6
7
8
9
10
11
12
13

结束!!!