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>
;
html5 (新一代的html)的更多相关文章
- HTML5 学习总结(三)——本地存储
一.HTML4客户端存储 B/S架构的应用大量的信息存储在服务器端,客户端通过请求响应的方式从服务器获得数据,这样集中存储也会给服务器带来相应的压力,有些数据可以直接存储在客户端,传统的Web技术中会 ...
- HTML5简介
HTML5简介 HTML5是HTML的最新修订标准.2014年10月29日,万维网联盟(W3C)宣布,经过8年的努力,HTML5标准规范制定完成. HTML5的设计目的是在移动设备上使用多媒体. HT ...
- html和html5详解
最近看群里聊天聊得最火热的莫过于手机网站和html5这两个词.可能有人会问,这两者有什么关系呢?随着这移动互联网快速发展的时代,尤其是4G时代已经来临的时刻,加上微软对"XP系统" ...
- HTML5 学习笔记(三)——本地存储
目录 一.HTML4客户端存储 1.1.提交表单发送到服务器的信息 1.2.客户端本地存储概要 二.localStorage 2.1.添加 2.2.取值 2.3.修改 2.4.删除 2.5.跨页面与跨 ...
- HTML5定稿
HTML5定稿了,终于有一种编程语言开发的程序可以在Android和IOS两种设备上运行了 本文转载自: http://www.cnblogs.com/tuyile006/p/4103634.html ...
- HTML5 学习笔记(三)——本地存储(LocalStorage、SessionStorage、Web SQL Database)
一.HTML4客户端存储 B/S架构的应用大量的信息存储在服务器端,客户端通过请求响应的方式从服务器获得数据,这样集中存储也会给服务器带来相应的压力,有些数据可以直接存储在客户端,传统的Web技术中会 ...
- 基于HTML5的WebGL电信网管3D机房监控应用
先上段视频,不是在玩游戏哦,是规规矩矩的电信网管企业应用,嗯,全键盘的漫游3D机房: http://www.hightopo.com/guide/guide/core/3d/examples/exam ...
- HTML5 ——本地存储
目录 一.HTML4客户端存储 1.1.提交表单发送到服务器的信息 1.2.客户端本地存储概要 二.localStorage 2.1.添加 2.2.取值 2.3.修改 2.4.删除 2.5.跨页面与跨 ...
- 基于HTML5的电信网管3D机房监控应用
先上段视频,不是在玩游戏哦,是规规矩矩的电信网管企业应用,嗯,全键盘的漫游3D机房: 随着PC端支持HTML5浏览器的普及,加上主流移动终端Android和iOS都已支持HTML5技术,新一代的电信网 ...
随机推荐
- 在自己的网站上使用RSS订阅功能
要增加RSS订阅功能其实很简单 就是填写一个规定好的xml文档,按照要求填好就可以实现 具体的步骤如下: 这是在网上查到的RSSxml文档 <?xml version="1.0&quo ...
- smarty在循环的时候计数来显示这是第几次循环的功能
想必有很多人比较喜欢这个smarty循环的时候有个变量增加的功能或比较需要这个功能吧?其实不需要额外的变量,当然你也许根本用不了.我们用smarty内置的就可以了.就是smarty有foreach和s ...
- postman(一)批量执行接口测试用例
postman(一)批量执行接口测试用例 学习了:https://blog.csdn.net/github_36032947/article/details/78611405 还可以把collecti ...
- 全民Scheme(1):数字游戏
刚刚看到两句话,感觉不错,分享给大家: 1.用户的问题.就是我们的问题 2.做一些用户想要的东西 (define add1 (lambda (x) (+ 1 x))) (define sub1 (la ...
- 基于Saltstatck实现页面实时显示tomcat启动日志(17)
一.相关文件 master端: /srv/salt/tomcat/start.sls #tomcat启动服务state.sls,须要自己创建 /srv/salt/tomca ...
- 设计模式之十一:抽象工厂模式(Abstract Factory)
抽象工厂模式: 提供了一个创建一系列相关的或相互依赖的对象的接口而不须要详细指定它们的类型. Provide an interface for creating families of related ...
- 操作REDIES
import redis r=redis.Redis(host='118.XX.XX.XXX',password='XXXXXXX9*',db=1,port=6379) # 增删改查r.set('jd ...
- iOS时间间隔判断
如何计算两个NSDate之间的时间间隔呢? timeIntervalSinceDate: Returns the interval between the receiver and another g ...
- 工作总结 @Html.EditorFor @Html.TextBoxFor 表达式树 绑定显示日期格式数据
页面显示 不出来 没有 这个input ............. 换成 @Html.TextBoxFor input 出来了 这是 为什么呢 ? 用@Html.TextBox 也可以出来 为什么 @ ...
- .NET CORE 2.0小白笔记(二):VS插件 ReSharper Ultimate 2017 安装破解
采用Use License Server方式激活,如果有多台要激活的可以用一个当服务器 下载网盘:链接: https://pan.baidu.com/s/1nvacvKP 密码: ipxc 版本:Je ...