重学前端

参考:重学前端

列一份前端知识架构图

前端知识架构
  1. 用一定的词法和语法,表达一定语义,从而操作运行时。

  2. 运行时 = 数据结构 + 执行过程

  3. 程序 = 数据结构 + 算法。

  4. 标签分为以下几种:



    a. 文档元信息:通常是出现在head标签中的元素,包含了描述文档自身的一些信息;
    b. 语义相关:扩展了纯文本,表达文章结构、不同语言要素的标签;
    c. 链接:提供到文档内和文档外的链接;
    d. 替换型标签:引入声音、图片、视频等外部元素替换自身的一类标签;
    e. 表单:用于填写和提交信息的一类标签;
    f. 表格:表头、表尾、单元格等表格的结构。

  5. 在现代互联网产品里,HTML用于描述 "软件界面" 多过于“富文本”,而软件界面里的东西,实际上几乎是没有语义的,譬如:购物车功能。

错误地使用语义标签,会给机器阅读造成混淆、增加嵌套,给CSS编写增加重负担。

  1. 以下列出了几种语义标签使用场景。

作为自然语言延伸的语义类标签——ruby、em、i、strong、b

作为自然语言和纯文本的补充,用来表达一定的结构或者消除歧义

Example:

 
    明日 (Ashita)
 
 
(Kan)(ji)
ruby
还有一种情况是,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 中的导航多数是到关联页面或者是整站地图。
  1. abbr 标签表示缩写,例如WWW 表示 World Wide Web 的缩写:

      WWW
    
  2. HTML中有三个跟引述相关的标签 blockquote 表示段落级引述内容,q 表示行内的引述内容,cite 表示引述的作品名。

  3. time 标签

     "What is the difference between the Web and the Internet?". W3C Help and FAQ. W3C. 2009. Archived from the original on . Retrieved .
    
  4. figure、figcaption 用于与主文章相关的照片、图像等流内容

    The NeXT Computer used by Tim Berners-Lee at CERN.
  5. 用来包裹被定义的名词

    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. 
    
  6. pre、code、samp

  7. 更多


    更多标签
  8. 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 接受属性值的控制

你可能感兴趣的:(重学前端)