HTML5

笔记

Posted by zhangyingji on September 28, 2018

标签兼容问题

IE9+

低版本解决方法:

// 1 设置display:block,创建这个标签
document.creatElement("header");

// 2 引入html5shiv.js
<!--[if lt IE 9]>
<script type="text/javascript" src="js/html5shiv.js"></script>
<![endif]-->

语义化标签

  • <header>
  • <nav>
  • <section>
  • <article>
  • <aside>
  • <footer>
  • <figure> 规定独立的流内容(图像、图表、照片、代码等等)
  • <figcaption> 为 <figure>元素定义标题,应该被置于<figure> 元素的第一个或最后一个子元素的位置
  • <mark> 定义带有记号的文本,在需要突出显示文本时使用
  • <canvas>
  • <meter>
  • <time>
  • <iframe>

对<div>的使用的几点建议

  1. 如果你觉得用HTML5中的新的标签比用<div>合适就一定要用新的标签,因为<div>没有任何的语义,这个是HTML5所不倡导的;
  2. 如果效果需要的话可以在HTML5新标签的外面加一个<div>标签,这样对HTML中的语义不会产生太大的影响。
  3. 更多参见: https://segmentfault.com/a/1190000002695791#articleHeader4 http://www.jianshu.com/p/830321c3666d

多媒体

audio

<!-- 
controls: 音频控件
autoplay: 自动播放
loop: 循环
-->
<audio src="" controls></audio>

video

<!-- 
controls: 音频控件
autoplay: 自动播放
muted: google静音自动播放
loop: 循环
-->
<video controls>
    <!-- 多种格式支持 -->
    <source src="1.mp4">
    <source src="1.ogg>
    浏览器需要升级
</video>

表单

<!-- 
    autocomplete="off": 关闭提示
    novalidate: 关闭验证功能
-->
<form action="" method="get" id="fm" autocomplete="off">
    <!-- 自动校验 -->
    <!-- 
        autofocus: 自动获取焦点
        placeholder="": 提示信息
        required: 不允许为空
    -->
	<input type="email" name="">
	<input type="number" name="">
	<input type="url" name="">
	<input type="range" name="">
	<input type="color" name="">
	<input type="time" name="">
	<input type="submit" name="">
</form>

<!-- 
    form="[id]" 可随指定表单提交
    list="id" 可提供表单提示数据列表
-->
<input type="text" name="" from="fm" list="url_list">
<datalist id="url_list">
    <option value=""></option>
</datalist>

文件读取

FileReader 对象,读取文件的方法

  • readAsBinaryString 读取为二进制编码
  • readAsText 读取为文本
  • readAsDataUrl 读取为DataUrl

提供的事件

  • onabort 中断时
  • onerror 出错时
  • onload 读取成功时
  • onloadend 读取完成,无论成功失败
  • onloadstart 读取开始时
  • onprogress 读取中
var f1 = document.querySelector("#f1");
f1.onchange = function(){
	// 读取图片,首先创建FileReader对象
	var imgRead = new FileReader();
	// 获取到文件
	imgRead.readAsDataURL(this.files[0]);
	// 文件加载完之后
	imgRead.onload = function(){
		document.querySelector("#img").src = this.result;
	}

	// 读取文件
	var fReader = new FileReader();
	fReader.readAsText(this.files[0]);
	fReader.onload = function(){
		var result = fReader.result;
		console.log(result);
	}
}

地理定位

window.navigator.geolocation.getCurrentPosition(function(position){
	// 得到positon对象
	console.log(position + "定位成功");
	console.log("经度" + position.coords.latitude);
	console.log("纬度" + position.coords.longitude);
},function(msg){
	console.log(msg + "定位失败");
});

本地存储

感兴趣可以看看我的笔记cookie、localStroage与sessionStroage

canvas

画一条线

// 获取画布
var can = document.querySelector("canvas");
// 获取绘图的对象
var line = can.getContext("2d");
// 起始坐标
line.moveTo(0,100);
line.lineTo(600,100);
// 颜色
line.strokeStyle = "red";
// 宽度
line.lineWidth = 10;
// 绘制
line.stroke();

其他

元素选择、类操作

// 元素选择
// document.querySelector() 获取第一个
// document.querySelectorAll() 获取第一个
var it = document.querySelector("div p");

// classList.add("") 添加类
// classList.remove("") 移除类
// classList.toggle("") 切换类
// classList.contains("") 是否包含类
it.classList.add("test")

自定义属性 data-*

<div id="dv" data-name="person"></div>

// 获取自定义属性对象
var dv = document.querySelector("#dv").dataset;

网络状态检测

var state = window.navigator.onLine;
if(state) {
	console.log("在线");
} 

// 联网触发
window.ononline = function(){};
// 断网触发
window.onoffline = function(){};