Search K
Appearance
Appearance
关键词: HTML5, HTML5简介, HTML5发展历史, HTML5新特性, HTML5与HTML4区别, Web开发, 前端技术, 浏览器支持
HTML(HyperText Markup Language,超文本标记语言)是构建网页的标准标记语言。让我们回顾一下HTML的发展历程:
HTML5不仅仅是HTML的一个新版本,它代表了Web技术的重大飞跃:
<!-- HTML4时代的典型结构 -->
<div id="header">
<div id="nav">导航内容</div>
</div>
<div id="content">
<div class="article">文章内容</div>
</div>
<div id="footer">页脚内容</div>
<!-- HTML5语义化结构 -->
<header>
<nav>导航内容</nav>
</header>
<main>
<article>文章内容</article>
</main>
<footer>页脚内容</footer>HTML5原生支持音频和视频,无需依赖Flash等插件:
<!-- 音频播放 -->
<audio controls>
<source src="music.mp3" type="audio/mpeg">
<source src="music.ogg" type="audio/ogg">
您的浏览器不支持音频播放
</audio>
<!-- 视频播放 -->
<video controls width="400">
<source src="movie.mp4" type="video/mp4">
<source src="movie.webm" type="video/webm">
您的浏览器不支持视频播放
</video>HTML5天生适配移动设备,支持触摸事件和响应式设计:
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>移动友好的页面</title>
</head>
<body>
<h1>这是一个移动友好的页面</h1>
</body>
</html><!-- HTML4的DOCTYPE声明 -->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<!-- HTML5的DOCTYPE声明 -->
<!DOCTYPE html><!-- HTML4的字符编码声明 -->
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<!-- HTML5的字符编码声明 -->
<meta charset="UTF-8"><!-- HTML5支持以下写法 -->
<input type="text" disabled>
<input type="text" disabled="disabled">
<input type="text" disabled="">
<!-- 布尔属性可以省略值 -->
<input type="checkbox" checked>
<video controls autoplay muted>| 功能类别 | HTML4 | HTML5 |
|---|---|---|
| 语义化结构 | <div> | <header>, <nav>, <main>, <article>, <section>, <aside>, <footer> |
| 多媒体 | <object>, <embed> | <audio>, <video> |
| 图形绘制 | 需要插件 | <canvas>, <svg> |
| 表单控件 | 基本输入类型 | email, url, tel, number, date, color等 |
| 交互元素 | 无 | <details>, <summary>, <progress>, <meter> |
HTML5不仅是HTML的升级版本,更是现代Web开发的基石。它带来了:
HTML5引入了更多具有语义的标签,使页面结构更清晰:
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<title>语义化页面示例</title>
</head>
<body>
<header>
<h1>网站标题</h1>
<nav>
<ul>
<li><a href="#home">首页</a></li>
<li><a href="#about">关于我们</a></li>
<li><a href="#contact">联系我们</a></li>
</ul>
</nav>
</header>
<main>
<article>
<header>
<h2>文章标题</h2>
<time datetime="2024-01-01">2024年1月1日</time>
</header>
<p>这是文章的内容...</p>
</article>
<aside>
<h3>相关链接</h3>
<ul>
<li><a href="#">相关文章1</a></li>
<li><a href="#">相关文章2</a></li>
</ul>
</aside>
</main>
<footer>
<p>© 2024 我的网站</p>
</footer>
</body>
</html>HTML5大大增强了表单功能:
<form>
<!-- 邮箱输入 -->
<label for="email">邮箱:</label>
<input type="email" id="email" name="email" required>
<!-- 日期选择 -->
<label for="birthday">生日:</label>
<input type="date" id="birthday" name="birthday">
<!-- 数字输入 -->
<label for="age">年龄:</label>
<input type="number" id="age" name="age" min="1" max="120">
<!-- 颜色选择 -->
<label for="color">喜欢的颜色:</label>
<input type="color" id="color" name="color">
<!-- 范围选择 -->
<label for="volume">音量:</label>
<input type="range" id="volume" name="volume" min="0" max="100">
<button type="submit">提交</button>
</form>Canvas提供了强大的2D绘图功能:
<canvas id="myCanvas" width="400" height="200"></canvas>
<script>
const canvas = document.getElementById('myCanvas');
const ctx = canvas.getContext('2d');
// 绘制矩形
ctx.fillStyle = 'red';
ctx.fillRect(10, 10, 100, 50);
// 绘制圆形
ctx.beginPath();
ctx.arc(200, 50, 30, 0, 2 * Math.PI);
ctx.fillStyle = 'blue';
ctx.fill();
// 绘制文字
ctx.font = '20px Arial';
ctx.fillStyle = 'green';
ctx.fillText('Hello Canvas!', 10, 100);
</script>原生的音频和视频支持:
<!-- 音频播放器 -->
<audio controls>
<source src="audio.mp3" type="audio/mpeg">
<source src="audio.ogg" type="audio/ogg">
您的浏览器不支持音频播放
</audio>
<!-- 视频播放器 -->
<video controls width="400" height="300">
<source src="video.mp4" type="video/mp4">
<source src="video.webm" type="video/webm">
您的浏览器不支持视频播放
</video>HTML5提供了多种本地存储方案:
<script>
// localStorage - 持久存储
localStorage.setItem('username', 'john');
const username = localStorage.getItem('username');
// sessionStorage - 会话存储
sessionStorage.setItem('temp', 'temporary data');
const temp = sessionStorage.getItem('temp');
// 检查支持性
if (typeof(Storage) !== "undefined") {
// 支持本地存储
console.log('支持本地存储');
} else {
// 不支持本地存储
console.log('不支持本地存储');
}
</script>获取用户地理位置:
<button onclick="getLocation()">获取位置</button>
<p id="location"></p>
<script>
function getLocation() {
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(showPosition);
} else {
document.getElementById('location').innerHTML = "此浏览器不支持地理定位";
}
}
function showPosition(position) {
document.getElementById('location').innerHTML =
"纬度: " + position.coords.latitude +
"<br>经度: " + position.coords.longitude;
}
</script>现代浏览器对HTML5的支持已经非常完善:
| 浏览器 | 版本 | HTML5支持度 | 移动端支持 |
|---|---|---|---|
| Chrome | 4+ | 100% | 优秀 |
| Firefox | 3.5+ | 100% | 优秀 |
| Safari | 4+ | 100% | 优秀 |
| Edge | 12+ | 100% | 优秀 |
| Internet Explorer | 9+ | 85% | 一般 |
<!-- 检查浏览器对HTML5的支持 -->
<script>
if (typeof(Storage) !== "undefined") {
console.log("浏览器支持HTML5本地存储");
} else {
console.log("浏览器不支持HTML5本地存储");
}
</script>下一节预览:第1章第2节 - 开发环境搭建 - 学习如何搭建HTML5开发环境
| 浏览器 | 版本 | HTML5支持程度 |
|---|---|---|
| Chrome | 4+ | 完全支持 |
| Firefox | 3.5+ | 完全支持 |
| Safari | 4+ | 完全支持 |
| Edge | 所有版本 | 完全支持 |
| Internet Explorer | 9+ | 部分支持 |
<!-- 检测语义化标签支持 -->
<script>
// 检测是否支持HTML5语义化标签
function checkHTML5Support() {
const testElement = document.createElement('article');
return testElement.toString() === '[object HTMLElement]';
}
if (checkHTML5Support()) {
console.log('支持HTML5语义化标签');
} else {
console.log('不支持HTML5语义化标签');
// 为旧版本IE添加支持
document.createElement('article');
document.createElement('section');
document.createElement('nav');
document.createElement('header');
document.createElement('footer');
}
</script><script>
function checkCanvasSupport() {
const canvas = document.createElement('canvas');
return !!(canvas.getContext && canvas.getContext('2d'));
}
if (checkCanvasSupport()) {
console.log('支持Canvas');
} else {
console.log('不支持Canvas');
}
</script><script>
function checkLocalStorageSupport() {
try {
return 'localStorage' in window && window['localStorage'] !== null;
} catch (e) {
return false;
}
}
if (checkLocalStorageSupport()) {
console.log('支持本地存储');
} else {
console.log('不支持本地存储');
}
</script><script src="https://cdnjs.cloudflare.com/ajax/libs/modernizr/2.8.3/modernizr.min.js"></script>
<script>
if (Modernizr.canvas) {
// 支持Canvas
console.log('支持Canvas');
} else {
// 不支持Canvas,使用替代方案
console.log('不支持Canvas,使用替代方案');
}
if (Modernizr.localstorage) {
// 支持本地存储
console.log('支持本地存储');
} else {
// 不支持本地存储,使用Cookie
console.log('不支持本地存储,使用Cookie');
}
</script><!-- 为旧版本IE添加HTML5支持 -->
<!--[if lt IE 9]>
<script src="https://cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv.min.js"></script>
<![endif]-->HTML5不等于HTML + CSS3 + JavaScript
不要为了使用新特性而使用
语义化不是为了样式
下一节预告:我们将学习如何搭建HTML5开发环境,包括代码编辑器选择、浏览器开发者工具使用等内容。