参考:重学前端
列一份前端知识架构图
用一定的词法和语法,表达一定语义,从而操作运行时。
运行时 = 数据结构 + 执行过程
程序 = 数据结构 + 算法。
-
标签分为以下几种:
a. 文档元信息:通常是出现在head标签中的元素,包含了描述文档自身的一些信息;
b. 语义相关:扩展了纯文本,表达文章结构、不同语言要素的标签;
c. 链接:提供到文档内和文档外的链接;
d. 替换型标签:引入声音、图片、视频等外部元素替换自身的一类标签;
e. 表单:用于填写和提交信息的一类标签;
f. 表格:表头、表尾、单元格等表格的结构。 在现代互联网产品里,HTML用于描述 "软件界面" 多过于“富文本”,而软件界面里的东西,实际上几乎是没有语义的,譬如:购物车功能。
错误地使用语义标签,会给机器阅读造成混淆、增加嵌套,给CSS编写增加重负担。
- 以下列出了几种语义标签使用场景。
作为自然语言延伸的语义类标签——ruby、em、i、strong、b
作为自然语言和纯文本的补充,用来表达一定的结构或者消除歧义
Example:
明日
漢
字
还有一种情况是,HTML 的有些标签实际上就是必要的,甚至必要的程度可以达到:如果没有这个标签,文字会产生歧义的程度。
Example:
今天我吃了一个 苹果 。
今天我吃了 一个 苹果。
- strong 和 b: strong是一个逻辑状态,而bold是一个物理状态。逻辑状态分离内容和表现形式,使用逻辑状态允许你用各种不同的方式来表达。比如你想把文字渲染成红色,使用其它大小的字体、带有下划线或其他样式,而不是加粗的样式。必须要理解使用strong呈现出的表现形式不同于单纯的加粗。 因为bold是一个物理状态,他没有区分表现形式和内容。如果让bold做了加粗文本外的其它任何事情,都将会令人困惑而且也不符合逻辑。
同样应该注意 还有其他用途,比如想单纯地吸引注意而不增加其重要性。- em 和 i: 在 默认情况下,视觉效果是一样的- 这两个标签都把内容呈现为斜体. 但语义是不同的。 标签表示着重强调其内容,而 标签表示从正常的散文中区分出的文本, 如电影或书籍的名字,一个外来词, 或者当文本指的是一个字的定义,而不是其自身代表的语义。
例如, 可能是: "Just do it already!", 或: "We had to do something about it". 人或软件在阅读文本时会对斜体字的发音使用重读强调。
例如, 可能是: "The Queen Mary sailed last night". 在这里,没有必要对这个词"Queen Mary"添加强调或重要性. 它只是表明,谈论问题的对象不是一个名叫玛丽女王, 而是一艘名字叫玛丽的船. 另一个例子 可能是: "The word the is an article".
作为标题摘要的语义类标签——hgroup、section
Example:
在 hgroup 中的 h1-h6 被视为同一标题的不同组成部分:
JavaScript 对象
我们需要模拟类吗?
balah balah
......
从HTML5开始,我们有了section标签,这个标签可不仅仅是一个“有语义的div”,它会改变h1-h6的语义。section的嵌套会使得其中的h1-h6下降一级,因此,在HTML5以后,我们只需要section 和 h1 就足以形成文档的树形结构:
HTML 语义
balah balah balah balah
弱语义
balah balah
结构性元素
balah balah
......
作为整体结构的语义类标签——
Example:
一个典型的场景是多篇新闻展示在同一个新闻专题页面中,这种类似报纸的多文章结构适合用 article 来组织:
……
……
……
……
……
……
……
- article是一种特别的结构,它表示具有一定独立性质的文章。所以,article 和 body 具有相似的结构,同时,一个HTML页面中,可以有多个 article 存在。
- aside表示跟文章主体不是那么相关的部分,它可能包含导航、广告等工具性质的内容。aside 很容易被理解为侧边栏,实际上两者是包含关系,侧边栏是aside,aside不一定是侧边栏。
- aside 和 header 中都可能出现导航(nav 标签),二者的区别是,header 中的导航多数是到文章自己的目录,而 aside 中的导航多数是到关联页面或者是整站地图。
-
abbr 标签表示缩写,例如WWW 表示 World Wide Web 的缩写:
WWW
HTML中有三个跟引述相关的标签 blockquote 表示段落级引述内容,q 表示行内的引述内容,cite 表示引述的作品名。
-
time 标签
"What is the difference between the Web and the Internet?". W3C Help and FAQ. W3C. 2009. Archived from the original on . Retrieved .
-
figure、figcaption 用于与主文章相关的照片、图像等流内容
-
用来包裹被定义的名词
The terms Internet and World Wide Web are often used without much distinction. However, the two are not the same. The Internet is a global system of interconnected computer networks. In contrast, the World Wide Web is a global collection of documents and other resources, linked by hyperlinks and URIs.
pre、code、samp
-
更多
CSS的顶层样式表由两种规则组成的规则列表构成,一种是“@规则”,一种是“普通规则”
@规则
@charset
用于提示CSS文件使用的字符编码方式,它如果被使用,必须出现在最前面。这个规则只在给出语法解析阶段前使用,并不影响页面上的展示效果。
@charset "uft-8"
@import
用于引入一个CSS文件,除了@charset规则不会被引入,@import可以引入另一个文件的全部内容。
@import "mystyle.css"
@import url("mystyle.css")
@import [ | ]
[ supports( [ | ] ) ]?
?
@media
media 就是大名鼎鼎的 media query 使用的规则了,它能够对设备的类型进行一些判断。在media 的区块内,是普通规则列表。
@media print {
body { font-size: 10pt }
}
@page
page 用于分页媒体访问网页时的表现设置,页面是一种特殊的盒模型结构,除了页面本身,还可以设置它周围的盒。
@page {
size: 8.5in 11in;
margin: 10%;
@top-left {
content: "Hamlet";
}
@top-right {
content: "Page" counter(page);
}
}
@counter-style
counter-style 产生一种数据,用于定义列表项的表现。
@counter-style triangle {
system: cyclic;
symbols: ;
suffix: " ";
}
@key-frames
keyframes 产生一种数据,用于定义动画关键帧。
@keyframes diagonal-slide {
from {
left: 0;
top: 0;
}
to {
left: 100px;
top: 100px;
}
}
@fontface
fontface 用于定义一种字体,icon font 技术就是利用这个特性来实现的。
@font-face {
font-family: Gentium;
src: url(http://example.com/fonts/Gentium.woff);
}
p { font-family: Gentium, serif; }
@support
support 检查环境的特性,它与media 比较类似。
@namespace
用于跟XML命名空间配合的一个规则,表示内部的CSS选择器全都带上特定命名空间。
@viewport
用于设置视口的一些特性,不过兼容性目前不是很好,多数时候被 html 的 meta 代替。
普通规则(qualified rule)
* 普通规则
* 选择器
* 声明列表
* 属性
* 值
* 值的类型
* 函数
在 CSS Variables 标准中,以双中划线开头的属性被当作变量,与之配合的则是 var 函数:
:root {
--main-color: #06c;
--accent-color: #006;
}
/* The rest of the CSS file */
#foo h1 {
color: var(--main-color);
}
CSS 支持一批特定的计算型函数:
- calc() 函数是基本的表达式计算,它支持加减乘除四则运算。在针对维度进行计算时,calc() 函数允许不同单位混合运算,这非常的有用。
section {
float: left;
margin: 1em; border: solid 1px;
width: calc(100%/3 - 2*1em - 2*1px);
}
- max() 表示取两数中较大的一个
- min() 表示取两数中较小的一个
- clamp() 则是给一个值限定一个范围,超出范围外则使用范围的最大或者最小值
- toggle() 函数在规则选中多于一个元素时生效,它会在几个值之间来回切换,比如我们要让一个列表项的样式圆点和方点间隔出现,可以使用下面的代码:
ul { list-style-type: toggle(circle, square); }
- attr() 函数允许CSS 接受属性值的控制