甲骨风尘 發表於 2023-6-22 09:19:58

新的HTML标签<search>详解

<div id="navCategory"><h5 class="catalogue">目录</h5><ul class="first_class_ul"><li><a href="#_label0">如何运作</a></li><li><a href="#_label1">看法</a></li></ul></div><p>本文介绍了一种新的HTML元素搜索方法,并提供了一个实用的工具来帮助开发者快速找到所需的元素。这对于那些需要处理大量HTML元素的开发者来说是非常有用的。文章还通过提供一些常见元素的用法示例,帮助开发者更好地理解和应用这些元素。在众多元素中找到特定的元素。为了解决这个问题,文章介绍了一种新的HTML元素搜索方法。</p>
<p>一个新的语义元素已经加入了 HTML 标准 。它代表文档中用于搜索或过滤的部分。它应该包含表单控件(如文本输入、下拉菜单、按钮等),搜索/过滤的范围可以是任何内容:从同一文档到整个互联网。</p>
<p class="maodian"><a name="_label0"></a></p><h2>如何运作</h2>
<p>在&nbsp;<code>&lt;search&gt;</code>&nbsp;元素之前,我们可以在&nbsp;<code>&lt;form&gt;</code>&nbsp;标签中添加&nbsp;<code>role=&quot;search&quot;</code>&nbsp;以指示该表单用于搜索:</p>
<div class="jb51code"><pre class="brush:xhtml;">&lt;form role="search" method="get" action="/search"&gt;
  &lt;input type="search" name="search-text" /&gt;
  &lt;button&gt;Search&lt;/button&gt;
&lt;/form&gt;</pre></div>
<p>有了这个新添加的功能,我们可以使用<code>&lt;search</code>&gt; 标签来包装表单:</p>
<p>由于&nbsp;<code>&lt;search&gt;</code>&nbsp;是标准中的新内容,所有浏览器、屏幕阅读器和其他工具可能需要一段时间才能跟上。在此期间,我们可以使用一个&nbsp;<code>hack</code>,指定它已经具有的 ARIA 角色(类似于&nbsp;<code>&lt;nav&gt;</code>所发生的情况)。这在未来可能会变得多余,但它可能会为我们的代码做好准备,以便在浏览器支持新标签时使用。</p>
<div class="jb51code"><pre class="brush:xhtml;">&lt;search role="search"&gt;
   ...
&lt;/search&gt;</pre></div>
<p>这看起来有些违反直觉:我们正在移除&nbsp;<code>role=&quot;search&quot;</code>,但我们正在用<code>&lt;search&gt;</code>包装所有内容。总体而言,这是更多的文本/代码(仅三个字符)和更多的嵌套(一个更高的级别)。</p>
<blockquote><p>温馨提示:尽管我们在构建搜索组件时并不强制需要</p>标签,但是使用它却能带来额外的好处(甚至是必须的)。这样,即使在无JavaScript环境下,搜索功能也能保持正常运行,或者说,这是一种实践渐进式增强策略的方式。</blockquote>
<p>另一个需要注意的关键点是,搜索区域不一定是网站或在线平台上带有搜索按钮的文本输入框。我们可以使用&nbsp;<code>&lt;search&gt;</code>来过滤结果或表格行。它的实用性不仅限于文本输入和搜索框:</p>
<div class="jb51code"><pre class="brush:xhtml;">&lt;search&gt;
  &lt;h2&gt;Filter results&lt;/h2&gt;
  &lt;form&gt;
    &lt;label for="cartype"&gt;Car type&lt;/label&gt;
    &lt;select id="cartype"&gt;
      &lt;option value="coupe"&gt;Coupe&lt;/option&gt;
      &lt;option value="sedan"&gt;Sedan&lt;/option&gt;
    &lt;/select&gt;
    &lt;label for="electric"&gt;Electric?&lt;/label&gt;
    &lt;input type="checkbox" id="electric" /&gt;
  &lt;/form&gt;
&lt;/search&gt;</pre></div>
<p class="maodian"><a name="_label1"></a></p><h2>看法</h2>
<p>拥有一个用于识别搜索区域的元素是很好的。<a href="https://www.scottohara.me/blog/2023/03/24/search-element.html" rel="external nofollow" target="_blank">正如Scott O&#39;Hara在这篇文章中指出的那样</a>,直到现在,这是唯一一个在HTML中没有语义等效项的ARIA地标角色:</p>
<ul><li>banner &rarr;&nbsp;<code>&lt;header&gt;</code></li><li>complementary &rarr;&nbsp;<code>&lt;aside&gt;</code></li><li>form &rarr;&nbsp;<code>&lt;form&gt;</code></li><li>main &rarr;&nbsp;<code>&lt;main&gt;</code></li><li>navigation &rarr;&nbsp;<code>&lt;nav&gt;</code></li><li>region &rarr;&nbsp;<code>&lt;section&gt;</code></li><li>search &rarr; ???</li></ul>
<p>使用&nbsp;<code>&lt;search&gt;</code>&nbsp;来标识应具有&ldquo;搜索&rdquo;角色的部分,我们将使用一些语义化的 HTML 元素覆盖所有 ARIA 地标角色。这很棒:它将提高可访问性(尽管如上所述,需要一段时间才能让所有浏览器跟上),并扩展了语言的语义。</p>
<p>但是,从程序员的角度来看,它感觉不够完善或没有为现有的实现增加太多东西。其他语义元素可以提高可访问性并简化我们编写特定组件的方式。例如,像&nbsp;<code>&lt;tabpanel&gt;</code>&nbsp;和<code>&lt;tab&gt;</code>&nbsp;这样的东西,在我看来会更具说服力和价值。</p>
<p>这并不会削弱它的重要性。所有的改进 - 即使是微小的改进 - 都是受欢迎的。这也适用于&nbsp;<code>&lt;search&gt;</code>&nbsp;。这是 HTML 家族的一个极好的新成员。</p>
<p><strong>代码部署后可能存在的BUG没法实时知道,事后为了解决这些BUG,花了大量的时间进行log 调试,这边顺便给大家推荐一个好用的BUG监控工具&nbsp;<a href="https://link.juejin.cn/?target=https%3A%2F%2Fwww.fundebug.com%2F%3Futm_source%3Dxiaozhi" rel="external nofollow" target="_blank">Fundebug</a>。</strong></p>
頁: [1]
查看完整版本: 新的HTML标签<search>详解