«

最近发现的一些 HTML 实用小知识

时间:2026-2-1 23:47     作者:独元殇     分类: 前端技术


今天再为大家分享点 HTML 的新知识,每天不分享点有意思的东西,浑身难受。

是一些 HTML 特性。

大家可以在 分格 HTML 编辑器这个我自制的 HTML 调试工具里面实验下面的代码:

大家很少会关注 HTML 的发展,因为相较于CSS、JavaScript,这个 HTML 的发展进程会缓慢很多。

details 标签可以分组

学过 HTML5 的同学都知道很实用的 details / summary 这个组合,能搞一个标签,然后让其把内容折叠对吧。

但如果你有多个 details-summary 呢?如果你想打开一个,把另一个给关闭了,一次只显示一个,怎么弄呢?

其实这个 details 是可以分组的!

就是 name 属性,相同的 name 属性会产生互斥效果!

大家可以试试下面这个案例,我向一个门里放进了一个大钻石,很有意思!

<style>
  details { background: #eee; margin: 5px; padding: 10px; border-radius: 8px; cursor: pointer; }
  details[open] { background: #ffd700; font-weight: bold; transform: scale(1.01); transition: 0.2s;}
  summary { list-style: none; } /* 隐藏默认三角 */
</style>

<h3>只能选一扇门 (name="game")</h3>

<!-- 相同的 name 属性产生互斥效果 -->
<details name="game"><summary>门 1</summary>空</details>
<details name="game"><summary>门 2</summary>大钻石!</details>
<details name="game"><summary>门 3</summary>空</details>

效果如下:

img

是不是很好玩呢?

那它有啥用呢?就是在你盒子长度、高度等有限制的 时候,不适合都展开的场景里。

选择框里支持两种注释

在之前,我们可能知道 HTML 里有个选择框 select 标签,其实 HTML 这个 select 里还可以装 注释,以及很关键的 hr 分割线。

还有 select, ::picker(select){appearance: base-select;} 这个伪元素,可以重置 select 的默认样式,让它更容易被修饰:

<style>
  select, ::picker(select) { appearance: base-select; }
  option { padding: 5px; }
</style>

<h3>勇者装备店</h3>
<select>
  <option>空手 (默认)</option>
  <hr>
  <optgroup label="传说武器">
    <option>烈焰之剑</option>
    <option>寒冰法杖</option>
  </optgroup>
  <hr>
  <option style="color:red">诅咒物品 (慎选)</option>
</select>

这是一个我昨天晚的在线小游戏里的案例,几个魔法技能:

img

还是比较漂亮的。

更简易的弹出模态框

领导让你去做一个模态框,你怎么做?捣鼓 JS 吗?

其实 HTML 后来又悄无声息地新出了 popovertarget 这个很实用的属性。就像 bootstrop 里加个属性就是模态框一样,可以很轻松实现一个模态框。

<style>
  [popover] { padding: 2rem;  }
</style>

<button popovertarget="surprise-box">单击我</button>
<div id="surprise-box" popover="auto">
  <h1>TADA!</h1>
  <p>我是原生 Popover 模态框,处于浏览器顶层</p>
  <button popovertarget="surprise-box">关闭</button>
</div>

效果如下:

img

还是很实用的。

不用 noopener noreferrer 了

还有一个,我就不说明了。在写 HTML 的时候,我们肯定少不了在 a 标签里写 noopener noreferrer 对吧,因为会有漏洞,让新打开的页面,访问原页面。但现在已经修复这个漏洞了。

只要 target="_blank" 标签写上,浏览器会自动为 链接 加上 noopener noreferrer 。

详细的修复细节见这篇文章:

https://chromestatus.com/feature/6140064063029248chromestatus.com/feature/6140064063029248

今天就这样吧~

标签: 原创 html