23、web前端开发之html5(四)
十二. HTML5实践示例
前面我们详细讲解了HTML5的特点,包括语义化标签、增强的表单功能、多媒体元素(如<video>和<audio>)、Canvas绘图、SVG集成以及离线存储等。以下是一些详细的HTML5实践示例,展示如何使用HTML5的新特性来构建更丰富、更交互式的Web内容。
1. 语义化标签
HTML5引入了许多新的语义化标签,使得Web页面的结构更加清晰,提升了可访问性和SEO优化。
示例:使用HTML5语义化标签构建页面结构
<!DOCTYPE html>
<html lang="zh-CN">
<head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>HTML5语义化标签示例</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> <section id="home"> <h2>首页</h2> <p>欢迎来到我的个人网站!</p> </section> <section id="about"> <h2>关于</h2> <p>这是我的个人简介。</p> </section> <section id="contact"> <h2>联系</h2> <p>邮箱:example@example.com</p> </section> </main> <!-- 网页的脚部区域 --> <footer> <p>© 2023 我的个人网站. All rights reserved.</p> </footer>
</body>
</html>
解释:
<header>:表示文档的头部,通常包含标题和导航。<nav>:表示导航链接。<main>:表示文档的主内容区域。<section>:表示一个独立的内容区块。<footer>:表示文档的脚部,通常包含版权信息和其他辅助内容。
2. 增强的表单功能
HTML5对表单进行了 significative 改进,新增了多种输入类型(如email、tel、date等)和内置的表单验证功能。
示例:创建一个增强的联系表单
<!DOCTYPE html>
<html lang="zh-CN">
<head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>HTML5表单示例</title> <style> .form-container { max-width: 500px; margin: 0 auto; padding: 20px; } .form-group { margin-bottom: 10px; } label { display: block; margin-bottom: 5px; } input, textarea { width: 100%; padding: 8px; margin-bottom: 10px; } </style>
</head>
<body> <div class="form-container"> <form id="contactForm"> <div class="form-group"> <label for="name">姓名:</label> <input type="text" id="name" name="name" required placeholder="请输入您的姓名"> </div> <div class="form-group"> <label for="email">邮箱:</label> <input type="email" id="email" name="email" required placeholder="请输入您的邮箱"> </div> <div class="form-group"> <label for="tel">电话:</label> <input type="tel" id="tel" name="tel" pattern="[0-9]{11}" placeholder="请输入11位手机号码"> </div> <div class="form-group"> <label for="birth">生日:</label> <input type="date" id="birth" name="birth"> </div> <div class="form-group"> <label for="message">留言:</label> <textarea id="message" name="message" cols="30" rows="5" placeholder="请输入您的留言"></textarea> </div> <button type="submit">提交</button> </form> </div>
</body>
</html>
解释:
- 新输入类型:
type="email":自动验证邮箱格式。type="tel":用于输入电话号码。type="date":提供一个日期选择器。
- 内置验证:
required:确保字段不能为空。pattern:通过正则表达式验证输入格式。
- CSS样式:为表单元素添加了基本的样式,提升用户体验。
3. 多媒体元素
HTML5引入了<video>和<audio>标签,使得在Web页面中嵌入多媒体内容变得更加简单。
示例:在页面中嵌入视频和音频
<!DOCTYPE html>
<html lang="zh-CN">
<head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>HTML5多媒体示例</title>
</head>
<body> <h2>视频示例</h2> <video id="myVideo" width="640" height="360" controls> <source src="video.mp4" type="video/mp4"> <source src="video.ogg" type="video/ogg"> 您的浏览器不支持视频标签。 </video> <h2>音频示例</h2> <audio id="myAudio" controls> <source src="music.mp3" type="audio/mpeg"> <source src="music.ogg" type="audio/ogg"> 您的浏览器不支持音频标签。 </audio>
</body>
</html>
解释:
<video>和<audio>标签用于嵌入视频和音频内容。controls属性显示默认的播放控件。<source>标签用于指定媒体文件的来源,可以提供多个格式以兼容不同浏览器。- 如果浏览器不支持
<video>或<audio>标签,会显示最后一条文字。
4. Canvas绘图
Canvas是HTML5中一个强大的绘图元素,允许通过JavaScript在页面上绘制图形和动画。
示例:使用Canvas绘制一个简单的图形
<!DOCTYPE html>
<html lang="zh-CN">
<head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>HTML5 Canvas示例</title>
</head>
<body> <h2>Canvas绘图示例</h2> <canvas id="myCanvas" width="400" height="400" style="border: 1px solid black;"></canvas> <script> const canvas = document.getElementById('myCanvas'); const ctx = canvas.getContext('2d'); // 绘制一个红色矩形 ctx.fillStyle = 'red'; ctx.fillRect(50, 50, 100, 100); // 绘制一个蓝色圆形 ctx.beginPath(); ctx.arc(250, 250, 50, 0, Math.PI * 2); ctx.fillStyle = 'blue'; ctx.fill(); // 绘制文字 ctx.font = '20px Arial'; ctx.fillStyle = 'black'; ctx.fillText('HTML5 Canvas', 10, 30); </script>
</body>
</html>
解释:
<canvas>标签用于创建一个绘图区域。getContext('2d')方法获取Canvas的2D绘图上下文。fillRect方法绘制一个矩形。arc和beginPath、fill方法绘制一个圆形。fillText方法在Canvas上绘制文字。
5. SVG集成
HTML5允许直接在HTML文档中嵌入SVG(可缩放矢量图形)元素,实现高质量的矢量图形显示。
示例:嵌入SVG图形
<!DOCTYPE html>
<html lang="zh-CN">
<head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>HTML5 SVG示例</title>
</head>
<body> <h2>SVG图形示例</h2> <svg width="400" height="400" style="border: 1px solid black;"> <!-- 绘制一个红色矩形 --> <rect x="50" y="50" width="100" height="100" fill="red" /> <!-- 绘制一个蓝色圆形 --> <circle cx="250" cy="250" r="50" fill="blue" /> <!-- 绘制文字 --> <text x="10" y="30" font-size="20" fill="black">HTML5 SVG</text> </svg>
</body>
</html>
解释:
<svg>标签用于创建一个SVG绘图区域。<rect>元素绘制一个矩形。<circle>元素绘制一个圆形。<text>元素在SVG中添加文字。
6. 离线存储
HTML5提供了离线存储功能,允许Web应用在没有网络连接时仍然能够运行。
示例:使用Application Cache实现离线存储
<!DOCTYPE html>
<html lang="zh-CN">
<head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>HTML5离线存储示例</title> <!-- 指定离线存储的manifest文件 --> <link rel="manifest" href="cache.appcache">
</head>
<body> <h1>离线存储示例</h1> <script> // 检查应用缓存的状态 window.addEventListener('load', function(e) { window.applicationCache.addEventListener('updateready', function(e) { if (window.applicationCache.status === window.applicationCache.UPDATEREADY) { window.applicationCache.swapCache(); console.log('应用缓存已更新'); } }); }); </script>
</body>
</html>
cache.appcache 文件内容:
CACHE MANIFEST
# 2025-10-01 v1.0 CACHE:
index.html
style.css
script.js
image.png NETWORK:
* FALLBACK:
/ offline.html
解释:
manifest属性指定了离线存储的配置文件。CACHE MANIFEST:指定需要缓存的资源列表。NETWORK:指定需要从网络上加载的资源。FALLBACK:指定在离线模式下替换的资源。
7. 本地存储
HTML5的localStorage和sessionStorage允许在客户端存储数据,提升Web应用的性能和用户体验。
示例:使用localStorage存储和读取数据
<!DOCTYPE html>
<html lang="zh-CN">
<head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>HTML5本地存储示例</title>
</head>
<body> <h2>本地存储示例</h2> <input type="text" id="inputData" placeholder="请输入内容"> <button onclick="saveData()">保存数据</button> <button onclick="loadData()">加载数据</button> <p id="outputData"></p> <script> function saveData() { const inputData = document.getElementById('inputData').value; localStorage.setItem('savedData', inputData); alert('数据已保存!'); } function loadData() { const savedData = localStorage.getItem('savedData'); if (savedData) { document.getElementById('outputData').textContent = '保存的数据:' + savedData; } else { alert('暂无保存的数据!'); } } </script>
</body>
</html>
解释:
localStorage.setItem():将数据存储在本地。localStorage.getItem():从本地读取数据。- 数据会在浏览器关闭后依然保留。
sessionStorage的使用方式类似,但数据只会在当前会话中存在。
8. 实时通信
HTML5的WebSocket允许客户端和服务器之间建立实时通信,实现双向数据传输。
示例:使用WebSocket实现实时通信
<!DOCTYPE html>
<html lang="zh-CN">
<head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>HTML5 WebSocket示例</title>
</head>
<body> <h2>WebSocket实时通信示例</h2> <input type="text" id="messageInput" placeholder="请输入消息"> <button onclick="sendMessage()">发送消息</button> <div id="messageOutput"></div> <script> const ws = new WebSocket('ws://localhost:8080'); // 发送消息 function sendMessage() { const messageInput = document.getElementById('messageInput'); const message = messageInput.value; ws.send(message); messageInput.value = ''; } // 接收消息 ws.onmessage = function(event) { const messageOutput = document.getElementById('messageOutput'); messageOutput.innerHTML += `<p>收到消息:${event.data}</p>`; }; // 连接打开 ws.onopen = function() { console.log('WebSocket连接已打开'); }; // 连接关闭 ws.onclose = function() { console.log('WebSocket连接已关闭'); }; // 出现错误 ws.onerror = function() { console.log('WebSocket发生错误'); }; </script>
</body>
</html>
解释:
WebSocket对象用于建立客户端和服务器之间的实时通信。ws.send()方法发送消息到服务器。ws.onmessage事件处理接收到的消息。ws.onopen、ws.onclose和ws.onerror事件用于处理连接的打开、关闭和错误。
总结
通过以上示例,可以看出HTML5在现代Web开发中的强大功能。从语义化标签、增强的表单功能、多媒体元素到Canvas绘图、SVG集成、离线存储和实时通信,HTML5为开发者提供了更加灵活和高效的工具,能够创造出更加丰富和交互式的Web应用。希望这些实践示例能够帮助你更好地理解和应用HTML5的新特性。
十三. 总结
HTML5作为网页开发的核心技术,通过丰富的语义化标签、强大的多媒体支持和高效的性能优化,为开发者提供了更强大的工具和更灵活的解决方案。理解和掌握HTML5的核心特性和实践方法,是构建现代网页应用的关键。此外,结合CSS3和JavaScript,可以实现更复杂的交互和视觉效果。通过不断实践和探索,开发者能够充分发挥HTML5的潜力,创建出功能丰富、用户体验良好的网页应用。
相关文章:
23、web前端开发之html5(四)
十二. HTML5实践示例 前面我们详细讲解了HTML5的特点,包括语义化标签、增强的表单功能、多媒体元素(如<video>和<audio>)、Canvas绘图、SVG集成以及离线存储等。以下是一些详细的HTML5实践示例,展示如何使用HTML5的新…...
S7-1200对V90 PN进行位置控制的三种方法
S7-1200系列PLC通过PROFINET与V90 PN伺服驱动器搭配进行位置控制,实现的方法主要有以下三种: ? 方法一、在PLC中组态位置轴工艺对象,V90使用标准报文3,通过MC_Power、MC_MoveAbsolute等PLC Open标准程序块进行控制, 这种控制方式属于中央控制方式(位置控制在PLC中计算,驱…...
Mongodb分片模式部署
MongoDB 分片集群部署教程 1. 概述 MongoDB 分片是一种用于处理大规模数据集的集群技术。通过分片,MongoDB 可以将数据分布在多个服务器上,从而提高存储容量和读写性能。本教程将详细介绍如何从零开始部署 MongoDB 分片集群。 介绍 分片集群中主要由三…...
ElementPlus 快速入门
目录 前言 为什么要学习 ElementPlus? 正文 步骤 1 创建 一个工程化的vue 项目 2 安装 element-Plus :Form 表单 | Element Plus 1 点击 当前界面的指南 2 点击左边菜单栏上的安装,选择包管理器 3 运行该命令 demo(案例1 ) 步骤 …...
C++输入输出流第二弹:文件输入输出流and字符串输入输出流
目录 文件输入输出流(重点) 文件输入流 文件输入流对象的创建 对测试代码进行解读: 1. 代码核心逻辑 2. 读取过程详解 3. 关键特性总结 4. 注意事项 5. 完整流程示例 这里既然提到了 >> 流,那么就对他进行进一步的…...
Kubernetes集群中部署SonarQube服务
以下是在Kubernetes集群中部署SonarQube服务的分步指南,包含持久化存储、数据库配置和高可用性建议: 1. 前置条件 已部署Kubernetes集群(版本≥1.19)安装kubectl和helm工具配置StorageClass(如NFS、Ceph、EBS等&#…...
深度解析 | Android 12系统级禁用SIM卡功能实现与Framework层定制
一、需求背景与实现原理 在Android系统定制开发中,彻底禁用SIM卡功能是某些行业设备(如安全终端、Kiosk模式设备)的常见需求。不同于常规的SIM卡状态管理,该功能需要实现: 硬件级禁用 - 即使插入SIM卡也无法识别 系统…...
TCP传输---计算机网络
TCP结构 源端口和目标端口:标识通信的应用程序。序列号:标记发送的数据段的顺序序号。确认号 ( ACK):确认接收到的数据序号。标志位:控制连接状态,包括 SYN(同步)、ACK(确认…...
STM32学习笔记之常用外设接口(原理篇)
📢:如果你也对机器人、人工智能感兴趣,看来我们志同道合✨ 📢:不妨浏览一下我的博客主页【https://blog.csdn.net/weixin_51244852】 📢:文章若有幸对你有帮助,可点赞 👍…...
nginx服务配置练习
题目: 使用基于账号访问的配置,来配置通过 www.haha.com:8080/custom/index.html 访问时显示“你可以访问”,如果是 www.haha.com:8080/requir/index.html 则提示需要用户名和密码才能访问。 创建身份认证文件 [rootlocalhost conf.d]# ht…...
基于TweenMax和SVG的炫酷弹性进度条动画特效
这是一款效果非常炫酷的基于TweenMax和SVG的炫酷弹性进度条动画特效。该弹性进度条特效在点击触发按钮之后,按钮会变形为进度条,然后一个滑块在它上面滑动,就像重物滑过绳子的感觉,非常有创意。 在线演示 使用方法 该弹性进度条效…...
机器视觉工程师如何看机器视觉展会,有些机器视觉兄弟参加机器视觉展会,真的是参加了?重在参与?
作为机器视觉工程师,参加机器视觉展会不仅是了解行业前沿技术的窗口,也是拓展专业网络、寻找解决方案的重要机会。以下是结合展会信息和工程师视角的综合建议: 一、聚焦技术趋势与创新应用 参与技术论坛与研讨会 展会同期的技术论坛是获取行业洞见的核心渠道。例如: 上海展…...
【例6.5】活动选择(信息学奥赛一本通-1323)
【题目描述】 学校在最近几天有n个活动,这些活动都需要使用学校的大礼堂,在同一时间,礼堂只能被一个活动使用。由于有些活动时间上有冲突,学校办公室人员只好让一些活动放弃使用礼堂而使用其他教室。 现在给出n个活动使用礼堂的起…...
ngrep :网络嗅探的利器
在网络安全、渗透测试和系统调试领域,捕获和分析网络流量是不可或缺的技能。虽然像 tcpdump 和 Wireshark 这样的工具广为人知,但有一个轻量级且功能强大的工具却常常被忽视——ngrep。本文将详细介绍 ngrep 的功能、使用方法及其在实际场景中的应用&…...
HCIE是否必须培训?
一、官方政策:不强制培训,但实操门槛高 根据华为认证官网最新规定,HCIE考试不强制要求参加官方培训,考生可直接报名。但需注意以下隐性门槛: 实验环境限制: HCIE实验考试涉及 真机操作(如CE交换…...
python面试高频考点(深度学习大模型方向)
1. python中yeild和return的区别? 2. 介绍一下pytohn中的上下文管理器? 在Python中,上下文管理器(Context Manager) 是一种通过 with 语句管理资源的协议,确保资源(如文件、数据库连接、线程锁…...
六、重学C++—深入探索new delete
上一章节: 五、重学C—类(封装继承)-CSDN博客https://blog.csdn.net/weixin_36323170/article/details/146458436?spm1001.2014.3001.5502 本章节代码: cpp CuiQingCheng/cppstudy - 码云 - 开源中国https://gitee.com/cuiqingcheng/cppstudy/tree/m…...
西门子200smart之modbus_TCP(做主站与第三方设备)通讯
西门子200smart做MODBUS_TCP主站通讯,只有一个指令。设置相关参数即可完成读写操作。整 个过程非常复杂,操作非常严谨。此次,我们使用汇川EASY系列PLC做从站,完成演示。关于汇川案例的演示,详见汇川EASY系列之以太网通讯(MODBUS_TCP做从站)-CSDN博客 关于主站和从站的介…...
Unity代码热更新和资源热更新
知识点来源:人间自有韬哥在,hybridclr,豆包 目录 一、代码热更新1.代码热更新概述2.HybridCLR 二、资源热更新1.资源热更新概述2.AB包2.1.AB包的加载2.2.卸载AB包2.3.加载AB包依赖包2.4.获取MD52.5.生成对比文件2.6.更新AB包 3.Addressable3.1.AssetRef…...
C语言中的共同体(共用体)
一.共用体 1.应用场景: 一种数据可能有多种数据类型,因此我们可以使用共同体来定义这种数据 2.定义格式: union 共同体名字 {数据类型1 成员1;数据类型2 成员2;...数据类型n 成员n; } 3.简单案例: #include<stdio.h> …...
二叉搜索树的最近公共祖先 删除二叉搜索树中的节点 修剪二叉搜索树(Java)
二叉搜索树的最近公共祖先(Java) 重要结论:第一次遇到cur节点是数值在[q, p]区间中,那么cur就是q和p的最近公共祖先(闭区间是因为公共祖先可以是本身) (如果知道这个结论:本题就类似于给定二叉搜索树(BST&…...
于纷扰中寻静谧:正念观照的智慧之旅
在现代社会的快节奏浪潮中,我们仿若被裹挟前行的浮萍,生活的压力与信息的洪流冲刷着内心的宁静,焦虑与迷茫如影随形。而正念观照,恰似一叶扁舟,能引领我们在心灵的海洋中回归自我,探寻那片澄澈之境。 正念…...
Java并发编程面试汇总
Java并发编程 一、 基础概念1. 进程与线程的区别是什么?2. 创建线程的几种方式?3. 线程的生命周期(状态)有哪些?4. 什么是守护线程(Daemon Thread)?5. 线程优先级(Priori…...
计算机考研复试机试-考前速记
考前速记 知识点 1. 链表篇 1. 循环链表报数3,输出最后一个报数编号 #include <iostream> using namespace std;typedef struct Node {int no;struct Node* next; }Node, *NodeList;void createNodeListTail(NodeList&L, int n) {L (Node*)malloc(siz…...
环境评价分析中土地利用现状图的制作方法
在环境评价中,土地利用现状图是重要的基础图件,用于分析项目区域的土地利用类型、分布格局及其生态环境特征。 以下是制作土地利用现状图的详细步骤和方法: 一、前期准备工作 确定制图范围和比例尺 根据评价范围确定制图区域边界 常用比例…...
SpringMVC 请求处理详解
SpringMVC 是 Spring 框架中用于构建 Web 应用程序的模块,它基于 MVC(Model-View-Controller)设计模式,能够将业务逻辑、数据和显示分离,从而提高代码的可维护性和可扩展性。本文将详细介绍 SpringMVC 中请求处理的原理…...
编程题记录3
九宫幻方 题目链接:https://www.lanqiao.cn/problems/100/learning/?page1&first_category_id1&second_category_id3&tags%E7%9C%81%E8%B5%9B&tag_relationintersection 先旋转、镜像得到所有的情况,可以发现情况是可以暴力得出的。…...
sql语句给表添加一个递增列
SSMS–》视图-》数据库(表)-》新建查询 ALTER TABLE [表名] DROP COLUMN ID ALTER TABLE [表名] ADD ID INT IDENTITY(1,1)执行完以上操作,会在表的最后一列添加一个自增字段 接下来如何把最后一个字段放到第一个字段呢? 假如sqlserver 表test 有以下…...
Java面试黄金宝典10
1. Tomcat 的负载均衡方式 定义 Tomcat 的负载均衡是将客户端的请求均匀分配到多个 Tomcat 实例上,以提高系统的处理能力和可用性。常见的负载均衡方式有以下几种: 硬件负载均衡 原理:采用专门的硬件设备,如 F5 Big - IP、Cisco…...
vue java 实现大地图切片上传
文章目录 一、项目背景二、页面三、代码1.前端2.mock-i18n.js文件3.xx.js文件定义方法4.配置文件 application.properties5.后端方法 四、易错点易错点1:前端要进行分片切割,然后再分片上传。易错点2:后端配置文件要配置。易错点3:…...
