HTML5
HTML5是对HTML标准的第5次修订
HTML是超文本标记语言的简称,是为【网页创建和其它可在网页浏览器中所看到信息】而设计的一种标记性语言。
- H5优点:
- 跨平台使用
- 将互联网语义化,更好地被人类与机器所理解
- 降低了对浏览器的依赖,更好地支持各种媒体地嵌入
一些专业术语:
- www : world wide web 环球信息网,是基于超文本相互链接而成的全球性系统。管理着所有可通过互联网访问的、相互链接的资源。
- internet : 互联网是由网络与网络串连成的庞大的网络、这些网络以一组通用的协议相连。万维网是互联网所能提供的服务之一。
- W3C : 万维网联盟是web领域最具权威、最有影响力的国际中立性技术标准机构。
- HTTP : 超文本传输协议。提供访问超文本信息的功能。
- URL : URL是世界通用的给万维网上所有资源定位的定位系统。
- DNS : 域名系统。用户的IP地址与主机名相互转换的分布式数据库。
DOM介绍
DOM(Document Object Model,文档对象模型)是浏览器将 HTML/XML 文档解析为结构化对象的一种方式,允许程序(如 JavaScript)动态访问和操作页面内容。以下是详细解释:
一、DOM 的本质
-
核心概念:
- 树形结构:HTML 文档被解析为由节点(Node)构成的树形结构,每个元素、属性、文本都是树的节点。
- 编程接口:DOM 提供一组 API,允许开发者通过代码增删改查页面元素。
-
DOM 与 HTML 的关系:
- HTML 是静态源码:开发者编写的
.html
文件。 - DOM 是动态对象:浏览器解析 HTML 后生成的内存中的对象模型,会随用户操作或脚本动态变化。
- HTML 是静态源码:开发者编写的
二、DOM 的层级结构
DOM 分为多个层级标准:
-
Core DOM:
- 适用于所有结构化文档(如 XML、HTML)。
- 定义基础节点类型:
Element
(元素)、Attr
(属性)、Text
(文本)等。
-
HTML DOM:
- 针对 HTML 的扩展,提供更便捷的接口。
- 例如:
document.getElementById()
、element.innerHTML
等方法。
-
其他扩展:
- SVG DOM:操作 SVG 图形的接口。
- CSSOM(CSS 对象模型):操作 CSS 样式。
三、DOM 树的结构示例
DOM 是 Web 开发的核心,理解其原理和操作方法是构建动态页面的基础。 以简单 HTML 为例:
html
代码解读
复制代码
<html> <head> <title>页面标题</title> </head> <body> <h1 id="header">Hello</h1> <p class="text">示例段落</p> </body> </html>
对应的 DOM 树结构:
xml
代码解读
复制代码
document ├─ <html> ├─ <head> │ └─ <title> │ └─ "页面标题"(文本节点) └─ <body> ├─ <h1 id="header"> │ └─ "Hello"(文本节点) └─ <p class="text"> └─ "示例段落"(文本节点)
四、通过 JavaScript 操作 DOM 的常见方法:
1. 访问元素
javascript
代码解读
复制代码
const header = document.getElementById("header"); const texts = document.getElementsByClassName("text"); const paragraphs = document.getElementsByTagName("p"); const element = document.querySelector("#header"); // 单个元素 const elements = document.querySelectorAll(".text"); // 所有匹配元素
2. 修改内容与属性
javascript
代码解读
复制代码
element.textContent = "新内容"; // 安全(不解析 HTML) element.innerHTML = "<strong>加粗</strong>"; // 解析 HTML(需防 XSS 攻击) element.setAttribute("class", "new-class"); // 设置属性 const value = element.getAttribute("id"); // 获取属性
3. 增删元素、插入元素、事件监听
javascript
代码解读
复制代码
const newDiv = document.createElement("div"); newDiv.textContent = "新创建的 div"; parentElement.appendChild(newDiv); // 末尾插入 parentElement.insertBefore(newDiv, referenceElement); // 指定位置插入 parentElement.removeChild(elementToRemove); button.addEventListener("click", () => { console.log("按钮被点击!"); });
五、DOM 与 BOM 的区别
- DOM:操作文档内容(HTML/XML)。
- BOM(Browser Object Model):操作浏览器窗口,如:
window
:代表浏览器窗口。navigator
:浏览器信息(如用户代理)。location
:当前页面 URL。history
:浏览历史记录。
六、DOM 性能优化
-
减少 DOM 操作:
- 频繁修改 DOM 会导致重排(Reflow)和重绘(Repaint),影响性能。
- 优化方法:批量修改(如使用
DocumentFragment
)或离线操作。
-
事件委托:
- 利用事件冒泡,将事件监听绑定到父元素,而非多个子元素。
javascript
代码解读
复制代码
document.getElementById("list").addEventListener("click", (e) => { if (e.target.tagName === "LI") { console.log("点击了列表项:", e.target.textContent); } });
七、DOM 的现代应用
-
虚拟 DOM(如 React、Vue):
- 在内存中维护轻量级的 DOM 副本,通过对比差异最小化真实 DOM 操作。
-
Shadow DOM:
- 用于 Web Components,创建封装的 DOM 子树(如自定义组件),避免样式冲突。
八、常见问题
-
为什么 DOM 操作慢?
浏览器渲染引擎(如 WebKit)需要重新计算布局和样式,频繁操作会阻塞主线程。 -
XSS 攻击与 DOM?
通过innerHTML
插入未验证的内容可能导致脚本注入,需使用textContent
或转义处理。
H5结构
html
代码解读
复制代码
<!DOCTYPE html> <!-- 这是H5文件的申明方式,便于浏览器理解HTML版本,正确解析 --!> <html> <head> <!-- 页面不显示该区域内容,用于引入资源,设置与定义,seo优化等 --!> <meta /> <!-- 在h5文档中模拟 HTTP 协议的响应头报文,很重要,被搜索引擎用于检索网页,用于原始声明> <script src = "main.js" /> <!-- 引入脚本文件 --!> <link rel = "stylesheet" type = "text/css" href = 'style.css' /> <!-- 定义文档与外部资源的关系、引入 css 样式文件、图片等 --!> </head> <body> <!-- 用于显示页面的内容 --!> <header /> <!--显示页面的头部区域,标题版权等--!> <nav /> <!--代表页面的导航区域!--> <article> <!--代表页面的文章区域/主要内容--!> <section /> <!-- 段落、某一节、部分 --!> </article> <aside /> <!-- 页面的侧边栏--!> <footer /> <!-- 页脚区域、页面的底部区域--> </body> </html>
网站的SEO优化
SEO(Search Engine Optimization,搜索引擎优化)是通过技术、内容和策略优化,提升网站在搜索引擎自然(非付费)搜索结果中的排名,从而获得更多目标流量的方法。以下是 SEO 的全面解析:
一、SEO 的核心目标
- 提升排名:让目标关键词在搜索结果中更靠前(如进入 Google 或百度首页)。
- 增加流量:通过高排名吸引更多用户点击访问。
- 精准触达:匹配用户搜索意图,吸引有潜在需求的用户。
二、搜索引擎如何工作?
SEO 优化的前提是理解搜索引擎的基本流程:
- 爬取(Crawling)
搜索引擎蜘蛛(Spider)遍历互联网,抓取网页内容。 - 索引(Indexing)
将抓取的页面存储到数据库,分析内容、关键词、链接等。 - 排名(Ranking)
根据算法(如 Google 的 PageRank)评估页面质量,决定搜索结果排序。
三、SEO 的主要类型
1. 技术 SEO(Technical SEO)
优化网站基础架构,确保搜索引擎能高效抓取和索引:
- 网站速度:压缩图片、启用缓存(如 CDN)、减少重定向。
- 移动友好:响应式设计,适配手机端(Google 优先索引移动版)。
- 结构化数据:使用 Schema 标记,增强搜索结果展示(如评分、价格)。
- Robots.txt 和 Sitemap:控制爬虫访问路径,提交站点地图。
- HTTPS 安全协议:提升网站可信度(Google 将其作为排名因素)。
2. 内容 SEO(On-Page SEO)
优化页面内容,匹配用户搜索意图:
- 关键词研究:使用工具(Google Keyword Planner、Ahrefs)挖掘高价值关键词。
- 示例:主关键词“健身教程”,长尾词“新手居家健身教程”。
- 标题(Title)与描述(Meta Description):包含关键词,吸引点击。
html
代码解读
复制代码
<title>新手居家健身教程 | 30天塑形计划 - 健康网</title> <meta name="description" content="零基础新手居家健身指南,每日30分钟,30天高效塑形,免费跟练视频...">
- 内容质量:提供原创、深度、可读性强的信息(如教程、评测、案例)。
- 内部链接:合理链接相关页面(如文章中添加“饮食搭配”的链接)。
3. 外链建设(Off-Page SEO)
通过外部网站提升自身权威性:
- 高质量外链:获取权威网站(如行业媒体、教育机构)的推荐链接。
- 社交媒体传播:内容在社交平台分享,间接提升搜索权重。
- 品牌提及(Brand Mention):即使无链接,品牌名被多次提及也可提升可信度。
4. 本地 SEO(Local SEO)
针对本地商户的优化:
- Google 我的商家(Google My Business):完善商家信息(地址、电话、营业时间)。
- 本地关键词:如“北京朝阳区咖啡厅推荐”。
- 在线评价:鼓励用户留下好评(高评分提升本地排名)。
四、SEO 工具推荐
工具 | 用途 |
---|---|
Google Analytics | 分析流量来源、用户行为 |
Google Search Console | 监控索引状态、关键词表现 |
Ahrefs/SEMrush | 关键词研究、外链分析、竞品跟踪 |
Screaming Frog | 技术SEO检测(死链、重复内容) |
Yoast SEO | WordPress 站内SEO优化插件 |
五、SEO 的常见误区
- 堆砌关键词:过度重复关键词会被判定为“作弊”,导致降权。
- 忽视用户体验:内容低质或弹窗过多会提高跳出率,影响排名。
- 忽略移动端:移动端体验差直接导致排名下降。
- 追求快速排名:黑帽SEO(如购买外链、隐藏文本)可能导致网站被惩罚。
六、SEO 与 SEM 的区别
SEO | SEM(搜索引擎营销) | |
---|---|---|
流量类型 | 自然流量(免费) | 付费广告(如 Google Ads) |
见效速度 | 慢(需持续优化,3-6个月起效) | 快(立即展示) |
长期成本 | 低(维护成本为主) | 高(需持续投放广告) |
七、SEO 的未来趋势
- AI 与语义搜索:搜索引擎更注重内容语义(如回答用户问题,而非单纯匹配关键词)。
- 语音搜索优化:针对自然语言提问(如“附近的健身房在哪里?”)优化内容。
- E-A-T 原则:Google 强调内容专业性(Expertise)、权威性(Authority)、可信度(Trustworthiness)。
八、如何开始 SEO 优化?
- 诊断网站:使用工具分析现有问题(速度、死链、关键词覆盖)。
- 制定策略:选择目标关键词,规划内容和技术优化步骤。
- 持续监测:定期跟踪排名、流量变化,调整优化方向。
🔗 <link>
标签详解
✅ 作用:
<link>
标签用于定义文档与外部资源之间的关系,最常见的用途是引入外部 CSS 样式表。它通常放在 <head>
标签内。
📌 基本语法:
ini
代码解读
复制代码
html 复制编辑 <link rel="stylesheet" href="style.css">
🧠 常见用途:
用途 | 示例 |
---|---|
引入 CSS | <link rel="stylesheet" href="style.css"> |
设置网站图标 | <link rel="icon" href="favicon.ico" type="image/x-icon"> |
使用网页字体 | <link href="https://fonts.googleapis.com/css?family=Roboto" rel="stylesheet"> |
引入 RSS Feed | <link rel="alternate" type="application/rss+xml" title="RSS" href="/rss.xml"> |
🔧 常用属性:
属性名 | 描述 |
---|---|
rel | 描述与目标资源的关系,如 stylesheet 、icon 、alternate 等 |
href | 目标资源的 URL(即链接地址) |
type | MIME 类型,如 text/css 、image/x-icon 、application/rss+xml 等 |
media | 适用的媒体类型(如 screen 、print 、all ) |
sizes | 图标尺寸,常用于 <link rel="icon"> |
在 HTML 中,<meta>
元素用于定义网页的元数据(metadata),这些数据不会直接显示在页面上,但会为浏览器、搜索引擎和其他网络服务提供关键信息。以下是 <meta>
元素的全面解析:
一、<meta>
元素的核心作用
- 描述页面信息
提供字符编码、页面描述、关键词、作者等信息。 - 控制浏览器行为
如设置视口(viewport)、页面刷新/重定向、兼容性模式等。 - 辅助搜索引擎优化(SEO)
通过元标签提升网页在搜索结果中的展示效果。
二、<meta>
元素的基本语法
html
代码解读
复制代码
<meta 属性名="属性值" 内容>
- 无闭合标签:
<meta>
是空元素,无需闭合(如<meta ...>
)。 - 常用属性:
charset
:定义文档字符编码。name
+content
:定义元数据名称及其内容。http-equiv
:模拟 HTTP 头部的功能(如缓存控制、重定向)。
三、常见的 <meta>
标签类型及用途
1. 基础元数据
- 字符编码声明(必须放在
<head>
顶部):html
代码解读
复制代码
<meta charset="UTF-8">
- 页面描述(影响 SEO 和搜索结果展示):
html
代码解读
复制代码
<meta name="description" content="这是一个关于前端开发的教程网站...">
- 关键词(早期 SEO 重要,现代搜索引擎权重降低):
html
代码解读
复制代码
<meta name="keywords" content="HTML, CSS, JavaScript, 前端开发">
- 作者信息:
html
代码解读
复制代码
<meta name="author" content="张三">
2. 控制浏览器行为
- 视口设置(适配移动端,响应式设计必备):
html
代码解读
复制代码
<meta name="viewport" content="width=device-width, initial-scale=1.0">
width=device-width
:视口宽度与设备宽度一致。initial-scale=1.0
:初始缩放比例为 1。
- 页面刷新/重定向(慎用,可能影响用户体验):
html
代码解读
复制代码
<!-- 5秒后跳转到指定URL --> <meta http-equiv="refresh" content="5; url=https://example.com">
- 兼容性模式(强制 IE 使用最新渲染引擎):
html
代码解读
复制代码
<meta http-equiv="X-UA-Compatible" content="IE=edge">
3. SEO 优化相关
- 禁止搜索引擎索引:
html
代码解读
复制代码
<meta name="robots" content="noindex, nofollow">
noindex
:禁止索引当前页面。nofollow
:禁止跟踪页面上的链接。
- 版权声明:
html
代码解读
复制代码
<meta name="copyright" content="版权所有 © 2023 示例公司">
- 生成式 AI 内容标记(针对 AI 爬虫):
html
代码解读
复制代码
<meta name="ai_generator" content="ChatGPT">
4. 社交媒体优化
- Open Graph 协议(Facebook、LinkedIn 等分享时显示富媒体卡片):
html
代码解读
复制代码
<meta property="og:title" content="页面标题"> <meta property="og:description" content="页面描述"> <meta property="og:image" content="https://example.com/image.jpg"> <meta property="og:url" content="https://example.com">
- Twitter Cards(Twitter 分享优化):
html
代码解读
复制代码
<meta name="twitter:card" content="summary_large_image"> <meta name="twitter:site" content="@username"> <meta name="twitter:title" content="页面标题"> <meta name="twitter:description" content="页面描述"> <meta name="twitter:image" content="https://example.com/image.jpg">
四、<meta>
标签的注意事项
- 避免重复或冲突
同一页面中不要重复定义相同的元数据(如多个description
)。 - 合理控制长度
description
建议 150-160 字符,过长会被搜索引擎截断。keywords
建议不超过 10 个关键词,避免堆砌。
- 移动端适配必选
缺少viewport
设置可能导致移动端布局错乱。 - 谨慎使用重定向
自动跳转可能被搜索引擎视为“诱导跳转”而惩罚。
五、示例:完整的 <meta>
标签集合
html
代码解读
复制代码
<head> <!-- 基础元数据 --> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="description" content="一个专注于前端开发技术的教程网站"> <meta name="keywords" content="HTML, CSS, JavaScript, 前端框架"> <meta name="author" content="李四"> <!-- 社交媒体优化 --> <!-- Open Graph --> <meta property="og:title" content="前端开发教程 | 示例网"> <meta property="og:image" content="https://example.com/og-image.png"> <!-- Twitter --> <meta name="twitter:card" content="summary_large_image"> <!-- 浏览器兼容性 --> <meta http-equiv="X-UA-Compatible" content="IE=edge"> </head>
六、高级应用
- 主题颜色设置(浏览器地址栏颜色):
html
代码解读
复制代码
<meta name="theme-color" content="#4285f4">
- PWA 应用支持:
html
代码解读
复制代码
<meta name="apple-mobile-web-app-capable" content="yes"> <meta name="apple-mobile-web-app-status-bar-style" content="black">
重要内容 H5所有的元素
块级元素(占据一整行):
1、标题元素 : h1 / -> h6 /
2、段落元素 : p /
3、ul、ol、dl : 列表: 无序、有序、自定义 dl
dt /dt
dd /dd
/dl
4、 div容器
5、 table
内联元素 :
1、图像元素 : img / 属性:src=>指明图片位置 alt/title(兼容性更强)=>图片显示失败时显示的文本。
2、a元素 : a / 属性href => 外部网址链接
3、span元素
4、video元素:放视频
5、audio元素:播放音乐
vido/audio 均要配合source元素来引入视频/音频文件
html
代码解读
复制代码
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name ="keyword" content = " 多媒体类元素元素示例"> <meta name = "description" content = " 多媒体类元素元素示例"> <meta name = "author" content = "吴永琦"> <meta http-equiv="Content-Language" content = "zh-CN"> </head> <body> <header> <h2> 多媒体类元素元素示例 </h2> <h3> 作者 : 吴永琦 </h3> </header> <nav> <button>1</button> <button>2</button> <button>3</button> </nav> <aside> <button>4</button> <button>5</button> <button>6</button> </aside> <article> <section> <p>江南MV</p> <video controls="controls" width="500" height="500"> <source src="./video/江南MV.mp4" type = "video/mp4"> </video> </section> <section> <p>爱你没差</p> <audio controls> <source src ="./audio/爱你没差.mp3" type = "audio/mp3"> </audio> </section> </article> <footer> 日期:2025-4-6 </footer> </body> </html>
table元素
html
代码解读
复制代码
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name ="keyword" content = "表单元素示例"> <meta name = "description" content = "表单元素的演示示例"> <meta name = "author" content = "吴永琦"> <meta http-equiv="Content-Language" content = "zh-CN"> </head> <body> <header> <h2> 表单元素示例 </h2> <h3> 作者 : 吴永琦 </h3> </header> <nav> <button>1</button> <button>2</button> <button>3</button> </nav> <aside> <button>4</button> <button>5</button> <button>6</button> </aside> <article> <section> <table width = "500" border = "2"> <!--表元素--> <caption> <!--表标题元素--> 核算检测登记表 </caption> <tr> <!--表行元素--> <th> <!--表头块元素--> 检测人 </th> <th> 日期 </th> <th> 医院 </th> </tr> <tr> <td> 张三 </td> <td> 2020年8月3日 </td> <td> 北京市人民医院 </td> </tr> <tr> <td> 李四 </td> <td> 2020年8月10日 </td> <td> 北京市人民医院 </td> </tr> <tr> <td> 王五 </td> <td> 2020年8月9日 </td> <td> 南京市人民医院 </td> </tr> </table> </section> </article> <footer> 日期:2025-4-6 </footer> </body> </html>
charset设置的编码详解
字符编码是将字符映射为计算机可识别二进制数据的方式,常见的编码方案如下:
一、基础编码
-
ASCII(1963)
- 7位编码,共128个字符(0-127),包含英文、数字、基础符号及控制字符。
- 局限性:仅支持英文,无法表示其他语言字符。
-
扩展ASCII(8位编码)
- 如 ISO 8859 系列(Latin-1到Latin-16):
- ISO-8859-1(Latin-1):支持西欧语言(法语、西班牙语等)。
- ISO-8859-5:支持西里尔字母(俄语)。
- 每个编码覆盖特定语言区域,但互不兼容。
- 如 ISO 8859 系列(Latin-1到Latin-16):
二、Unicode 编码
Unicode 是覆盖全球字符的统一标准,包含超过14万个字符,主要编码方式有:
-
UTF-8(变长,1-4字节)
- 兼容 ASCII,英文占1字节,中文占3字节。
- 互联网主流编码(HTML、JSON、XML等默认使用)。
-
UTF-16(变长,2或4字节)
- 定长2字节(BMP字符)或4字节(扩展字符)。
- 用于系统内部(如Windows API、Java/C#字符串)。
-
UTF-32(定长,4字节)
- 每个字符固定4字节,空间效率低,但处理方便。
- 多用于文本处理工具或内存操作。
三、地区性编码
-
中文编码
- GB2312(1980):简体中文基础编码(6763个汉字)。
- GBK(1995):扩展GB2312,支持繁体及生僻字(21886字)。
- GB18030(2000):兼容GBK,支持少数民族文字及Unicode。
- Big5:繁体中文(台湾、香港地区常用)。
-
日文编码
- Shift_JIS:微软日文系统常用。
- EUC-JP:Unix系统常用。
-
韩文编码
- EUC-KR:韩文字符编码标准。
四、其他编码
-
Windows代码页
- 如 CP1252(西欧语言)、CP936(简体中文GBK)。
-
历史编码
- EBCDIC:IBM大型机专用编码。
- KOI8-R:俄语旧编码。
-
传输编码
- Base64:将二进制转为ASCII文本,用于邮件或HTTP传输。
五、编码选择建议
- 优先使用 UTF-8:兼容性强,跨语言支持完善。
- 处理旧文件:需根据地区选择对应编码(如GBK、Big5)。
- 避免乱码:确保文件保存、传输、解析时编码一致。
新媒体元素详解
HTML 的 <video>
和 <audio>
元素用于在网页中嵌入和控制多媒体内容(视频和音频)。以下是它们的详细解析,涵盖基本用法、属性、方法、事件及实际应用。通过合理使用 <video>
和 <audio>
元素,结合 JavaScript 控制,可以创建高度定制化的多媒体体验。注意平衡功能与性能,确保跨平台兼容性和无障碍访问。 示例:
一、<video>
元素
1. 基础语法
html
代码解读
复制代码
<video controls width="600" poster="thumbnail.jpg"> <source src="video.mp4" type="video/mp4"> <source src="video.webm" type="video/webm"> 您的浏览器不支持视频播放。 </video>
controls
:显示默认播放控件(播放/暂停、音量、全屏等)。width
/height
:设置视频显示尺寸(建议只设置一个以保持比例)。poster
:视频加载前显示的封面图。<source>
:提供多个视频源格式,浏览器选择第一个支持的格式。- 后备内容:若浏览器不支持
<video>
,显示内部文本或备用内容。
2. 关键属性
属性 | 说明 |
---|---|
autoplay | 自动播放(注意:多数浏览器会限制自动播放,需结合 muted 使用) |
muted | 静音播放 |
loop | 循环播放 |
preload | 预加载策略:auto (全部加载)、metadata (仅元数据)、none (不加载) |
playsinline | 在移动端内联播放(避免全屏播放) |
3. JavaScript 控制方法
通过获取视频对象调用方法:
javascript
代码解读
复制代码
const video = document.querySelector('video'); video.play(); // 播放 video.pause(); // 暂停 video.load(); // 重新加载 video.canPlayType('video/mp4'); // 检查是否支持某格式
4. 常用事件
javascript
代码解读
复制代码
video.addEventListener('play', () => console.log('视频开始播放')); video.addEventListener('ended', () => console.log('视频播放结束')); video.addEventListener('timeupdate', () => { console.log('当前播放时间:', video.currentTime); }); video.addEventListener('error', (e) => { console.error('视频加载错误:', video.error.message); });
5. 格式兼容性
建议提供多个格式覆盖所有浏览器:
- MP4 (H.264):广泛支持(Chrome、Safari、Edge)。
- WebM:开源格式(Chrome、Firefox、Edge)。
- Ogg:旧版 Firefox 支持。
二、<audio>
元素
1. 基础语法
html
代码解读
复制代码
<audio controls> <source src="audio.mp3" type="audio/mpeg"> <source src="audio.ogg" type="audio/ogg"> 您的浏览器不支持音频播放。 </audio>
- 用法与
<video>
类似,但无width
、height
、poster
属性。
2. 关键属性
属性 | 说明 |
---|---|
autoplay | 自动播放(同样受浏览器策略限制) |
loop | 循环播放 |
preload | 预加载策略(同 <video> ) |
3. JavaScript 控制
方法与 <video>
一致:
javascript
代码解读
复制代码
const audio = document.querySelector('audio'); audio.play(); // 播放 audio.pause(); // 暂停
三、通用功能与技巧
1. 自定义播放控件
隐藏默认控件,通过 HTML + CSS + JavaScript 自定义:
html
代码解读
复制代码
<video id="myVideo" src="video.mp4"></video> <div class="custom-controls"> <button onclick="togglePlay()">▶️</button> <input type="range" id="seekBar" min="0" max="100" step="1"> </div> <script> function togglePlay() { const video = document.getElementById('myVideo'); video.paused ? video.play() : video.pause(); } </script>
2. 响应式设计
通过 CSS 确保视频适配容器:
css
代码解读
复制代码
video { max-width: 100%; height: auto; }
3. 字幕与轨道
为视频添加字幕(WebVTT 格式):
html
代码解读
复制代码
<video controls> <source src="video.mp4" type="video/mp4"> <track src="subtitles-en.vtt" kind="subtitles" srclang="en" label="English"> <track src="subtitles-zh.vtt" kind="subtitles" srclang="zh" label="中文"> </video>
4. 性能优化
- 懒加载:使用
loading="lazy"
或 Intersection Observer API 延迟加载。 - 预加载关键帧:设置
preload="metadata"
减少初始加载时间。
四、兼容性与最佳实践
1. 浏览器兼容性
<video>
:所有现代浏览器支持 MP4,但需注意旧版浏览器(如 IE9 以下不支持)。<audio>
:MP3 格式广泛支持,Ogg 适用于 Firefox 旧版本。
2. 移动端适配
- 自动播放限制:iOS 和 Android 通常禁止自动播放,需用户主动触发。
- 内联播放:iOS 默认全屏播放,需添加
playsinline
属性。
3. 无障碍访问
- 键盘控制:确保自定义控件可通过键盘操作(如空格键播放/暂停)。
- ARIA 标签:为控件添加
aria-label
描述。
五、常见问题与解决
-
视频无法播放
- 检查格式兼容性,提供多格式源文件。
- 确保服务器正确配置 MIME 类型(如
.mp4
对应video/mp4
)。
-
自动播放失败
- 添加
muted
属性,并在用户交互后触发播放:javascript
代码解读
复制代码
document.addEventListener('click', () => video.play());
- 添加
-
全屏播放问题
- 使用
requestFullscreen()
方法手动控制:javascript
代码解读
复制代码
video.requestFullscreen();
- 使用
六、示例:完整的多媒体播放器
html
代码解读
复制代码
<video id="player" width="800" controls> <source src="video.mp4" type="video/mp4"> <track src="subtitles.vtt" kind="subtitles" srclang="zh" label="中文"> </video> <div class="controls"> <button onclick="togglePlay()">播放/暂停</button> <input type="range" id="volume" min="0" max="1" step="0.1" value="1" onchange="setVolume(this.value)"> </div> <script> const video = document.getElementById('player'); function togglePlay() { video.paused ? video.play() : video.pause(); } function setVolume(value) { video.volume = value; } </script>
相关文章:
HTML5
HTML5是对HTML标准的第5次修订 HTML是超文本标记语言的简称,是为【网页创建和其它可在网页浏览器中所看到信息】而设计的一种标记性语言。 H5优点:跨平台使用将互联网语义化,更好地被人类与机器所理解降低了对浏览器的依赖,更好地…...
算法—博弈问题
1.博弈问题 1.前提:每一步都是最优解的情况下,先手的那个人已经确定了胜负 用dp数组记录每一步操作后的结果,如果下一步会出现必输结果,那么说明执行这步操作的人必胜,因为必输结果的下一步操作后都是必胜的结果,所以在…...
vector模拟实现(2)
1.构造函数 2.拷贝构造 我们利用push_back和reserve来实现拷贝构造。 3.迭代器的实现 由于底层是一段连续的空间,所以我们选择用指针来实现迭代器。 4.swap 这里的swap函数是有两种方法,一种是开辟一段新的空间,然后memcpy来把原来的数据拷…...
【嵌入式系统设计师】知识点:第3章 嵌入式硬件设计
提示:“软考通关秘籍” 专栏围绕软考展开,全面涵盖了如嵌入式系统设计师、数据库系统工程师、信息系统管理工程师等多个软考方向的知识点。从计算机体系结构、存储系统等基础知识,到程序语言概述、算法、数据库技术(包括关系数据库、非关系型数据库、SQL 语言、数据仓库等)…...
输入框输入数字且保持精度
在项目中如果涉及到金额等需要数字输入且保持精度的情况下,由于输入框是可以随意输入文本的,所以一般情况下可能需要监听输入框的change事件,然后通过正则表达式去替换掉不匹配的文本部分。 由于每次文本改变都会被监听,包括替换…...
Vue3中的Inject用法全解析
大家好呀~今天给大家带来一个超级实用的Vue3技巧:如何使用inject进行组件间的通信!如果你对组件间的数据传递、事件触发感兴趣,那一定不要错过这篇文章哦!话不多说,直接开整~ 🌟 什么…...
FPGA同步复位、异步复位、异步复位同步释放仿真
FPGA同步复位、异步复位、异步复位同步释放仿真 xilinx VIVADO仿真 行为仿真 综合后功能仿真,综合后时序仿真 实现后功能仿真,实现后时序仿真 目录 前言 一、同步复位 二、异步复位 三、异步复位同步释放 总结 前言 本文将详细介绍FPGA同步复位、异…...
深度解析需求分析:理论、流程与实践
深度解析需求分析:理论、流程与实践 一、需求分析的目标(一)准确捕捉用户诉求(二)为开发提供清晰指引 二、需求分析流程(一)需求获取(二)需求整理(三…...
QT学习笔记4--事件
1. 鼠标事件 1.1 鼠标按下 QObject中的mousePressEvent()方法 在子类中重写该方法,就可以处理鼠标按下 void myLabel::mousePressEvent(QMouseEvent *ev) {if (ev->button() Qt::LeftButton) {QString str QString("mouse press x %1, y %2").…...
AnimateCC基础教学:json数据结构的测试
一.核心代码: const user1String {"name": "张三", "age": 30, "gender": "男"}; const user1Obj JSON.parse(user1String); console.log("测试1:", user1Obj.name, user1Obj.age, user1Obj.gender);/*const u…...
针对Qwen-Agent框架的源码阅读与解析:FnCallAgent与ReActChat篇
在《针对Qwen-Agent框架的Function Call及ReAct的源码阅读与解析:Agent基类篇》中,我们已经了解了Agent基类的大体实现。这里我们就再详细学习一下FnCallAgent类和ReActChat的实现思路,从而对Agent的两条主流技术路径有更深刻的了解。同时&am…...
在docker中安装RocketMQ
第一步你需要有镜像包,这个2023年的时候docker就不能用pull拉取镜像了,需要你自己找 第二步我用的是FinalShell,用别的可视化界面也用, 在你自己平时放镜像包的地方创建一个叫rocketmq的文件夹,放入镜像包后,创建一个…...
Spring Boot + Kafka 消息队列从零到落地
背景 依赖 <dependency> <groupId>org.springframework.kafka</groupId> <artifactId>spring-kafka</artifactId> <version>2.8.1</version> </dependency> 发送消息 //示例: private final KafkaTemplate<St…...
《打破语言壁垒:bilingual_book_maker 让外文阅读更轻松》
在寻找心仪的外文电子书时,常常会因语言障碍而感到困扰。虽然可以将文本逐段复制到在线翻译工具中,但这一过程不仅繁琐,还会打断阅读的连贯性,让人难以沉浸其中。为了克服这一难题,我一直在寻找一种既能保留原文&#…...
JCR一区文章,壮丽细尾鹩莺算法Superb Fairy-wren Optimization-附Matlab免费代码
本文提出了一种新颖的基于群体智能的元启发式优化算法——壮丽细尾鹩优化算法(SFOA),SFOA从精湛的神仙莺的生活习性中汲取灵感。融合了精湛的神仙莺群体中幼鸟的发育、繁殖后鸟类喂养幼鸟的行为以及它们躲避捕食者的策略。通过模拟幼鸟生长、繁殖和摄食阶…...
Kafka 如何实现 Exactly Once
Kafka 中实现 Exactly Once Semantics(EOS,精确一次语义),是为了确保: 每条消息被处理一次且仅一次,既不会丢失,也不会重复消费。 这是一种在分布式消息系统中非常难实现的语义。Kafka 从 0.11 …...
在K8S中,内置的污点主要有哪些?
在Kubernetes (K8S)中,内置的污点(Taints)主要用于自动化的节点亲和性和反亲和性管理。当集群中的节点出现某种问题或满足特定条件时,kubelet会自动给这些节点添加内置污点。以下是一些常见的内置污点: node.kubernete…...
AI大模型:(二)2.1 从零训练自己的大模型概述
目录 1. 分词器训练 1.1 分词器概述 1.2 训练简述 2.预训练 2.1 预训练概述 2.2 预训练过程简介 3.微调训练 3.1 微调训练概述 3.2 微调过程简介 4.人类对齐 4.1 人类对齐概述 4.2 人类对齐训练过程简介 近年来,大语言模型(LLM)如GPT-4、Claude、LLaMA等…...
电动垂直起降飞行器(eVTOL)
电动垂直起降飞行器(eVTOL)的详细介绍,涵盖定义、技术路径、应用场景、市场前景及政策支持等核心内容: 一、定义与核心特性 eVTOL(Electric Vertical Take-off and Landing)即电动垂直起降飞行器…...
LM Studio本地部署大模型
现在的AI可谓是火的一塌糊涂, 看到使用LM Studio部署本地模型非常的方便, 于是我也想在自己的本地试试 LM Studio 简介 LM Studio 是一款专为本地运行大型语言模型(LLMs)设计的桌面应用程序,支持 Windows 和 macOS 系统。它允许用户在个人电…...
PyTorch 深度学习 || 6. Transformer | Ch6.1 Transformer 框架
1. Transformer 框架...
SLAM文献之-SLAMesh: Real-time LiDAR Simultaneous Localization and Meshing
SLAMesh 是一种基于 LiDAR 的实时同步定位与建图(SLAM)算法,其核心创新点在于将定位与稠密三维网格重建相结合,通过动态构建和优化多边形网格(Mesh)来实现高精度定位与环境建模。以下是其算法原理的详细解析…...
[Python] 位置相关的贪心算法-刷题+思路讲解版
位置贪心-题目目录 例题1 - 香蕉商人编程实现输入描述输出描述思路AC代码 例题2 - 分糖果编程实现输入描述输入样例输出样例思路AC代码 例题4 - 分糖果II编程实现输入描述输出描述输入样例思路AC代码 例题3 - 分糖果III编程实现输入描述输出描述输入样例输出样例思路AC代码 例题…...
练习题:125
目录 Python题目 题目 题目分析 需求理解 关键知识点 实现思路分析 代码实现 代码解释 导入 random 模块: 指定范围: 生成随机整数: 输出结果: 运行思路 结束语 Python题目 题目 生成一个指定范围内的随机整数。 …...
实战设计模式之迭代器模式
概述 与上一篇介绍的解释器模式一样,迭代器模式也是一种行为设计模式。它提供了一种方法来顺序访问一个聚合对象中的各个元素,而无需暴露该对象的内部表示。简而言之,迭代器模式允许我们遍历集合数据结构中的元素,而不必了解这些集…...
Spring-AOP详解(AOP概念,原理,动态代理,静态代理)
目录 什么是AOP:Spring AOP核心概念需要先引入AOP依赖:1.切点(Pointcut):2.连接点:3.通知(Advice):4.切面: 通知类型:Around:环绕通知,此注解标注的通知方法在目标方法前,…...
【dify应用】将新榜排行数据免费保存到飞书表格
新榜中导出数据是收费的,如何免费导出呢 接口分析 切换分类排行,数据是在这个接口中请求的 参数: {"rankType":1,"rankDate":"2025-04-05","type":["财富"],"size":25,"…...
【Linux】线程池详解及基本实现
📢博客主页:https://blog.csdn.net/2301_779549673 📢博客仓库:https://gitee.com/JohnKingW/linux_test/tree/master/lesson 📢欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正! &…...
基于论文的大模型应用:基于SmartETL的arXiv论文数据接入与预处理(一)
1. 背景 arXiv简介(参考DeepSeek大模型生成内容): arXiv(发音同“archive”,/ˈɑːrkaɪv/)是一个开放的学术预印本平台,主要用于研究人员分享和获取尚未正式发表或已完成投稿的学术论文。创…...
Leetcode 3508. Implement Router
Leetcode 3508. Implement Router 1. 解题思路2. 代码实现 题目链接:3508. Implement Router 1. 解题思路 这一题就是按照题意写作一下对应的函数即可。 我们需要注意的是,这里,定义的类当中需要包含以下一些内容: 一个所有i…...
Nmap全脚本使用指南!NSE脚本全详细教程!Kali Linux教程!(六)
脚本类别 discovery(发现) sip-methods 已演示过。这里不再演示。 436. smb-enum-domains 尝试枚举系统上的域及其策略。这通常需要凭据,但 Windows 2000 除外。除了实际域之外,通常还会显示“内置”域。Windows 在域列表中返…...
了解适配器模式
目录 适配器模式定义 适配器模式角色 适配器模式的实现 适配器的应用场景 适配器模式定义 适配器模式,也叫包装模式。将一个类的接口,转换成客户期望的另一个接口,适配器让原本接口不兼容的类可以合作无间。 简单来说就是目标类不能直接…...
C语言:几种字符串常用的API
字符串的常用操作 C 语言的标准库 <string.h> 提供了很多用于处理字符串的函数。 1. strlen - 计算字符串长度 size_t strlen(const char *str);功能:计算字符串 str 的长度,不包含字符串结束符 \0。 2.strcpy - 复制字符串 char *strcpy(char…...
Django构建安全中间件实用示例
Django安全中间件实用指南 推荐超级课程: 本地离线DeepSeek AI方案部署实战教程【完全版】Docker快速入门到精通Kubernetes入门到大师通关课AWS云服务快速入门实战目录 Django安全中间件实用指南什么是Django中的中间件?Django中的安全中间件特性配置示例配置示例配置示例示…...
排序算法(快速排序,选择排序......)【泪光2929】
hello,大家好!今天给大家分享一下各种排序: 1,选择排序 首先从原始数组中 选择最小的1个数据,将其和位于第1个位置的数据交换。接着从剩下的n-1个数据中选择次小的1个元素,将其和第2个位置的数据交换然后…...
UE5学习记录part14
第17节 enemy behavior 173 making enemies move: AI Pawn Navigation 按P查看体积 So its very important that our nav mesh bounds volume encompasses all of the area that wed like our 因此,我们的导航网格边界体积必须包含我们希望 AI to navigate in and …...
树莓派llama.cpp部署DeepSeek-R1-Distill-Qwen-1.5B
树莓派的性能太低了,我们需要对模型进行量化才能使用,所以现在的方案是,在windows上将模型格式和量化处理好,然后再将模型文件传输到树莓派上。而完成上面的操作就需要部署llama.cpp。 三、环境的准备 这里要求大家准备…...
Llama 4 最新发布模型分析
1. 引言 在2025年4月5日,Meta公司正式发布了最新一代大型语言模型Llama 4系列,包括Llama 4 Scout和Llama 4 Maverick。该模型添加了多模态支持,能够处理文本、图像、音频和视频数据,实现更加充分的AI功能应用。 2. 技术特性 2.1…...
Llama 4 家族:原生多模态 AI 创新的新时代开启
0 要点总结 Meta发布 Llama 4 系列的首批模型,帮用户打造更个性化多模态体验Llama 4 Scout 是有 170 亿激活参数、16 个专家模块的模型,同类中全球最强多模态模型,性能超越以往所有 Llama 系列模型,能在一张 NVIDIA H100 GPU 上运…...
如何让eDrawings html文件在Chrome浏览器上展示——allWebPlugin中间件扩展
应用背景 eDrawing html文件是仅可在 Internet Explorer 5.5 和以上版本中查阅,由于IE浏览器限制,目前使用非常不方便,为了不修改html的请提下,在chrome浏览器查阅原本html文件,可使用安装allWebPlugin中间件扩展。 a…...
【内网安全】DHCP 饿死攻击和防护
正常情况:PC2可以正常获取到DHCP SERVER分别的IP地址查看DHCP SERCER 的ip pool地址池可以看到分配了一个地址、Total 253个 Used 1个 使用kali工具进行模拟攻击 进行DHCP DISCOVER攻击 此时查看DHCP SERVER d大量的抓包:大量的DHCP Discover包 此时模…...
keepalived高可用介绍
keepalived 是 Linux 一个轻量级的高可用解决方案,提供了心跳检测和资源接管、检测集群中的系统服务,在集群节点间转移共享IP 地址的所有者等。 工作原理 keepalived 通过 VRRP(virtual router redundancy protocol)虚拟路由冗余…...
基于大模型的脑梗死全流程诊疗技术方案
目录 《基于大模型的脑梗死全流程诊疗技术方案》一、核心算法实现1. 多模态特征融合算法(术前规划)2. 术中实时预警算法二、系统模块设计1. 术前规划系统流程图2. 术中实时监控系统架构三、技术验证方案1. 模型验证矩阵2. 实验验证设计四、关键技术创新点五、工程实现规范1. …...
ngx_timezone_update
定义在 src\os\unix\ngx_time.c void ngx_timezone_update(void) { #if (NGX_FREEBSD)if (getenv("TZ")) {return;}putenv("TZUTC");tzset();unsetenv("TZ");tzset();#elif (NGX_LINUX)time_t s;struct tm *t;char buf[4];s tim…...
Redis 热key问题怎么解决?
Redis 热 Key 问题分析与解决方案 热 Key(Hot Key)是指被高频访问的某个或多个 Key,导致单个 Redis 节点负载过高,可能引发性能瓶颈甚至服务崩溃。以下是常见原因及解决方案: 1. 热 Key 的常见原因 突发流量:如明星八卦、秒杀商品、热门直播等场景。缓存设计不合理:如全…...
JavaWeb(楠)
JavaWeb21-1:Java Web开发的地位、Tomcat服务器 Java Web开发概述 主流地位:Java可用于移动端、桌面应用、机器学习等多个领域,但在Web开发领域优势显著,是Java最主流的研发方向。市场上95%以上的Web端开发都使用Java,…...
批量将 JSON 转换为 Excel/思维导入等其它格式
json 格式相信对大家来说都不陌生,这是一种轻量级的结构化数据,可以对对象进行描述。json 格式也是一种普通的文本文件格式,用记事本就能够打开编辑 json 格式的文件,可以很方便的转换为其他格式。今天要给大家介绍的就是如何将 j…...
C# Winform 入门(13)之通过WebServer查询天气预报
展示 控件 添加WebServer 右键项目> 添加引用> 添加服务引用 天气预报URL: WeatherWebService Web 服务WeatherWebService Web 服务http://www.webxml.com.cn/WebServices/WeatherWebService.asmx 查询按钮实现 private void btn_Inquiry_Click(object sender, EventA…...
算法思想之滑动窗口(一)
欢迎拜访:雾里看山-CSDN博客 本篇主题:算法思想之滑动窗口(一) 发布时间:2025.4.6 隶属专栏:算法 目录 滑动窗口算法介绍核心思想时间复杂度适用场景注意事项 例题长度最小的子数组题目链接题目描述算法思路代码实现 无重复字符的…...
爬虫工程师无意义的活
30岁的年龄;这个年龄大家都是成年人;都是做父母的年龄了;你再工位上的心态会发生很大变化的; 爬虫工程师基本都是如此;社会最low的一帮连销售都做不了的;单子都开不出来的然后转行做爬虫工程师的;这样的人基本不太和社会接触; 你作为爬虫初级工程师就敲着键盘然后解析着html;…...