当前位置: 首页 > news >正文

【HTML5】HTML5 特性

HTML5 特性

1. 语义化标签

  1. <header>:表示网页或某个区域的页眉部分,通常包含网站的标志、导航菜单等内容。
  2. <nav>:表示导航区域,用于包含网站的主要导航链接。
  3. <main>:表示网页的主要内容区域,通常包含网页的主要内容。
  4. <section>:表示文档中的一个独立区域或部分,比如一篇文章中的章节、一个页面中的内容块等。
  5. <article>:表示一个独立的、完整的文章或内容块,比如一篇博客文章、新闻报道等。
  6. <aside>:表示一个侧边栏区域,通常用于包含与主要内容相关的附加信息,比如侧边栏、广告等。
  7. <footer>:表示网页或某个区域的页脚部分,通常包含版权信息、联系方式等内容。
  8. <figure><figcaption><figure> 表示一个独立的内容块,通常用于包含图像、图表等媒体内容,而 <figcaption> 表示 <figure> 元素的标题或说明。
  9. <time>:表示日期和时间,用于标记具有时间语义的内容,比如日期、时间、时间戳等。
  10. <progress>:表示进度条,用于显示任务的完成进度。
  11. <details><summary><details> 表示可折叠的内容块,而 <summary> 表示 <details> 元素的摘要或标题。
  12. <mark>:表示带有突出显示效果的文本,通常用于标记搜索关键词等。

2. 浏览器支持

所有现代的主流浏览器都支持大部分 HTML5 的特性,但不同浏览器对某些特性的支持程度可能会有所不同。

3. 多媒体标签

HTML5 引入了多媒体标签,用于在网页中嵌入音频、视频和其他多媒体内容。以下是 HTML5 中常用的多媒体标签:

  1. <audio>:用于嵌入音频内容,可以通过 src 属性指定音频文件的 URL。可以使用 <source> 元素指定多个不同格式的音频文件,以便在不同浏览器上提供更好的兼容性。

    <audio controls><source src="audio.mp3" type="audio/mpeg"><source src="audio.ogg" type="audio/ogg">Your browser does not support the audio element.
    </audio>
    
  2. <video>:用于嵌入视频内容,可以通过 src 属性指定视频文件的 URL。同样可以使用 <source> 元素指定多个不同格式的视频文件。

    <video controls width="640" height="360"><source src="video.mp4" type="video/mp4"><source src="video.webm" type="video/webm">Your browser does not support the video element.
    </video>
    
  3. <iframe>:虽然 <iframe> 不是专门用于多媒体内容的标签,但它可以用于嵌入包含多媒体的外部网页,如 YouTube 视频、Google 地图等。

    <iframe src="https://www.youtube.com/embed/VIDEO_ID" width="560" height="315"></iframe>
    
  4. <canvas>:虽然 <canvas> 通常用于绘制图形,但它也可以用于实现自定义的多媒体内容,如绘制动画、实时图像处理等。

    <canvas id="myCanvas" width="640" height="480"></canvas>
    
  5. <track>:用于指定视频或音频的字幕或描述文件。可以使用 kind 属性指定字幕类型(如 subtitles、captions、descriptions 等)和 src 属性指定字幕文件的 URL。

    <video controls><source src="video.mp4" type="video/mp4"><track kind="subtitles" src="subtitles_en.vtt" srclang="en" label="English"><track kind="subtitles" src="subtitles_es.vtt" srclang="es" label="Spanish">Your browser does not support the video element.
    </video>
    

4. Canvas 画布

Canvas 是 HTML5 提供的一个元素,用于在网页上绘制图形、动画和图像。它提供了一个图形环境,允许使用 JavaScript 和基于浏览器的 API 来绘制 2D 和 3D 图形。Canvas 具有强大的绘图功能,可以实现各种图形、动画、游戏等交互性的视觉效果。

Canvas 基本用法:

  1. 创建 Canvas 元素:
    在 HTML 中,通过 <canvas> 元素可以创建一个画布。Canvas 本身是一个无内容的元素,只需设置其 widthheight 属性,指定画布的宽度和高度。

    <canvas id="myCanvas" width="400" height="200"></canvas>
    
  2. 获取 Canvas 上下文:
    通过 JavaScript,可以获取 <canvas> 元素的上下文对象(context),它是用于绘制图形的核心部分。使用 getContext() 方法来获取不同类型的上下文对象,常用的是 2D 上下文 context2D

    const canvas = document.getElementById('myCanvas');
    const ctx = canvas.getContext('2d');
    
  3. 绘制图形和图像:
    使用获取到的 ctx 上下文对象,可以在画布上绘制各种图形,如矩形、圆形、线条等,也可以绘制图像。常用的绘图方法有:fillRect() 绘制填充矩形、strokeRect() 绘制边框矩形、fillText() 绘制文本、arc() 绘制弧形等。

    // 绘制填充矩形
    ctx.fillStyle = 'red'; // 设置填充颜色为红色
    ctx.fillRect(50, 50, 100, 50); // 在坐标 (50, 50) 处绘制一个宽度为 100,高度为 50 的矩形// 绘制边框矩形
    ctx.strokeStyle = 'blue'; // 设置边框颜色为蓝色
    ctx.lineWidth = 2; // 设置边框线条宽度为 2 像素
    ctx.strokeRect(200, 50, 100, 50); // 在坐标 (200, 50) 处绘制一个宽度为 100,高度为 50 的边框矩形// 绘制文本
    ctx.fillStyle = 'green'; // 设置文本颜色为绿色
    ctx.font = '20px Arial'; // 设置字体样式
    ctx.fillText('Hello, Canvas!', 50, 150); // 在坐标 (50, 150) 处绘制文本
    
  4. 动画和帧率:
    使用 Canvas 可以实现动画效果。可以使用 JavaScript 中的定时器(如 requestAnimationFrame()setInterval())来更新画布内容,从而创建动画效果。通过控制刷新频率(帧率),可以调整动画的流畅度。

    function drawAnimation() {// 清空画布ctx.clearRect(0, 0, canvas.width, canvas.height);// 绘制动画元素// ...// 更新下一帧requestAnimationFrame(drawAnimation);
    }// 启动动画
    drawAnimation();
    
  5. 像素级控制:
    Canvas 允许对像素进行直接操作,从而实现更高级的绘图和图像处理。可以通过 getImageData() 获取画布上指定区域的像素数据,然后对像素数据进行处理。

    const imageData = ctx.getImageData(0, 0, canvas.width, canvas.height);
    const data = imageData.data; // 获取像素数据
    // 处理像素数据
    // ...
    ctx.putImageData(imageData, 0, 0); // 将处理后的像素数据放回画布
    
  6. 支持 WebGL:
    除了 2D 上下文 context2D,Canvas 还支持 3D 绘图技术 WebGL。WebGL 使用类似 OpenGL ES 的 API,可以在 Canvas 上进行高性能的 3D 图形渲染。

    const gl = canvas.getContext('webgl');
    // 使用 WebGL 绘制 3D 图形
    // ...
    

5. 本地存储

HTML5 引入了本地存储机制,其中包括 localStoragesessionStorage

localStorage:

  1. 作用域: localStorage 中存储的数据在同一域名下的所有页面和会话中都是共享的。即使用户关闭了浏览器或重新启动电脑,数据仍然保留,直到被显式删除。
  2. 数据保留: localStorage 中存储的数据没有过期时间,除非被用户手动删除或网站使用 JavaScript 代码清除。
  3. 使用方法: 可以通过 localStorage.setItem(key, value) 方法设置数据,使用 localStorage.getItem(key) 方法获取数据,使用 localStorage.removeItem(key) 方法删除指定键的数据。
  4. 存储容量: 通常情况下,localStorage 的存储容量在 5-10 MB 左右,具体大小因浏览器而异。

sessionStorage:

  1. 作用域: sessionStorage 中存储的数据在同一窗口(或标签页)的所有页面间共享,但在新窗口或标签页中打开同一网站时,数据是不共享的。
  2. 数据保留: sessionStorage 中存储的数据在会话结束时(当用户关闭浏览器标签页时)会被清除,或者当用户在同一标签页中导航到其他网页时也会被清除。
  3. 使用方法: 可以通过 sessionStorage.setItem(key, value) 方法设置数据,使用 sessionStorage.getItem(key) 方法获取数据,使用 sessionStorage.removeItem(key) 方法删除指定键的数据。
  4. 存储容量: 通常情况下,sessionStorage 的存储容量也在 5-10 MB 左右,具体大小因浏览器而异。

使用场景:

  • localStorage 适合用于长期存储不过期的数据,比如用户的偏好设置、登录信息等。
  • sessionStorage 适合用于临时存储在会话期间需要共享的数据,比如表单数据、临时状态等。

注意事项:

  1. 本地存储数据仅在浏览器端存储,并不会发送给服务器,因此不适合存储敏感信息。
  2. 不同浏览器、不同设备上的存储容量可能会有所不同,建议谨慎使用大量数据存储。

示例代码:

// 使用localStorage存储数据
localStorage.setItem('username', 'John');
const username = localStorage.getItem('username');
console.log(username); // 输出 "John"
localStorage.removeItem('username');// 使用sessionStorage存储数据
sessionStorage.setItem('theme', 'dark');
const theme = sessionStorage.getItem('theme');
console.log(theme); // 输出 "dark"
sessionStorage.removeItem('theme');

6. Web Workers

HTML5 中的 Web Workers 是一项用于在后台运行 JavaScript 脚本的技术。传统上,JavaScript 在主线程中执行,这意味着在执行复杂计算或耗时操作时,会阻塞页面的用户界面响应。为了避免这种情况,HTML5 引入了 Web Workers,允许将耗时的任务放在独立的线程中运行,不会影响主线程的执行。

Web Workers 的特点:

  1. 独立线程: Web Workers 在主线程之外运行,它们在自己的线程中执行,不会影响页面的主线程,因此不会阻塞页面的响应。
  2. 后台执行: Web Workers 可以在后台持续运行,即使页面被关闭或切换到其他页面,Worker 仍然可以继续执行。
  3. 无法访问 DOM: Web Workers 不能访问 DOM,它们完全在与页面分离的上下文中运行,这意味着它们不能直接操纵页面的元素或样式。
  4. 通信: Web Workers 与主线程之间可以通过消息传递进行通信,这使得在不同线程之间传递数据成为可能。

使用 Web Workers 的步骤:

  1. 创建 Worker: 使用 new Worker() 构造函数来创建一个 Web Worker。需要指定一个 JavaScript 文件的 URL,该文件将在 Worker 线程中运行。

    // 主线程中创建 Web Worker
    const worker = new Worker('worker.js');
    
  2. 处理消息: 在主线程中,可以通过 worker.onmessage 事件监听来自 Worker 的消息。

    // 主线程监听来自 Worker 的消息
    worker.onmessage = function(event) {console.log('Received message from Worker:', event.data);
    };
    
  3. 发送消息: 在 Worker 中,可以使用 postMessage() 方法向主线程发送消息。

    // Worker 中向主线程发送消息
    self.postMessage('Hello from Worker!');
    
  4. 终止 Worker: 在主线程中,可以使用 worker.terminate() 方法终止 Worker 的运行。

    // 主线程终止 Worker
    worker.terminate();
    

示例:

index.html:

<!DOCTYPE html>
<html>
<head><title>Web Workers Demo</title>
</head>
<body><button onclick="startWorker()">Start Worker</button><button onclick="stopWorker()">Stop Worker</button><script>let worker;function startWorker() {worker = new Worker('worker.js');worker.onmessage = function(event) {console.log('Received message from Worker:', event.data);};}function stopWorker() {if (worker) {worker.terminate();}}</script>
</body>
</html>

worker.js:

// Worker 线程中的代码
self.onmessage = function(event) {console.log('Received message in Worker:', event.data);self.postMessage('Hello from Worker!');
};

在上述示例中,当用户点击 “Start Worker” 按钮时,将创建一个 Web Worker,并在 Worker 中运行 worker.js 文件中的代码。然后,通过监听 onmessage 事件,在主线程中接收来自 Worker 的消息,并将其打印到控制台。用户点击 “Stop Worker” 按钮时,将终止 Worker 的运行。

这样,耗时的任务可以放在 Web Worker 中执行,不会影响主线程的响应,从而提高了页面的性能和用户体验。

http://www.lryc.cn/news/150069.html

相关文章:

  • 【FreeRTOS】互斥量的使用与逐步实现
  • Spring-Cloud-Openfeign如何传递用户信息?
  • OpenCV(十一):图像仿射变换
  • 多路波形发生器的控制
  • [C/C++]天天酷跑超详细教程-中篇
  • 面试被打脸,数据结构底层都不知道么--回去等通知吧
  • 微服务面试问题小结( 微服务、分布式、MQ、网关、zookeeper、nginx)
  • Vue3全局变量使用
  • 拼多多海量商品数据接口API 商品详情接口 商品价格主图接口
  • 结构化日志记录增强网络安全性
  • 企业架构LNMP学习笔记5
  • Idea安装免注册版ChatGPT
  • git操作
  • 9 | 求出不同性别和不同科目的学生平均分数
  • Java如何发起http的get请求的实现
  • webRtc 示例
  • 【RabbitMQ】服务启动成功,无法访问localhost:15672(RabbitMQ Management)
  • 【操作记录】pytorch_geometric安装方法
  • EventSystem 事件系统
  • 2.2 Vector<T> 动态数组(模板语法)
  • dockerfile 例子(二)
  • openssh---Windows下git安装配置gitlab
  • vscode宏键绑定
  • 外贸企业如何借助CRM提升企业发展?
  • 初步了解ES
  • Linux基础(三)
  • python函数调用的四种方式
  • 如何将两个pdf合并成一个?pdf合并技巧分享
  • qt : day 3
  • flutter高德地图大头针