H5
笔记整理
整理复习
H5
的基础内容。
将 HTML5
元素定义为块元素
HTML5
定义了8
个新的HTML
语义(semantic
) 元素。所有这些元素都是块级
元素。
通过设置 CSS
的 display
属性值为 block
,让旧版本的浏览器正确显示这些元素:
1 | header, section, footer, aside, nav, main, article, figure { |
为 HTML
添加新元素
通过设置块级元素,还可以自定义 HTML
新元素:
1 |
|
HTML5
新元素
<canvas>
新元素
标签 | 描述 |
---|---|
<canvas> |
标签定义图形,比如图表和其他图像。该标签基于 JavaScript 的绘图 API |
- 新多媒体元素
标签 | 描述 |
---|---|
<audio> |
定义音频内容 |
<video> |
定义视频(video 或者 movie ) |
<source> |
定义多媒体资源 <video> 和 <audio> |
<embed> |
定义嵌入的内容,比如插件。 |
<track> |
为诸如 <video> 和 <audio> 元素之类的媒介规定外部文本轨道。 |
- 新表单元素
标签 | 描述 |
---|---|
<datalist> |
定义选项列表。请与 input 元素配合使用该元素,来定义 input 可能的值。 |
<keygen> |
规定用于表单的密钥对生成器字段。 |
<output> |
定义不同类型的输出,比如脚本的输出。 |
- 新的语义和结构元素
HTML5
提供了新的元素来创建更好的页面结构:
标签 | 元素 |
---|---|
<article> |
定义页面独立的内容区域。 |
<aside> |
定义页面的侧边栏内容。 |
<bdi> |
允许您设置一段文本,使其脱离其父元素的文本方向设置。 |
<command> |
定义命令按钮,比如单选按钮、复选框或按钮 |
<details> |
用于描述文档或文档某个部分的细节 |
<dialog> |
定义对话框,比如提示框 |
<summary> |
标签包含 details 元素的标题 |
<figure> |
规定独立的流内容(图像、图表、照片、代码等等)。 |
<figcaption> |
定义 <figure> 元素的标题 |
<footer> |
定义 section 或 document 的页脚。 |
<header> |
定义了文档的头部区域 |
<mark> |
定义带有记号的文本。 |
<meter> |
定义度量衡。仅用于已知最大和最小值的度量。 |
<nav> |
定义导航链接的部分。 |
<progress> |
定义任何类型的任务的进度。 |
<ruby> |
定义 ruby 注释(中文注音或字符)。 |
<rt> |
定义字符(中文注音或字符)的解释或发音。 |
<rp> |
在 ruby 注释中使用,定义不支持 ruby 元素的浏览器所显示的内容。 |
<section> |
定义文档中的节(section 、区段)。 |
<time> |
定义日期或时间。 |
<wbr> |
规定在文本中的何处适合添加换行符。 |
需要记住经常使用的标签:<article>
, <aside>
, <footer>
, <header>
, <nav>
, <section>
。
HTML5
Canvas
<canvas>
标签定义图形,是一个图形容器,用于图形的绘制,通过脚本 (通常是JavaScript
)来完成。
创建一个画布(Canvas
)
注意: 默认情况下 <canvas>
元素没有边框和内容。
1 | <canvas id="canvas" style="border: 1px solid black"></canvas> |
使用 JavaScript
来绘制图像
canvas
元素本身是没有绘图能力的。所有的绘制工作必须在 JavaScript
内部完成:
1 | // 找到canvas元素 |
getContext("2d")
对象是内建的 HTML5
对象,拥有多种绘制路径、矩形、圆形、字符以及添加图像的方法。
设置fillStyle
属性可以是CSS
颜色,渐变,或图案。fillStyle
默认设置是#000000
(黑色)。
fillRect(x,y,width,height)
方法定义了矩形当前的填充方式。
Canvas
坐标
canvas
是一个二维网格。
canvas 的左上角坐标为
(0,0)`
fillRect(0, 0, 150, 150)
意为从(0,0)
左上角开始,填充一个150*150
的矩形。画布默认为300*150
,如果超出了画布大小,最大以画布为界,溢出部分隐藏。
Canvas
路径
使用canvas
画线:
moveTo(x,y)
定义线条开始坐标lineTo(x,y)
定义线条结束坐标
1 | var c = document.getElementById("canvas"); |
在canvas
中绘制圆形:
1 | arc(x, y, r, start, stop) |
1 |
|
Canvas
文本
使用 canvas
绘制文本,重要的属性和方法如下:
font
定义字体fillText(text, x, y)
在canvas
上绘制实心的文本strokeText(text, x, y)
在canvas
上绘制空心的文本
实心的文本:
1 | var c = document.getElementById("canvas"); |
空心的文本:
1 | var c = document.getElementById("canvas"); |
Canvas
渐变
createLinearGradient(x, y, x1, y1)
创建线条渐变createRadialGradient(x, y, r, x1 , y1, r1)
创建一个径向/圆渐变
在使用渐变对象时,必须使用两种或两种以上的停止颜色,
addColorStop()
方法指定颜色停止,参数使用坐标来描述,可以是0
至1
。
线性渐变:
1 |
|
径向\圆渐变:
1 |
|
HTML5
内联 SVG
HTML5
支持内联SVG
。
什么是 SVG
?
SVG
指可伸缩矢量图形 (Scalable Vector Graphics
)SVG
用于定义用于网络的基于矢量的图形SVG
使用 XML
格式定义图形SVG
图像在放大或改变尺寸的情况下其图形质量不会有损失SVG
是万维网联盟的标准
SVG
优势
与其他图像格式相比(比如 JPEG
和 GIF
),使用 SVG
的优势在于:
SVG
图像可通过文本编辑器来创建和修改SVG
图像可被搜索、索引、脚本化或压缩SVG
是可伸缩的SVG
图像可在任何的分辨率下被高质量地打印SVG
可在图像质量不下降的情况下被放大
Canvas
与 SVG
的比较
Canvas |
SVG |
---|---|
依赖分辨率 | 不依赖分辨率 |
不支持事件处理器 | 支持事件处理器 |
弱的文本渲染能力 | 最适合带有大型渲染区域的应用程序(比如谷歌地图) |
能够以 .png 或 .jpg 格式保存结果图像 | 复杂度高会减慢渲染速度(任何过度使用 DOM 的应用都不快) |
最适合图像密集型的游戏,其中的许多对象会被频繁重绘 | 不适合游戏应用 |
HTML5
拖放(Drag
和 Drop
)
设置元素可拖放
1 |
|
首先,要设置元素是可以被拖放的,把 draggable
属性设置为 true
:
1 | <img draggable="true"> |
定义元素被拖动时事件
ondragstart
setData()
ondragstart
属性调用了一个函数,drag(event)
,它规定了被拖动的数据。
dataTransfer.setData()
方法设置被拖数据的数据类型和值:
1 | function drag(ev) { |
设置元素拖放后事件
ondragover
事件规定在何处放置被拖动的数据。
默认地,无法将数据/元素放置到其他元素中。如果需要设置允许放置,我们必须阻止对元素的默认处理方式。
这要通过调用 ondragover
事件的 event.preventDefault()
方法:
1 | ev.preventDefault() |
进行放置
当放置被拖数据时,会发生 drop
事件
1 | function drop(ev) { |
注释:
- 调用
preventDefault()
来避免浏览器对数据的默认处理(drop
事件的默认行为是以链接形式打开) - 通过
dataTransfer.getData("Text")
方法获得被拖的数据。该方法将返回在setData()
方法中设置为相同类型的任何数据。 - 被拖数据是被拖元素的
id ("asuka")
- 把被拖元素追加到放置元素(目标元素)中
HTML5
Video
(视频)
1 |
|
可选属性
属性 | 值 | 描述 |
---|---|---|
autoplay |
autoplay |
如果出现该属性,则视频在就绪后马上播放。 |
controls |
controls |
如果出现该属性,则向用户显示控件,比如播放按钮。 |
height |
pixels |
设置视频播放器的高度。 |
loop |
loop |
如果出现该属性,则当媒介文件完成播放后再次开始播放。 |
muted |
muted |
如果出现该属性,视频的音频输出为静音。 |
poster |
URL |
规定视频正在下载时显示的图像,直到用户点击播放按钮。 |
preload |
auto metadata none |
如果出现该属性,则视频在页面加载时进行加载,并预备播放。如果使用 “autoplay “,则忽略该属性。 |
src |
URL |
要播放的视频的 URL 。 |
width |
pixels |
设置视频播放器的宽度。 |
HTML5
Audio
(音频)
1 |
|
可选属性
属性 | 值 | 描述 |
---|---|---|
autoplay |
autoplay |
如果出现该属性,则音频在就绪后马上播放。 |
controls |
controls |
如果出现该属性,则向用户显示音频控件(比如播放/暂停按钮)。 |
loop |
loop |
如果出现该属性,则每当音频结束时重新开始播放。 |
muted |
muted |
如果出现该属性,则音频输出为静音。 |
preload |
auto metadata none |
规定当网页加载时,音频是否默认被加载以及如何被加载。 |
src |
URL |
规定音频文件的 URL 。 |
HTML5
语义元素
语义元素可以清楚地描述标签的意义,方便开发者的开发和浏览器的识别。
<section>
<section>
标签定义文档中的节(section
、区段)。比如章节、页眉、页脚或文档中的其他部分。
<article>
<article>
标签定义独立的内容。
<nav>
<nav>
标签定义导航链接的部分。
<aside>
<aside>
标签定义页面主区域内容之外的内容(比如侧边栏)。
<header>
<header>
元素描述了文档的头部区域,主要用于定义内容的介绍展示区域。
<footer>
<footer>
元素描述了文档的底部区域。
<figure>
和 <figcaption>
<figure>
标签规定独立的流内容(图像、图表、照片、代码等等)。
<figure>
元素的内容应该与主内容相关,但如果被删除,则不应对文档流产生影响。
<figcaption>
标签定义<figure>
元素的标题.
<figcaption>
元素应该被置于 “figure
“ 元素的第一个或最后一个子元素的位置。