html5 (逆天的html)

简介

h5的新特性:

cavas / video / audio / cache / element / form

最小的h5文档:

<!DOCTYPE html>

<html>

<head>

<title>文档标题</title>

</head>

<body>

文档内容...

</body>

</html>

8个语义元素:

header, section, footer, aside, nav, main, article, figure

IE浏览器兼容方案: 引入 html5shiv

<script

src="https://cdn.bootcss.com/html5shiv/3.7.3/html5shiv.min.js"></script>

cavas, 用JS绘制图形

示例:

<canvas id="myCanvas" width="200" height="100" style="border:1px solid #000000;">

</canvas>

<script>

var c=document.getElementById("myCanvas");

var ctx=c.getContext("2d");

ctx.fillStyle="#FF0000";

ctx.fillRect(0,0,150,75);

</script>

参考手册: http://www.shouce.ren/api/view/a/654

svg, 用 XML 描述 2D 图形

示例:

<svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="190">

<polygon points="100,10 40,180 190,60 10,60 160,180"

style="fill:lime;stroke:purple;stroke-width:5;fill-rule:evenodd;">

</svg>

与cavas比较:

不依赖分辨率;

支持事件处理器;

适合大型渲染区域;

不适合游戏应用‘

drag, 拖放元素

示例: http://www.shouce.ren/study/api/s/2992

geolocation, 地理定位

h5新元素

参考手册: http://www.shouce.ren/api/view/a/1509

video/audio

input类型

新增的输入类型:

color、date、datetime、email、month、number、range、

search、tel、time、url、week

参考手册: http://www.shouce.ren/api/view/a/312

新表单元素

datalist: 规定输入域的选项列表

<input list="browsers">

<datalist id="browsers">

<option value="Internet Explorer">

<option value="Firefox">

<option value="Chrome">

<option value="Opera">

<option value="Safari">

</datalist>

keygen: 提供一种验证用户的可靠方法

<form action="demo_keygen.php" method="get">

用户名: <input type="text" name="usr_name">

加密: <keygen name="security">

<input type="submit">

</form>

output: 不同类型的输出, 比如计算或脚本输出

<form oninput="x.value=parseInt(a.value)+parseInt(b.value)">0

<input type="range" id="a" value="50"> 100

+ <input type="number" id="b" value="50">

= <output name="x" for="a b"></output>

</form>

表单属性

一、form属性

autocomplete: on或off, 表示自动完成

novalidate: 布尔值, 表示提交时不验证表单

二、input属性


autofocus


布尔值, 设置此域自动获得焦点


form


规定此域所属的一个或多个表单


formaction


规定此域提交表单的URL地址 (会覆盖form元素的action属性; 与type=submit一起使用)


formenctype


规定表单提交到服务器的数据编码 (只对method=post有效; 会覆盖form元素的enctype属性; 与type=submit一起使用)


formmethod


规定表单提交的方式 (会覆盖form元素的method属性; 与type=submit一起使用)


formnovalidate


布尔值, 规定表单在提交时无需被验证 (会覆盖form元素的novalidate属性; 与type=submit一起使用)


formtarget


规定提交表单后的展示方式 (会覆盖form元素的target属性; 与type=submit一起使用)


width / height


规定图像的宽度和高度 (只用于type=image)


list


规定输入域的datalist (详见: 新表单元素 > datalist)


min / max


规定此域的最小和最大值 (只用于date/number/range标签)


multiple


布尔值, 规定此域可选择多个值 (只用于email/file)


pattern


定义一个正则表达式用来验证此域的值 (只用于  text, search, url, tel, email, 和 password)


placeholder


描述此域所期待的值, 即提示用户应该输入什么


required


布尔值, 规定此域不能为空值


step


规定合法的数字间隔 (只用于 number, range, date, datetime, datetime-local, month, time 和 week)

语义元素

6个元素, 一幅图足以了解:

figure: 表示独立的流内容 (图像、图表、照片、代码等)

figcaption: 定义 <figure> 元素的标题.

示例代码:

<figure>

<img src="img111.jpg" width="30">

<figcaption>Anything</figcaption>

</figure>

web存储

localStorage: 没有时间限制的数据存储, 只要不删除将会一直存在

sessionStorage: 针对一个session的数据存储, 浏览器关闭后此数据立即被清除

数据以键值对进行存储!!

检查浏览器是否支持:

if(typeof(Storage)!=="undefined"){

//yes...

} else {

//no...

}

示例:

localStorage.lastname="Smith";

应用程序缓存

作用: 缓存web应用, 当在没有因特网连接时仍然可以进行访问.

优势:

1. 离线浏览

2. 访问速度

3. 减少服务器负载

用法:

1. 在文档的<html> 标签中包含 manifest 属性

2. manifest文件扩展名建议是: .appcache

3. mainfest是简单的文本文件: 告知浏览器应该要/不要缓存哪些内容

示例:

demo.html

<!DOCTYPE HTML>

<html manifest="demo.appcache">

...

</html>

demo.appcache

CACHE MANIFEST

/theme.css

/logo.gif

NETWORK:

login.php

FALLBACK:

/html/ /offline.html

示例解释:

1. 可以 * 代表所有文件

2. NETWORK 规定不缓存的文件

3. FALLBACK 规定离线时, 用offline.html替代 html 目录中的所有文件

4. 以 "#" 开头的是注释行

5. 第一行 CACHE MAINFEST 后面没有冒号

缓存效果:

web worker

运行在后台的 JavaScript

最佳使用场景:

1. 执行一些开销较大的数据处理或计算任务;

2. worker会在后台另外开辟一个线程来执行js代码 (因为js计算过程中, 不能响应UI, 这样会对用户体验造成很大影响).

worker线程分为两种:

dedicated worker 和 shared worker, 可在chrome调试器中查看

示例代码:

Main线程代码

<!DOCTYPE html>

<html>

<head>

<title></title>

<script src=‘//lib.sinaapp.com/js/jquery/1.9.1/jquery-1.9.1.min.js‘></script>

<script>

$(function(){

$("#btn").click(function(){

var worker = new Worker("work.js");

worker.addEventListener("message", function(e){

console.log(e.data);

}, false);

worker.postMessage(3000);

});

});

</script>

</head>

<body>

<form>

<input type="button" id="btn" value="Start Processing"/>

</form>

</body>

</html>

work.js代码

addEventListener("message", function(e){

var date = new Date();

var d = null;

do {

d = new Date();

} while ( d - date < e.data )

postMessage(d);  //三秒钟后返回信息

}, false);

error事件:

worker.addEventListener("error", function(evt){

alert("Line #" + evt.lineno + " - " + evt.message + " in " + evt.filename);

}, false);

终止worker:

worker.terminate();

优化worker:

1. 把参数进行序列号, work.postMessage(JSON.stringify(data));

2. 采用二进制的存储方式

var imageData = context.createImageData(img.width, img.height);

var int8s = new Int8Array(imageData.data);

server-sent event

服务器发送事件, 即网页自动获取服务器的更新.

示例代码:

index.html

<!DOCTYPE html>

<html>

<head>

<title></title>

<script src=‘//lib.sinaapp.com/js/jquery/1.9.1/jquery-1.9.1.min.js‘></script>

<script>

$(function(){

if (typeof(EventSource) !== "undefined") {

var source = new EventSource("sse.php");

source.addEventListener("message", function(event){

document.getElementById("result").innerHTML += event.data + "<br>";

}, false);

} else {

//sorry.

}

});

</script>

</head>

<body>

<div id=‘result‘></div>

</body>

</html>

sse.php

<?php

header(‘Content-Type: text/event-stream‘);

header(‘Cache-Control: no-cache‘);

header(‘Connection: keep-alive‘);

$time = time();

echo "data: The server time is: {$time}\n\n";

flush();

?>

web sql

h5数据库操作

示例代码:

<script type = "text/javascript" >

var db = openDatabase(‘mydb‘, ‘1.0‘, ‘Test DB‘, 2 * 1024 * 1024);

var msg;

db.transaction(function(tx) {

tx.executeSql(‘CREATE TABLE IF NOT EXISTS LOGS (id unique, log)‘);

tx.executeSql(‘INSERT INTO LOGS (id, log) VALUES (1, "foobar")‘);

tx.executeSql(‘INSERT INTO LOGS (id, log) VALUES (2, "logmsg")‘);

msg = ‘<p>Log message created and row inserted.</p>‘;

document.querySelector(‘#status‘).innerHTML = msg;

});

db.transaction(function(tx) {

tx.executeSql(‘SELECT * FROM LOGS‘, [],

function(tx, results) {

var len = results.rows.length,

i;

msg = "<p>Found rows: " + len + "</p>";

document.querySelector(‘#status‘).innerHTML += msg;

for (i = 0; i < len; i++) {

msg = "<p><b>" + results.rows.item(i).log + "</b></p>";

document.querySelector(‘#status‘).innerHTML += msg;

}

},

null);

});

</script>

;

时间: 2024-10-09 18:02:34

html5 (逆天的html)的相关文章

简直要逆天!超炫的 HTML5 粒子效果进度条

我喜欢粒子效果作品,特别是那些能够应用于实际的,例如这个由 Jack Rugile 基于 HTML5 Cavnas 编写的进度条效果.看着这么炫的 Loading 效果,即使让我多等一会也无妨:)你呢? 温馨提示:为保证最佳的效果,请在 IE10+.Chrome.Firefox 和 Safari 等现代浏览器中浏览. 插件下载     效果演示 您可能感兴趣的相关文章 Web 开发中很实用的10个效果[附源码下载] 精心挑选的优秀jQuery Ajax分页插件和教程 12个让人惊叹的的创意的 4

Html5 学习系列(六)Html5本地存储和本地数据库

一个网站如何能在客户的浏览器存储更多的数据呢? 在Html4的时代在浏览器端存储点网站个性化的数据,尤其是用户浏览器的痕迹,用户的相关数据等一般只能存储在Cookie中,但是大多是浏览器对于Cookie的限制也就逼迫网站存储数据尽量精简,想存储复杂的.关系型的用户数据就根本不可能了.但是进入Html5时代,这一切都不叫事... 一.本地存储由来的背景 众所周知Html4时代Cookie的大小.格式.存储数据格式等限制,网站应用如果想在浏览器端存储用户的部分信息,那么只能借助于Cookie.但是C

03.Web大前端时代之:HTML5+CSS3入门系列~H5功能元素

Web大前端时代之:HTML5+CSS3入门系列:http://www.cnblogs.com/dunitian/p/5121725.html 2.功能元素 1.hgroup 对网页或区段(section)的标题进行组合 2.figure <figure> 标签规定独立的流内容(图像.图表.照片.代码等等). figure 元素的内容应该与主内容相关,但如果被删除,则不应对文档流产生影响. Figcaption figure的标题 一般格式: <figure> <figcap

Web 建站技术中,HTML、HTML5、XHTML、CSS、SQL、JavaScript、PHP、ASP.NET、Web Services 是什么?

建站有很多技术,如 HTML.HTML5.XHTML.CSS.SQL.JavaScript.PHP.http://ASP.NET.Web Services.浏览器脚本.服务器脚本等.它们的区别是什么?新手一点不懂,想理清所有这些技术之间的关系和应用范围. 一个学期前我也和楼主差不多不知道这些都是啥,一个学期之后差不多都弄懂了,来讲讲自己的理解吧! 大概是什么个过程:假设你在浏览器地址栏输入这个问题的地址http://www.zhihu.com/question/22689579访问过程和下图差不

Html5的Web存储和WebSql

HTML5 Web 存储 使用HTML5可以在本地存储用户的浏览数据. 早些时候,本地存储使用的是cookies.但是Web 存储需要更加的安全与快速. 这些数据不会被保存在服务器上,但是这些数据只用于用户请求网站数据上.它也可以存储大量的数据,而不影响网站的性能. 数据以 键/值 对存在, web网页的数据只允许该网页访问使用. 本地存储的背景 众所周知Html4时代Cookie的大小.格式.存储数据格式等限制,网站应用如果想在浏览器端存储用户的部分信息,那么只能借助于Cookie.但是Coo

我为NET狂~群福利:逆天书库

我为NET狂-官方群① 238575862 爱学习,爱研究,福利不断,技能直彪~~ 最近更新:2016-08-02,欢迎补充 目录简单浏览(目录生成命令==>tree > 1.txt,生成命令==>tree /f > 1.txt) │ 程序员养生.pdf│ ├─1.算法设计│ │ Head First 设计模式(中文版).pdf│ │ 大话数据结构.pdf│ │ 大话设计模式.pdf│ │ 深入浅出设计模式.pdf│ │ 编程之美.pdf│ │ 设计模式之禅(第1版).pdf│ │

Html5本地存储和本地数据库

一个网站如何能在客户的浏览器存储更多的数据呢? 在Html4的时代在浏览器端存储点网站个性化的数据,尤其是用户浏览器的痕迹,用户的相关数据等一般只能存储在Cookie中,但是大多是浏览器对于Cookie的限制也就逼迫网站存储数据尽量精简,想存储复杂的.关系型的用户数据就根本不可能了.但是进入Html5时代,这一切都不叫事... 一.本地存储由来的背景 众所周知Html4时代Cookie的大小.格式.存储数据格式等限制,网站应用如果想在浏览器端存储用户的部分信息,那么只能借助于Cookie.但是C

HTML5的localStorage、sessionStorage和SQL的CRUD的使用

一.本地存储由来的背景 众所周知Html4时代Cookie的大小.格式.存储数据格式等限制,网站应用如果想在浏览器端存储用户的部分信息,那么只能借助于Cookie.但是Cookie的这些限制,也就导致了Cookie只能存储一些ID之类的标识符等简单的数据,复杂的数据就更别扯了. 下面是Cookie的限制: 1, 大多数浏览器支持最大为 4096 字节的 Cookie. 2, 浏览器还限制站点可以在用户计算机上存储的 Cookie 的数量.大多数浏览器只允许每个站点存储 20 个 Cookie:如

HTML5新增Canvas标签及对应属性、API详解(基础一)

知识说明: HTML5新增的canvas标签,通过创建画布,在画布上创建任何想要的形状,下面将canvas的API以及属性做一个整理,并且附上时钟的示例,便于后期复习学习!Fighting! 一.标签原型 <canvas width=”1000” height=”1000” id=”myCanvas”> 您的浏览器版本过低,不支持HTML5新增的canvas标签. </canvas> 使用js获取该画布,并指定对象 <script> Var canvasID = doc