前言:
HTML介绍分为3部分,第一部分是HTML简介及历史,第二部分是HTML元素,第三部分是实战及学习笔记。
以下是第一部分:
参考资料:
w3.org, html 文档
简介
HTML,即Hypertext markup language是万维网的核心标记语言,最初HTML被设计作为一门语言,用于语言描述科学文档,后续则被拓展用于描述一系列不同类型的文档,甚至应用。
发展历史:
1990-1995,迅速发展,从CERN到IETF(国际互联网工作组)接管.
1995-1997, 随着W3C建立,又变成由W3C主导,期间推出了HTML 3.2 和HTML 4.01
1998-2000,W3C停止HTML版本推进,开始研究XHTML 1.0(XML-based HTML 4.01), 其没有添加任何新特性,反而更加地长篇累牍,更严格的检测标准等。后续发布了XHTML 2.0,其与XHTML 1.0,HTTP 4.01不兼容。
期间直到2003,HTML没有版本的变化,但期间出现了DOM Level 1 & 2,提高了客户端的使用体验以及功能拓展。
2003,XForms(定位于下一代Web form)发布,其证明了很多它所拥有的新特性能拓展到HTML 4.01,Mozilla及Opera借此于2004年向W3C提出了更新HTML版本的提议,但W3C选择继续发展XML-based作为替代HTML。
于是Mozilla, Opera联合Apple组成新实体WHATWG,发展HTML 的Living document,对HTML继续进行拓展及新特性添加,直到后期W3C才转回HTML标准的制定,多谢WHATWG,才有了我们今天基本采用的HTML 5。
W3C与WHATWG于2008年一起发布了第一份草案,2014年正式发布HTML 5。
*MDN Web Docs 简介:Mozilla Developer Network的后续,致力于Web标准文档的发展以及Web开发资料分享,包括HTML5, JavaScript, CSS, Web APIs, Node.js以及网络扩展等
语法:
*HTML/XML/DOM等的语法上的一些区别:
namespaces不能用在HTML语法中,但可用作DOM及XHTML里;
<noscript>可被用在HTML里,但不能用在DOM,XHTML里,
-->仅仅能用在DOM里。
组成部分:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>My test page</title>
</head>
<body>
<p>This is my page</p>
</body>
</html>
- <!DOCTYPE html>:
历史遗留产物。 - <html> </html>:
根元素,包含页面所有的内容 - <head> </head>:
用于放置不被page viewers显示的内容。
包含<title>, links to CSS, links to favicons, 以及<metadata>(作者,charset等等) - Element: 组成及显示content的主体,共有6种不同的元素,分为如下
*Void elements*
<area>, <base>, <br>, <col>, <embed>, <hr>, <img>, <input>, <link>, <meta>, <param>, <source>, <track>, <wbr>.这些元素只有start tag, 没有end tag, 故也称为空元素,自闭合,也没有content。
*The <template> elements*
<template>, 用来声明在HTML里能被脚本复制或插入的片段,<template>里也可以再包含<template>,但其不是子template, 被存储在其他的非browsing context的document。
*Raw text elements*
<script>, <style> 可以有text
*Escapable raw text elements*
<textarea>, <title>可以有text
*Foreign elements*
MathML namespace:<math>, <object>, <picture> 与 SVG namespace: <svg>, <video> 里的元素,如若是只有start tag, 自闭合,不能有content。
*Normal elements*
所有其他被HTML允许的元素,可以有text。
*Text: in the context of content models, means either nothing, or Text nodes. Text is sometimes used as a content model on its own, but is also phrasing content, and can be inter-element white space
Text nodes and attribute values must consist of Unicode characters
*<html> end tag, <head> start tag, end tag, <body> start tag, end tag等在满足一定条件情况下可以省略,更多可以省略的可以参考这里。
*块级及内联元素
块级元素会以可见的块呈现在页面上,其显示会与其前后的content有一行的间距,常用于呈现结构化的elements,如paragraph, list, nav, footer等,块级元素不能被内嵌在内联元素之中,块通常只出现在<body>里。
内联元素是包含在块里的,仅仅只包含一小部分内容,常呈现在段落里,如<a>, <em>, <strong>等。其存在将不会导致新的一行的产生。
注意可以使用css display 属性,设置inline为block。
*HTML parsing model
*<audio>, <canvas>, <embed>, <iframe>, 及MathTL, SVG里的元素为embeded元素
*元素是大小写不敏感的