重学前端

参考:重学前端

列一份前端知识架构图

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

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

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

  4. 标签分为以下几种:



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

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

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

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

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

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

Example:

 <ruby>
    明日 <rt>(Ashita)</rt>
 </ruby>
 <br/>
 <ruby>
   漢 <rp>(</rp><rt>Kan</rt><rp>)</rp>
   字 <rp>(</rp><rt>ji</rt><rp>)</rp>
 </ruby>
ruby
还有一种情况是,HTML 的有些标签实际上就是必要的,甚至必要的程度可以达到:如果没有这个标签,文字会产生歧义的程度。

Example:

今天我吃了一个 <em> 苹果 </em>。
今天我吃了 <em> 一个 </em> 苹果。
  • strong 和 b: strong是一个逻辑状态,而bold是一个物理状态。逻辑状态分离内容和表现形式,使用逻辑状态允许你用各种不同的方式来表达。比如你想把文字渲染成红色,使用其它大小的字体、带有下划线或其他样式,而不是加粗的样式。必须要理解使用strong呈现出的表现形式不同于单纯的加粗。 因为bold是一个物理状态,他没有区分表现形式和内容。如果让bold做了加粗文本外的其它任何事情,都将会令人困惑而且也不符合逻辑。
    同样应该注意<b></b> 还有其他用途,比如想单纯地吸引注意而不增加其重要性。
  • em 和 i: 在 默认情况下,视觉效果是一样的- 这两个标签都把内容呈现为斜体. 但语义是不同的。 <em> 标签表示着重强调其内容,而 <i> 标签表示从正常的散文中区分出的文本, 如电影或书籍的名字,一个外来词, 或者当文本指的是一个字的定义,而不是其自身代表的语义。
    例如, <em> 可能是: "Just do it already!", 或: "We had to do something about it". 人或软件在阅读文本时会对斜体字的发音使用重读强调。
    例如, <i> 可能是: "The Queen Mary sailed last night". 在这里,没有必要对这个词"Queen Mary"添加强调或重要性. 它只是表明,谈论问题的对象不是一个名叫玛丽女王, 而是一艘名字叫玛丽的船. 另一个例子 <i> 可能是: "The word the is an article".

作为标题摘要的语义类标签——hgroup、section

Example:
在 hgroup 中的 h1-h6 被视为同一标题的不同组成部分:

<hgroup>
  <h1>JavaScript 对象 </h1>
  <h2> 我们需要模拟类吗?</h2>
</hgroup>
<p>balah balah</p>
......

从HTML5开始,我们有了section标签,这个标签可不仅仅是一个“有语义的div”,它会改变h1-h6的语义。section的嵌套会使得其中的h1-h6下降一级,因此,在HTML5以后,我们只需要section 和 h1 就足以形成文档的树形结构:

<section>
  <h1>HTML 语义 </h1>
  <p>balah balah balah balah</p>
<section>
    <h1> 弱语义 </h1>
    <p>balah balah</p>
</section>
<section>
    <h1> 结构性元素 </h1>
    <p>balah balah</p> 
</section>
......
</section>

作为整体结构的语义类标签——

Example:
一个典型的场景是多篇新闻展示在同一个新闻专题页面中,这种类似报纸的多文章结构适合用 article 来组织:

<body>
  <header>……</header>
  <article>
    <header>……</header>
    <section>……</section>
    <section>……</section>
    <section>……</section>
    <footer>……</footer>
  </article>
  <article>
    ……
  </article>
  <article>
    ……
  </article>
  <footer>
    <address></address>
  </footer>
</body>
  • article是一种特别的结构,它表示具有一定独立性质的文章。所以,article 和 body 具有相似的结构,同时,一个HTML页面中,可以有多个 article 存在。
  • aside表示跟文章主体不是那么相关的部分,它可能包含导航、广告等工具性质的内容。aside 很容易被理解为侧边栏,实际上两者是包含关系,侧边栏是aside,aside不一定是侧边栏。
  • aside 和 header 中都可能出现导航(nav 标签),二者的区别是,header 中的导航多数是到文章自己的目录,而 aside 中的导航多数是到关联页面或者是整站地图。
  1. abbr 标签表示缩写,例如WWW 表示 World Wide Web 的缩写:

      <abbr title='World Wide Web' >WWW</abbr>
    
  2. HTML中有三个跟引述相关的标签 blockquote 表示段落级引述内容,q 表示行内的引述内容,cite 表示引述的作品名。

  3. time 标签

     <cite>"What is the difference between the Web and the Internet?"</cite>. W3C Help and FAQ. W3C. 2009. Archived from the original on <time datetime="2015-07-09">9 July 2015</time>. Retrieved <time datetime="2015-07-16">16 July 2015</time>.
    
  4. figure、figcaption 用于与主文章相关的照片、图像等流内容

    <figure>
       <img src="https://.....440px-NeXTcube_first_webserver.JPG"/>
       <figcaption>The NeXT Computer used by Tim Berners-Lee at CERN.</figcaption>
    </figure>
    
  5. <dfn></dfn> 用来包裹被定义的名词

    The terms Internet and World Wide Web are often used without much distinction. However, the two               are not the same. 
    The <dfn>Internet</dfn> is a global system of interconnected computer networks.
    In contrast, the <dfn>World Wide Web</dfn> 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 [ <url> | <string> ]
               [ supports( [ <supports-condition> | <declaration> ] ) ]?
               <media-query-list>?

@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 接受属性值的控制
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 221,135评论 6 514
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 94,317评论 3 397
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 167,596评论 0 360
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,481评论 1 296
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,492评论 6 397
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 52,153评论 1 309
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,737评论 3 421
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,657评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 46,193评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,276评论 3 340
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,420评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 36,093评论 5 349
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,783评论 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,262评论 0 23
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,390评论 1 271
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,787评论 3 376
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,427评论 2 359

推荐阅读更多精彩内容