是时候提升你的 HTML 技能了!🔋
是啊,我知道。我知道你了解所有热门的 Web 技术,无论是 Angular、Ionic、Deno、Node、Django 还是其他什么!真是太棒了。
但问题是,你懂HTML吗?没错,就是那个超文本标记语言(HyperText Markup Language)?哎呀!再说一次,我知道你懂HTML,而且用这种语言写网站简直是神来之笔,但是……你知道怎么给你的HTML游戏加点料吗?
好吧,我到底在说什么!?往下拉就能看到一些非常棒的 HTML 功能(尤其是 HTML 5),它们能为标记游戏带来巨大的提升。⚡

1️⃣ HTML 5 API🔌
HTML 地理位置 API [文档 📃 ]
如果您的网站需要检索用户的位置信息(例如导航或使用地图),那么地理位置 API 可以为您提供帮助。
可以通过调用来访问,navigator.geolocation
通过调用它会向用户的浏览器添加一个提示,询问他们是否允许访问他们的位置数据。
例子:
function getLocation() {
// Check for the geolocation service
if (navigator.geolocation) {
navigator.geolocation.watchPosition(showPosition);
} else {
el.innerHTML = "Geolocation is not supported.";
}
}
function showPosition(position) {
el.innerHTML = "Latitude: " + position.coords.latitude +
"<br>Longitude: " + position.coords.longitude;
}
HTML Web Workers API [文档 📃 ]
Web Worker 是一个在后台运行的独立脚本,不会影响页面加载时的性能。
Worker 可以通过向创建它的 JavaScript 代码指定的事件处理程序发送消息来发送消息。它使用Worker()
构造函数来执行此类操作。
例子:
// 1. CHECK FOR WEB WORKER SUPPORT
if (typeof(Worker) !== "undefined") {
// Supported!
} else {
// Not supported :(
}
// 2. CREATING A WEB WORKER OBJECT
if (typeof(w) == "undefined") {
w = new Worker("worker_file.js");
}
// 3. SEND A MESSAGE FROM WORKER
w.onmessage = function(event){
document.getElementById("workerdiv").innerHTML = event.data;
};
HTML SSE API [文档 📃 ]
SSE 代表服务器发送事件。当网页自动从服务器获取更新时,会触发此事件。
该API包含在EventSource
接口中。
例子:
// 1. CHECK SUPPORT
if(typeof(EventSource) !== "undefined") {
// Supported
} else {
// No server-sent events supported :(
}
// 2. RECIEVE EVENTS FROM SERVER
var source = new EventSource("myserver.php");
source.onmessage = function(event) {
document.getElementById("serverresult").innerHTML += event.data + "<hr>";
};
HTML Web 存储 API [文档 📃 ]
使用此 API,Web 应用程序可以在用户浏览器本地存储数据。它同时包含localStorage
和sessionStorage
。
另一种选择是创建 cookie,但网络存储更好,因为它更安全,而且可以存储大量数据。
例子:
// 1. CHECK SUPPORT
if (typeof(Storage) !== "undefined") {
// supported!
} else {
// No Web Storage support :(
}
// 2. USING LOCALSTORAGE
// Store
localStorage.setItem("name", "Vaibhav");
// Retrieve
document.getElementById("namediv").innerHTML = localStorage.getItem("name");
// 2. USING SESSIONSTORAGE
sessionStorage.setItem('myName', 'Vaibhav');
2️⃣ HTML 事件属性🖱
以下是您应该在 DOM 中开始使用的一些属性:
您可以通过单击每个属性来转到其 MDN 文档!
活动编号 | 属性 | 描述 | 例子 |
---|---|---|---|
1. | onerror |
发生错误时运行的脚本 | <img src="image.gif" onerror="error()"> |
2. | onload |
页面加载完成后触发 | <body onload="load()"> |
3. | onresize |
当浏览器窗口调整大小时触发 | <body onresize="resize()"> |
4. | onblur |
当元素失去焦点时触发 | <input type="text" onblur="blur()"> |
5. | onsearch |
当用户在搜索字段中输入内容时触发 | <input type="search" onsearch="search()"> |
6. | ondblclick |
鼠标双击元素时触发 | <button ondblclick="clicked()">Double-click</button> |
7. | onscroll |
当元素的滚动条滚动时运行的脚本 | <div onscroll="scroll()"> |
8. | oncopy |
当用户复制元素内容时触发 | <input type="text" oncopy="copy()" value="Copy this tex"> |
9. | oncanplay |
当文件准备好开始播放时运行的脚本 | <video oncanplay="canPlay()"> |
10. | ontoggle |
当用户打开或关闭<details> 元素时触发 |
<details ontoggle="toggleDetail()"> |
3️⃣ 不常见的 HTML 标签🤪
为什么不呢!告诉我,你用过它们吗?
标签号 | 标签 | 描述 | 例子 |
---|---|---|---|
1. | <datalist> |
具有预定义选项的数据列表(连接到元素) | MDN 示例 |
2. | <optgroup> |
<optgroup> 使用标签对相关选项进行分组 |
MDN 示例 |
3. | <ins> |
删除了部分内容并插入了新内容的文本 | MDN 示例 |
4. | <wbr> |
具有断词功能的文本 | MDN 示例 |
5. | <cite> |
用于描述对所引用的创意作品的引用 | MDN 示例 |
在这里阅读更多荒谬的 HTML 标签:
4️⃣ HTML 5 属性😋
查看以下很酷的属性并确保通过单击它们访问其文档:
▶ accesskey
:这是一个全局属性,它指定激活/聚焦元素的快捷键。
例子:
<a href="https://mailchi.mp/f59beeac6b9b/devupdates" accesskey="d">
Subscribe to Dev Weekly newsletter</a>
▶ draggable
:另一个全局属性,指定元素是否可拖动。
例子:
<p draggable="true">This is a draggable paragraph.</p>
▶ itemprop
:此项可让您为物品添加属性。您可以轻松地使用此属性对物品进行分组。
例子:
<div itemscope itemtype="http://schema.org/Movie">
<h1 itemprop="name">Avatar</h1>
<span>Director:
<span itemprop="director">James Cameron</span>
(born August 16, 1954)</span>
<span itemprop="genre">Science fiction</span>
<a href="../movies/avatar-theatrical-trailer.html"
itemprop="trailer">Trailer</a>
</div>
▶ spellcheck
:指定是否检查元素的拼写和语法。
例子:
<p spellcheck="true">This is a paragraph with spell check on.</p>
▶ hidden
:布尔属性,指定元素尚不相关或不再相关。
例子:
<p hidden>This paragraph should be hidden.</p>
下一步去哪里?🤔
我建议你在项目中练习这些标签/API/属性,或者在下次使用 CodePen 时测试一下。以下是一些你可能会喜欢的链接:
谢谢阅读,我非常感激!祝你拥有美好的一天。(✿◕‿◕✿)
这间厕所的提交历史让我们大家都丢脸!你的 Git 也变得更环保了吗?😝
— 英国微软开发者 (@msdevUK) 2020 年 9 月 1 日
图片来源:https://t.co/HEzYrUa6Ol #DevHumour #Git #WFH pic.twitter.com/GWu5YFhCml