HTML基础
介绍
超文本标记语言(Hypertext Markup Language, HTML)是一个可以用来结构化 Web 内容并给予其含义和目标的编码语言。
HTML 并不是真正的的程序语言,它是一种标记语言.
它由一系列的元素(elements)所组成,不同的元素各有功用.
HTML5 是定义 HTML 标准的最新的版本。是一个新版本的 HTML 语言,具有新的元素,属性和行为.
doctype
doctype 是文档类型说明.
<!DOCTYPE html>
有什么作用?
告诉浏览器的语言解析器用什么类型解析文档
HTML5 不基于 SGML,因此不需要对 DTD 进行引用,但是需要 doctype 来规范浏览器的行为(让浏览器按照它们应该的方式来运行)
设定文档语言
<html lang="zh-CN">
- SEO(搜索引擎优化)
- 有利于视障人士通过读屏器阅读
HTML 头部
元数据<meta>
:
指定文档编码: <meta charset="UTF-8">
适配移动页面: <meta name="viewport" content="width=device-width, initial-scale=1.0">
设置 referer: <meta name="referrer" content="never">
添加页面描述: <meta name="description" content="腾讯网(www.QQ.com)是中国浏览量最大...>
定制页面图标: <link rel="shortcut icon" href="favicon.ico" type="image/x-icon">
应用 CSS 和 JS
1 | <link rel="stylesheet" href="app.css"> |
使用 link 和@import 有什么区别?
- link 属于 XHTML 标签,除了加载 CSS 外,还能用于定义 RSS, 定义 rel 连接属性等作用;而@import 是 CSS 提供的,只能用于加载 CSS;
- 页面被加载的时,link 会同时被加载,而@import 引用的 CSS 会等到页面被加载完再加载;
- import 是 CSS2.1 提出的,只在 IE5 以上才能被识别,而 link 是 XHTML 标签,无兼容问题;
- link 支持使用 js 控制 DOM 去改变样式,而@import 不支持;
src 与 href 的区别
区别:src 用于替代这个元素,而 href 用于建立这个标签与外部资源之间的关系
<link href="style.css" rel="stylesheet" />
浏览器加载到这里的时候,html 的渲染和解析不会暂停,css 文件的加载是同时进行的
<script src="script.js"></script>
当浏览器解析到这句代码时,页面的加载和解析都会暂停直到浏览器拿到并执行完这个 js 文件
标签
行内元素有:a b span img input select strong
(强调的语气)
块级元素有:div ul ol li dl dt dd h1 h2 h3 h4…p
空(void)标签就是不用加闭标签的标签,也可以叫闭元素。如:
<area>
<base>
<br>
<col>
<colgroup>
when the span is present<command>
<embed>
<hr>
<img>
<input>
<keygen>
<link>
<meta>
<param>
<source>
<track>
<wbr>
可替换标签
宽高由自己决定的元素,如:
<img>
<video>
<input>
<button>
总结:
常见块级
div:文档节
section:文档节
nav:导航
header:页眉
article:文章
aside:文章侧栏
footer:页脚
details:元素的细节
summary:details 元素可见的标题
dialog:对话框窗口
h1,h2,h3,h4,h5,h6:标题
p:段落
ul:无序列表
ol:有序列表
dir:目录列表
li:项目
dl:列表
dt:列表项目
dd:项目描述
menu:命令的菜单,列表
menuitem:菜单项目
command:命令按钮
form:表单
fieldset:围绕元素的边框(可用于表单内元素分组)
legend:在边框上的标题
select:选择列表(内联元素)
optgroup:组合选择列表选项
option:选择列表选项(也可做 datalist 选项)
datalist:下拉列表(id 要与 input 中 list 属性值绑定)
table:表格
caption:表格标题
thead:组合表头内容(th)
tbody:组合主体内容(td)
tfoot:组合表注内容(td)
tr:表格行
th:表头单元格
td:表格单元
col:表格列属性;(空标签)
colgroup:表格格式化列组;
iframe:内联框架
figure:媒介内容分组
figcaption:figure 标题
map:图像映射
area:图像区域
canvas:图形容器(脚本来绘制图形)
video:视频
source:媒介源
track:文本轨道
audio:声音内容
br:换行(空标签)
hr:水平分割线(空标签)
pre:格式文本
blockquote:块引用
address:文档联系信息
center:居中文本(不赞成使用)
spacer:在水平和垂直方向插入空间(空元素)
常见行内标签
span:内联容器
abbr:缩写
em:强调
strong:粗体强调
mark:突出显示的文本
b:粗体
i:斜体
bdi:文本方向
bdo:文字方向
big:大字体
small:小字体
sup:上标
sub:下标
del:被删除的文本
strike:删除线
s:删除线
ins:被插入的文本
u:下划线
nobr:禁止换行
wbr:单词换行时机(空标签)
tt:打字机文本
kbd:键盘文本
time:日期/时间
cite:引用
q:短引用(“”)
font:字体设定(不常用)
acronym:缩写(html5 不支持)
dfn:字段(不常用)
a:锚点
img:图片
embed:内嵌(空标签)
label:input 标记(点击文本触发控件)
input:输入框
button:按钮
keygen:生成秘钥(空标签)
textarea:多行文本输入框
output:输出结果
ruby:中文注音
rt:注音
rp:浏览器不支持 ruby 元素显示的内容
progress:进度条
meter:度量
var:定义变量
code:计算机代码文本
samp:计算机代码样本
select:下拉列表
文本
HTML 包括六个级别的标题, <h1> – <h6>
。
通常一个页面只有一个<h1>
,请尽量按顺序使用 <h1> – <h6>
。
段落:<p></p>
无序列表: <ul><li></li></ul>
有序列表: <ol><li></li></ol>
描述列表:
1 | <dl> |
缩写:
1 | <p> |
时间:<time datetime="2016-01-20">2016年1月20日</time>
特殊字符:
符号 | 代码 |
---|---|
< | < |
> | > |
“ | " |
‘ | ' |
& | & |
空格 | |
title 与 h1 的区别、b 与 strong 的区别、i 与 em 的区别?
title
属性没有明确意义只表示是个标题,H1
则表示层次明确的标题,对页面信息的抓取也有很大的影响;
strong
是标明重点内容,有语气加强的含义,使用阅读设备阅读网络时:<strong>
会重读,而<b>
是展示强调内容。
i
内容展示为斜体,em
表示强调的文本;
自然样式标签:
b
, i
,u
,s
, pre
语义样式标签:
strong
, em
, ins
, del
, code
应该准确使用语义样式标签, 但不能滥用, 如果不能确定时首选使用自然样式标签。
图片
普通图片:
1 | <!-- 显示 Vue.js logo --> |
带说明的图片(比如博客头像):
1 | <figure> |
表格
简单表格:
1 | <table> |
表单
1 | <div class="login"> |
表单提交中Get
和Post
方式的区别
Get
一般用于从服务器上获取数据,Post
向服务器传送数据Get
传输的数据是拼接在 Url 之后的,对用户是可见的;Post
的传输数据对用户是不可见的Get
传送的数据量较小,不能大于 2KB。Post
传送的数据量较大,一般被默认为不受限制Get
安全性非常低,Post
安全性较高- 在 FORM 提交的时候,如果不指定 Method,则默认为
Get
请求
label 标签的作用
label 标签来定义表单控制间的关系,当用户选择该标签时,浏览器会自动将焦点转到和标签相关的表单控件上。
超链接
1 | //简单链接: |
文档内部链接:
用于定位到文档的某一部分,<a>
的 href 要对应文档内某个元素的 id(id 的值在文档内要唯一)
1 | <a href="#email链接">Email链接</a> |
图片链接:
1 | <a href="https://github.com/fe13" title="可能是未来中国最火的前端工程师的聚集地"> |
1 | 下载链接: |
文档结构
页头 <header>
导航栏 <nav>
主内容 <main>
,后面一般接 <article>
,<section>
,<div>
侧边栏 <aside>
页尾 <footer>
语义化 HTML
选择合适的标签、使用合理的代码结构,便于开发者和视觉障碍人士阅读,同时让浏览器的爬虫和机器很好地解析。
相对路径
同一站点尽量使用相对路径。
1 | <!-- index.html --> |
绝对路径
https://github.com/fe13/fe/blob/master/README.md
浏览器内核
主要分成两部分:渲染引擎(layout engineer 或 Rendering Engine)和 JS 引擎。
渲染引擎
:负责取得网页的内容(HTML、XML、图像等等)、整理讯息(例如加入 CSS 等),以及计算网页的显示方式,然后会输出至显示器或打印机。浏览器的内核的不同对于网页的语法解释会有不同,所以渲染的效果也不相同。所有网页浏览器、电子邮件客户端以及其它需要编辑、显示网络内容的应用程序都需要内核。
JS引擎
:解析和执行 javascript 来实现网页的动态效果。
最开始渲染引擎和 JS 引擎并没有区分的很明确,后来 JS 引擎越来越独立,内核就倾向于只指渲染引擎。
常见的浏览器内核有哪些?
Trident
内核:IE,MaxThon,TT,The World,360,搜狗浏览器等。[又称 MSHTML]
Gecko
内核:Netscape6 及以上版本,FF,MozillaSuite/SeaMonkey 等
Presto
内核:Opera7 及以上。 [Opera 内核原为:Presto,现为:Blink
;]
Webkit
内核:Safari,Chrome 等。 [ Chrome 的:Blink
(WebKit 的分支)]
HTML5 新特性
- 语义化标签:
header
footer
main
article
nav
section
aside
等 - 增强型表单:
date
name
email
range
search
tel
- 视频音频:
video
audio
canvas
绘图,svg
绘图- 地理定位:
geolocation
- 拖放 API:
drag
web worker
: 是运行在后台的 js 脚本webstorage
:localStorage
sessionStorage
webSocket
: HTML5 开始提供的一种在单个 TCP 连接上进行全双工通讯的协议
如何实现浏览器内多个标签页之间的通信
- 使用 localStorage:
localStorage.setItem(key,value)
、localStorage.getItem(key)
- websocket 协议
- webworker