logo

HTML5 新特性详解

Published on

HTML5 新特性详解

一、语义化标签

1. 结构标签

<!-- 页面结构 -->
<header>
  <nav>
    <ul>
      <li><a href="#">首页</a></li>
      <li><a href="#">关于</a></li>
    </ul>
  </nav>
</header>

<main>
  <article>
    <h1>文章标题</h1>
    <section>
      <h2>章节标题</h2>
      <p>文章内容...</p>
    </section>
  </article>
  
  <aside>
    <h3>侧边栏</h3>
    <p>相关内容...</p>
  </aside>
</main>

<footer>
  <p>版权信息</p>
</footer>

2. 文本标签

<!-- 文本标记 -->
<p>这是一个<mark>高亮</mark>文本</p>
<p>这是一个<time datetime="2021-03-25">日期</time></p>
<p>这是一个<ruby><rt>han</rt></ruby></p>
<p>这是一个<wbr>长单词</wbr>换行</p>

二、表单增强

1. 输入类型

<!-- 新的输入类型 -->
<input type="email" placeholder="请输入邮箱">
<input type="url" placeholder="请输入网址">
<input type="number" min="0" max="100" step="1">
<input type="range" min="0" max="100" step="1">
<input type="date" min="2021-01-01" max="2021-12-31">
<input type="color" value="#ff0000">
<input type="search" placeholder="搜索...">

2. 表单属性

<!-- 表单属性 -->
<input type="text" required placeholder="必填项">
<input type="text" pattern="[A-Za-z]{3}" title="请输入3个字母">
<input type="text" autocomplete="on">
<input type="text" autofocus>
<input type="text" disabled>
<input type="text" readonly>

3. 表单验证

<!-- 表单验证 -->
<form novalidate>
  <input type="email" required>
  <input type="url" required>
  <input type="number" min="0" max="100" required>
  <button type="submit">提交</button>
</form>

三、多媒体支持

1. 视频播放

<!-- 视频播放 -->
<video controls width="640" height="360" poster="poster.jpg">
  <source src="video.mp4" type="video/mp4">
  <source src="video.webm" type="video/webm">
  <track kind="subtitles" src="subtitles.vtt" srclang="zh" label="中文">
  <p>您的浏览器不支持视频播放</p>
</video>

2. 音频播放

<!-- 音频播放 -->
<audio controls>
  <source src="audio.mp3" type="audio/mpeg">
  <source src="audio.ogg" type="audio/ogg">
  <p>您的浏览器不支持音频播放</p>
</audio>

3. Canvas绘图

<!-- Canvas绘图 -->
<canvas id="myCanvas" width="500" height="500"></canvas>

<script>
const canvas = document.getElementById('myCanvas');
const ctx = canvas.getContext('2d');

// 绘制矩形
ctx.fillStyle = 'red';
ctx.fillRect(10, 10, 100, 100);

// 绘制圆形
ctx.beginPath();
ctx.arc(200, 200, 50, 0, Math.PI * 2);
ctx.fillStyle = 'blue';
ctx.fill();
</script>

四、本地存储

1. Web Storage

// localStorage
localStorage.setItem('username', '张三');
const username = localStorage.getItem('username');
localStorage.removeItem('username');
localStorage.clear();

// sessionStorage
sessionStorage.setItem('token', 'abc123');
const token = sessionStorage.getItem('token');

2. IndexedDB

// 打开数据库
const request = indexedDB.open('myDB', 1);

request.onupgradeneeded = (event) => {
  const db = event.target.result;
  const store = db.createObjectStore('users', { keyPath: 'id' });
  store.createIndex('name', 'name', { unique: false });
};

// 添加数据
const transaction = db.transaction(['users'], 'readwrite');
const store = transaction.objectStore('users');
store.add({ id: 1, name: '张三' });

五、Web Workers

1. 创建Worker

// 主线程
const worker = new Worker('worker.js');

worker.onmessage = (event) => {
  console.log('收到消息:', event.data);
};

worker.postMessage('开始计算');

// worker.js
self.onmessage = (event) => {
  const result = heavyCalculation(event.data);
  self.postMessage(result);
};

2. 共享Worker

// 主线程
const sharedWorker = new SharedWorker('shared-worker.js');

sharedWorker.port.onmessage = (event) => {
  console.log('收到消息:', event.data);
};

sharedWorker.port.postMessage('开始计算');

// shared-worker.js
self.onconnect = (event) => {
  const port = event.ports[0];
  
  port.onmessage = (event) => {
    const result = heavyCalculation(event.data);
    port.postMessage(result);
  };
};

六、WebSocket

1. 建立连接

const socket = new WebSocket('ws://example.com/socket');

socket.onopen = () => {
  console.log('连接已建立');
  socket.send('Hello Server!');
};

socket.onmessage = (event) => {
  console.log('收到消息:', event.data);
};

socket.onclose = () => {
  console.log('连接已关闭');
};

socket.onerror = (error) => {
  console.error('发生错误:', error);
};

七、总结

通过本文的学习,我们掌握了:

  1. HTML5语义化标签的使用
  2. 增强的表单功能
  3. 多媒体支持(视频、音频、Canvas)
  4. 本地存储方案
  5. Web Workers多线程处理
  6. WebSocket实时通信

这些新特性大大提升了Web应用的功能和性能,建议在实际项目中多加应用。

🤪 您也可以编辑此页: