学习HTML的最佳网站没有之一http://www.w3school.com.cn/html/
关于HTML/HTML5(二) http://www.jianshu.com/p/e03a8728a0bc
HTML/HTML5和CSS/CSS3还有JavaScript都是基础中的基础,很多的框架、插件,都是在这些“基础”的基础上实现的。
常说的DIV+CSS布局,不是说会把HTML和CSS一起使用就够了,而是在编写页面前,先布置页面结构(比如说 网页大体分为头部/页眉,导航栏,内容,底部/页脚,然后内容又分为……,相类似的组件/结构又可以将它统一为同一类结构……),
也可以使用 HTML5 提供的新语义元素来布局网页,header定义文档或节的页眉,nav定义导航链接的容器,section定义文档中的节,article定义独立的自包含文章,aside定义内容之外的内容(比如侧栏),footer定义文档或节的页脚,details定义额外的细节,summary定义 details 元素的标题。
然后再编写代码。先思考,再动手,否则会事倍功半。
HTML的简介:
超文本标记语言 (HyperTextMarkupLanguage) 、
标记语言(markup language)、标记标签(markup tag) 、
尖括号包围的关键词、成对出现、开始标签结束标签、开放标签闭合标签。
HTML 文档 = 网页(包含HTML标签和文本),Web 浏览器的作用是读取 HTML 文档,并以网页的形式显示出它们。
开始标签与结束标签之间的内容就是元素的内容,
HTML 元素具有空内容(empty content),
空元素在开始标签中进行关闭(以开始标签的结束而结束,比如
),
大多数 HTML 元素拥有属性(为 HTML 元素提供附加信息,在开始标签中,以名称/值对的形式出现,比如name="value"),始终为属性值加引号,
大多数 HTML 元素可以嵌套(可以包含其他 HTML 元素),
HTML 标签对大小写不敏感(推荐使用小写)。
当显示页面时,浏览器会移除源代码中多余的空格和空行。所有连续的空格或空行都会被算作一个空格。需要注意的是,HTML 代码中的所有连续的空行(换行)也被显示为一个空格。
所有浏览器,不论新旧,都会自动把未识别元素当做行内元素来处理。
建议始终使用小写
HTML里的Hello World,每个人都敲过n遍。
语言代码:(HTML 的 lang 属性可用于网页或部分网页的语言。这对搜索引擎和浏览器是有帮助的。)
根据 W3C 推荐标准,您应该通过 标签中的 lang 属性对每张页面中的主要语言进行声明,比如:
......
参考手册:http://www.w3school.com.cn/tags/html_ref_language_codes.asp
不赞成使用的标签和属性:
标签和
标签和标签(删除线文本):使用代替
标签(下划线文本)
代替
align属性(对齐方式)
bgcolor属性(背景颜色)
color属性(文本颜色)
下面列出了适用于大多数HTML元素的属性:
class属性指定类名,
id属性指定唯一id,
style属性指定行内样式,
title属性指定额外信息(可在工具提示中显示)
必需的属性:
如:1.图像标签必须使用alt属性,当图像无法显示时该属性很重要。
2.必须定义图像尺寸,这样做会减少闪烁,因为浏览器会在图像加载之前为图像预留空间。
对标签语义化有较好的理解,就是认识标签和属性的用途和作用。
文档类型:(这个是HTML5的声明,声明帮助浏览器正确地显示网页)
文档:
文档头部:
(
内的元素可以是:使用超链接:(如果网页包含指向媒体文件的超链接,大多数浏览器会使用“辅助应用程序”来播放文件。
以下代码片段显示指向 mp3 文件的链接。如果用户点击该链接,浏览器会启动“辅助应用程序”来播放该文件)
内联的声音:(当您在网页中包含声音,或者作为网页的组成部分时,它被称为内联声音。
如果您打算在 web 应用程序中使用内联声音,您需要意识到很多人都觉得内联声音令人恼火。同时请注意,用户可能已经关闭了浏览器中的内联声音选项。
我们最好的建议是只在用户希望听到内联声音的地方包含它们。一个正面的例子是,在用户需要听到录音并点击某个链接时,会打开页面然后播放录音。)
HTML 4.01 多媒体标签
定义对象的参数。
HTML 5 多媒体标签
播放视频:
(使用
(
使用
(使用
Your browser does not support the video tag.
最好的 HTML 解决方法(HTML5 +
优酷解决方案:(在 HTML 中显示视频的最简单的方法是使用优酷等视频网站。如果您希望在网页中播放视频,那么您可以把视频上传到优酷等视频网站,然后在您的网页中插入 HTML 代码即可播放视频)
width="480" height="400" type="application/x-shockwave-flash">
使用超链接(如果网页包含指向媒体文件的超链接,大多数浏览器会使用“辅助应用程序”来播放文件。
以下代码片段显示指向 AVI 文件的链接。如果用户点击该链接,浏览器会启动“辅助应用程序”,比如 Windows Media Player 来播放这个 AVI 文件)
关于内联视频(当视频被包含在网页中时,它被称为内联视频。
如果您打算在 web 应用程序中使用内联视频,您需要意识到很多人都觉得内联视频令人恼火。同时请注意,用户可能已经关闭了浏览器中的内联视频选项。
我们最好的建议是只在用户希望看到内联视频的地方包含它们。一个正面的例子是,在用户需要看到视频并点击某个链接时,会打开页面然后播放视频。)
HTML 4.01 多媒体标签
定义对象的参数。
HTML 5 多媒体标签
标签定义嵌入的内容,比如插件。
PS:当前,video 元素支持三种视频格式:
格式 IE Firefox Opera Chrome Safari
Ogg No 3.5+ 10.5+ 5.0+ No
MPEG 4 9.0+ No No 5.0+ 3.0+
WebM No 4.0+ 10.6+ 6.0+ No
PS:当前,audio 元素支持三种音频格式:
类型 IE 9 Firefox 3.5 Opera 10.5 Chrome 3.0 Safari 3.0
Ogg Vorbis NO √ √ √ NO
MP3 √ NO NO √ √
Wav NO √ √ NO √
地理定位:(HTML5 Geolocation(地理定位)用于定位用户的位置。鉴于该特性可能侵犯用户的隐私,除非用户同意,否则用户位置信息是不可用的。)
Internet Explorer 9、Firefox、Chrome、Safari 以及 Opera 支持地理定位。
注释:对于拥有 GPS 的设备,比如 iPhone,地理定位更加精确。
- 使用地理定位(getCurrentPosition() 方法来获得用户的位置。可返回用户位置的经度和纬度)
var x=document.getElementById("demo");
function getLocation()
{
if (navigator.geolocation) //检测是否支持地理定位
{
navigator.geolocation.getCurrentPosition(showPosition); //如果getCurrentPosition()运行成功,则向参数showPosition中规定的函数返回一个coordinates对象
}
else{x.innerHTML="Geolocation is not supported by this browser.";}
}
function showPosition(position) //showPosition() 函数获得并显示经度和纬度
{
x.innerHTML="Latitude: " + position.coords.latitude + "
Longitude: " + position.coords.longitude;
}
处理错误和拒绝:(getCurrentPosition() 方法的第二个参数用于处理错误。它规定当获取用户位置失败时运行的函数)
function showError(error)
{
switch(error.code)
{
case error.PERMISSION_DENIED: //用户不允许地理定位
x.innerHTML="User denied the request for Geolocation."
break;
case error.POSITION_UNAVAILABLE: //无法获取当前位置
x.innerHTML="Location information is unavailable."
break;
case error.TIMEOUT: //操作超时
x.innerHTML="The request to get user location timed out."
break;
case error.UNKNOWN_ERROR:
x.innerHTML="An unknown error occurred."
break;
}
}
在地图中显示结果:(您需要访问可使用经纬度的地图服务,比如谷歌地图或百度地图,例子中使用返回的经纬度数据在谷歌地图中显示位置(使用静态图像))
function showPosition(position)
{
var latlon=position.coords.latitude+","+position.coords.longitude;
var img_url="http://maps.googleapis.com/maps/api/staticmap?center="
+latlon+"&zoom=14&size=400x300&sensor=false";
document.getElementById("mapholder").innerHTML="";
}
官方(使用的是谷歌地图):http://www.w3school.com.cn/tiy/t.asp?f=html5_geolocation_map_script
给定位置的信息,可以用在 更新本地信息,显示用户周围的兴趣点,交互式车载导航系统 (GPS)
getCurrentPosition() 方法 - 返回数据(若成功,则 getCurrentPosition() 方法返回对象。始终会返回 latitude、longitude 以及 accuracy 属性。如果可用,则会返回其他下面的属性。)
coords.latitude 十进制数的纬度
coords.longitude 十进制数的经度
coords.accuracy 位置精度
coords.altitude 海拔,海平面以上以米计
coords.altitudeAccuracy 位置的海拔精度
coords.heading 方向,从正北开始以度计
coords.speed 速度,以米/每秒计
timestamp 响应的日期/时间
Geolocation 对象 - 其他有趣的方法
watchPosition() - 返回用户的当前位置,并继续返回用户移动时的更新位置(就像汽车上的 GPS)。
clearWatch() - 停止 watchPosition() 方法
下面的例子展示 watchPosition() 方法。您需要一台精确的 GPS 设备来测试该例(比如 iPhone):
var x=document.getElementById("demo");
function getLocation()
{
if (navigator.geolocation)
{
navigator.geolocation.watchPosition(showPosition);
}
else{x.innerHTML="Geolocation is not supported by this browser.";}
}
function showPosition(position)
{
x.innerHTML="Latitude: " + position.coords.latitude + "
Longitude: " + position.coords.longitude;
}
HTTP状态消息:(当浏览器从 web 服务器请求服务时,可能会发生错误。)
从而有可能会返回下面的一系列状态消息:
1xx: 信息,2xx: 成功,3xx: 重定向,4xx: 客户端错误,5xx: 服务器错误
100 Continue服务器仅接收到部分请求,但是一旦服务器并没有拒绝该请求,客户端应该继续发送其余的请求。
101 Switching Protocols服务器转换协议:服务器将遵从客户的请求转换到另外一种协议。
200 OK请求成功(其后是对GET和POST请求的应答文档。)
201 Created请求被创建完成,同时新的资源被创建。
202 Accepted供处理的请求已被接受,但是处理未完成。
203 Non-authoritative Information文档已经正常地返回,但一些应答头可能不正确,因为使用的是文档的拷贝。
204 No Content没有新文档。浏览器应该继续显示原来的文档。如果用户定期地刷新页面,而Servlet可以确定用户文档足够新,这个状态代码是很有用的。
205 Reset Content没有新文档。但浏览器应该重置它所显示的内容。用来强制浏览器清除表单输入内容。
206 Partial Content客户发送了一个带有Range头的GET请求,服务器完成了它。
300 Multiple Choices多重选择。链接列表。用户可以选择某链接到达目的地。最多允许五个地址。
301 Moved Permanently所请求的页面已经转移至新的url。
302 Found所请求的页面已经临时转移至新的url。
303 See Other所请求的页面可在别的url下被找到。
304 Not Modified未按预期修改文档。客户端有缓冲的文档并发出了一个条件性的请求(一般是提供If-Modified-Since头表示客户只想比指定日期更新的文档)。服务器告诉客户,原来缓冲的文档还可以继续使用。
305 Use Proxy客户请求的文档应该通过Location头所指明的代理服务器提取。
306Unused此代码被用于前一版本。目前已不再使用,但是代码依然被保留。
307 Temporary Redirect被请求的页面已经临时移至新的url。
400 Bad Request服务器未能理解请求。
401 Unauthorized被请求的页面需要用户名和密码。
402 Payment Required此代码尚无法使用。
403 Forbidden对被请求页面的访问被禁止。
404 Not Found服务器无法找到被请求的页面。
405 Method Not Allowed请求中指定的方法不被允许。
406 Not Acceptable服务器生成的响应无法被客户端所接受。
407 Proxy Authentication Required用户必须首先使用代理服务器进行验证,这样请求才会被处理。
408 Request Timeout请求超出了服务器的等待时间。
409 Conflict由于冲突,请求无法被完成。
410 Gone被请求的页面不可用。
411 Length Required"Content-Length" 未被定义。如果无此内容,服务器不会接受请求。
412 Precondition Failed请求中的前提条件被服务器评估为失败。
413 Request Entity Too Large由于所请求的实体的太大,服务器不会接受请求。
414 Request-url Too Long由于url太长,服务器不会接受请求。当post请求被转换为带有很长的查询信息的get请求时,就会发生这种情况。
415 Unsupported Media Type由于媒介类型不被支持,服务器不会接受请求。
416服务器不能满足客户在请求中指定的Range头。
417 Expectation Failed
500 Internal Server Error请求未完成。服务器遇到不可预知的情况。
501 Not Implemented请求未完成。服务器不支持所请求的功能。
502 Bad Gateway请求未完成。服务器从上游服务器收到一个无效的响应。
503 Service Unavailable请求未完成。服务器临时过载或当机。
504 Gateway Timeout网关超时。
505 HTTP Version Not Supported服务器不支持请求中指明的HTTP协议版本。
HTTP方法:两种最常用的 HTTP 方法是:GET 和 POST。
GET- 从指定的资源请求数据。
POST- 向指定的资源提交要被处理的数据
介绍:
超文本传输协议(HTTP)的设计目的是保证客户机与服务器之间的通信。
HTTP 的工作方式是客户机与服务器之间的请求-应答协议。
web 浏览器可能是客户端,而计算机上的网络应用程序也可能作为服务器端。
举例:客户端(浏览器)向服务器提交 HTTP 请求;服务器向客户端返回响应。响应包含关于请求的状态信息以及可能被请求的内容。
GET 方法
请注意,查询字符串(名称/值对)是在 GET 请求的 URL 中发送的:
/test/demo_form.asp?name1=value1&name2=value2
有关 GET 请求:
GET 请求可被缓存
GET 请求保留在浏览器历史记录中
GET 请求可被收藏为书签
GET 请求不应在处理敏感数据时使用
GET 请求有长度限制
GET 请求只应当用于取回数据
= = = = = = = = = = = =
POST 方法
请注意,查询字符串(名称/值对)是在 POST 请求的 HTTP 消息主体中发送的:
POST /test/demo_form.asp HTTP/1.1
Host: w3schools.com
name1=value1&name2=value2
有关 POST 请求:
POST 请求不会被缓存
POST 请求不会保留在浏览器历史记录中
POST 不能被收藏为书签
POST 请求对数据长度没有要求
= = = = = = = = = = =
比较 GET 与 POST:
后退按钮/刷新:
GET方法无害,
POST方法数据会被重新提交(浏览器应该告知用户数据会被重新提交)。
书签:
GET方法可收藏为书签,
POST方法不可收藏为书签
缓存:
GET方法能被缓存,
POST方法不能缓存
编码类型:
GET方法:application/x-www-form-urlencoded,
POST方法:application/x-www-form-urlencoded 或 multipart/form-data。为二进制数据使用多重编码。
历史:
GET方法参数保留在浏览器历史中。
POST方法参数不会保存在浏览器历史中。
对数据长度的限制:
GET方法限制长度。当发送数据时,GET 方法向 URL 添加数据;URL 的长度是受限制的(URL 的最大长度是 2048 个字符)。
POST方法无限制。
对数据类型的限制:
GET方法只允许 ASCII 字符。
POST方法没有限制。也允许二进制数据。
安全性
GET方法:与 POST 相比,GET 的安全性较差,因为所发送的数据是 URL 的一部分。
在发送密码或其他敏感信息时绝不要使用 GET !
POST方法:POST 比 GET 更安全,因为参数不会被保存在浏览器历史或 web 服务器日志中。
可见性:
GET方法:数据在 URL 中对所有人都是可见的。
POST方法:数据不会显示在 URL 中。
= = = = = = = = =
其他 HTTP 请求方法
HEAD与 GET 相同,但只返回 HTTP 报头,不返回文档主体。
PUT上传指定的 URI 表示。
DELETE删除指定资源。
OPTIONS返回服务器支持的 HTTP 方法。
CONNECT把请求连接转换到透明的 TCP/IP 通道。
HTML实例:http://www.w3school.com.cn/example/html_examples.asp