查看: 32|回覆: 1

新的HTML标签<search>详解

[複製鏈接]

2

主題

0

回帖

0

積分

热心网友

金币
0
閲讀權限
220
精華
0
威望
0
贡献
0
在線時間
0 小時
註冊時間
2008-8-6
發表於 2023-6-22 09:19:58 | 顯示全部樓層 |閲讀模式

本文介绍了一种新的HTML元素搜索方法,并提供了一个实用的工具来帮助开发者快速找到所需的元素。这对于那些需要处理大量HTML元素的开发者来说是非常有用的。文章还通过提供一些常见元素的用法示例,帮助开发者更好地理解和应用这些元素。在众多元素中找到特定的元素。为了解决这个问题,文章介绍了一种新的HTML元素搜索方法。

一个新的语义元素已经加入了 HTML 标准 。它代表文档中用于搜索或过滤的部分。它应该包含表单控件(如文本输入、下拉菜单、按钮等),搜索/过滤的范围可以是任何内容:从同一文档到整个互联网。

如何运作

在 <search> 元素之前,我们可以在 <form> 标签中添加 role="search" 以指示该表单用于搜索:

<form role="search" method="get" action="/search">
  <input type="search" name="search-text" />
  <button>Search</button>
</form>

有了这个新添加的功能,我们可以使用<search> 标签来包装表单:

由于 <search> 是标准中的新内容,所有浏览器、屏幕阅读器和其他工具可能需要一段时间才能跟上。在此期间,我们可以使用一个 hack,指定它已经具有的 ARIA 角色(类似于 <nav>所发生的情况)。这在未来可能会变得多余,但它可能会为我们的代码做好准备,以便在浏览器支持新标签时使用。

<search role="search">
   ...
</search>

这看起来有些违反直觉:我们正在移除 role="search",但我们正在用<search>包装所有内容。总体而言,这是更多的文本/代码(仅三个字符)和更多的嵌套(一个更高的级别)。

温馨提示:尽管我们在构建搜索组件时并不强制需要

标签,但是使用它却能带来额外的好处(甚至是必须的)。这样,即使在无JavaScript环境下,搜索功能也能保持正常运行,或者说,这是一种实践渐进式增强策略的方式。

另一个需要注意的关键点是,搜索区域不一定是网站或在线平台上带有搜索按钮的文本输入框。我们可以使用 <search>来过滤结果或表格行。它的实用性不仅限于文本输入和搜索框:

<search>
  <h2>Filter results</h2>
  <form>
    <label for="cartype">Car type</label>
    <select id="cartype">
      <option value="coupe">Coupe</option>
      <option value="sedan">Sedan</option>
    </select>
    <label for="electric">Electric?</label>
    <input type="checkbox" id="electric" />
  </form>
</search>

看法

拥有一个用于识别搜索区域的元素是很好的。正如Scott O'Hara在这篇文章中指出的那样,直到现在,这是唯一一个在HTML中没有语义等效项的ARIA地标角色:

  • banner → <header>
  • complementary → <aside>
  • form → <form>
  • main → <main>
  • navigation → <nav>
  • region → <section>
  • search → ???

使用 <search> 来标识应具有“搜索”角色的部分,我们将使用一些语义化的 HTML 元素覆盖所有 ARIA 地标角色。这很棒:它将提高可访问性(尽管如上所述,需要一段时间才能让所有浏览器跟上),并扩展了语言的语义。

但是,从程序员的角度来看,它感觉不够完善或没有为现有的实现增加太多东西。其他语义元素可以提高可访问性并简化我们编写特定组件的方式。例如,像 <tabpanel> 和<tab> 这样的东西,在我看来会更具说服力和价值。

这并不会削弱它的重要性。所有的改进 - 即使是微小的改进 - 都是受欢迎的。这也适用于 <search> 。这是 HTML 家族的一个极好的新成员。

代码部署后可能存在的BUG没法实时知道,事后为了解决这些BUG,花了大量的时间进行log 调试,这边顺便给大家推荐一个好用的BUG监控工具 Fundebug

回覆

使用道具 舉報

0

主題

1223

回帖

7459

積分

琼殿精英

金币
6236
閲讀權限
220
精華
0
威望
0
贡献
0
在線時間
0 小時
註冊時間
2011-10-11
發表於 4 天前 | 顯示全部樓層
感谢楼主的分享!之前确实没有关注到HTML标准更新了这个语义元素,看完帖子感觉很有收获。

以前做搜索功能的时候,确实都是用`<form role="search">`来标注,确实像帖子说的那样,search是唯一一个没有语义等效的ARIA地标角色,现在终于有了专门的标签,语义化更完整了。

有几个小问题想和楼主讨论一下:

1. 关于浏览器兼容性,帖子提到可能需要一段时间,那目前主流浏览器的支持情况大概是什么样的?项目中实际使用的话需要做什么兼容处理吗?

2. 看到帖子最后提到作者觉得`<tabpanel>`和`<tab>`更有价值,这个确实也是我比较期待的,毕竟标签页组件现在还要靠各种JS框架来实现。

3. 关于渐进式增强这块,用`<search>`包装确实能在无JS环境下保持搜索功能正常运行,这个思路很赞!

总的来说,虽然是个小改进,但能让HTML语义更完善还是很不错的。支持楼主的分享,期待更多技术文章!
回覆

使用道具 舉報

您需要登錄後才可以回帖 登錄 | 立即注册

本版積分規則

相关侵权、举报、投诉及建议等,请发 E-mail:qiongdian@foxmail.com

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部