当前位置: 首页 > 面试题库 >

为什么要使用HTML5语义标记而不是div?

叶英哲
2023-03-14
问题内容

为什么要使用HTML5语义标记喜欢headerssectionnav,和article的,而不是简单地div用首选css呢?

我创建了一个网页并使用了这些标签,但它们与并没有什么区别div。他们的主要目的是什么?

是否仅在使用时为标签指定了适当的名称?

请解释。我已经浏览了许多站点,但是找不到这些基础知识。


问题答案:

顾名思义,这仅是出于语义目的。它用于改善文档的自动化处理。自动化处理比您想像的要多得多-搜索引擎对每个网站的排名都来自对所有网站的自动化处理。

如果您访问网页,作为普通读者,您可以立即(视觉上)区分所有页面元素,更重要的是 理解 其内容。

但是,机器很笨,无法做到这一点:想象一下,一个Web爬网程序或一个屏幕阅读器试图在各处使用divs分析您的网页。他们怎么知道,您打算将文档的哪一部分作为导航或主要文章,或一些不太重要的旁注?他们可以通过使用一些通用标准来分析您的文档结构来
猜测 ,这是对特定元素的提示。例如ul,内部链接列表很可能是某种页面导航。但是,如果改为使用某个nav元素,则机器会立即知道该元素的用途。

示例:作为用户(您在阅读页面时没有看到实际的标记),您并不关心元素是否包含在<i><em>标记中。可能在大多数浏览器中,它将显示为斜体文本,并且只要它在文本中突出显示即可轻松识别,您就可以了。
但是,在语义方面存在较大差异:<i>只是表示斜体-
这是浏览器的提示性提示,不一定包含更深的语义信息。<em>但是,意思是强调,即从语义上指示重要的信息。现在,浏览器不再 局限于斜体
指令,但可以用斜体,粗体,下划线或其他颜色在视觉上呈现…对于视障人士,屏幕阅读器可以提高声音-在特定情况下,最适合强调此重要信息的任何方法。

// machine: okay, this structure looks like it might be a navigation element?
<div class="some-meaningless-class"><ul><li><a href="internal_link">...</div>

// machine: ah, a navigation element!
<nav class="some-meaningless-class"><ul><li><a>...</nav>


 类似资料:
  • 问题内容: 我不确定为什么列出项目时为什么需要使用ul-li而不是简单地使用div。我可以使两者看起来完全一样,因此与创建div相比,创建无序列表的功能优势在哪里? 问题答案: 为了语义正确。HTML具有表达事物列表的功能,它可以帮助Google机器人,屏幕阅读器以及所有不仅仅关心网站外观的用户更好地了解您的内容。

  • 问题内容: 目前使用jQuery,当我需要在发生点击时做一些事情时,我会像这样… 我正在看别人在项目上有的代码,他们这样做是… 请注意,就我所知,它似乎在做相同的事情,除了它们使用的是live()函数(现在已弃用并且jQuery文档说要使用live()函数),但是无论哪种方式,为什么要使用live / on()而不是我的第一个示例? 问题答案: 因为您可能具有动态生成的元素(例如,来自AJAX调用

  • 问题内容: 在selenium.webdriver.common.by中使用By代替常规的find_element_by _…方法的目的和好处是什么?例如: vs: 问题答案: 据documentatio ñ 似乎是一种“ 私人 所使用的”法的方法和还可以使用页面对象 因此,使用Page Object模式是您可能需要+ 而不是的原因。 例如,您有一些包含元素值的变量 然后用它来定位元素为 如果由于

  • 问题内容: 我一直在阅读Go,并为这个基本问题感到困惑。 在Go中,很明显,切片更灵活,并且在需要一系列数据时通常可以代替数组使用。 阅读了大多数文档,他们似乎鼓励开发人员只使用切片而不是数组。我得到的印象是,创建者可以简单地将数组设计为可调整大小的,而无需整个切片部分即可完成。实际上,这样的设计会使该语言更易于理解,甚至鼓励使用更多惯用的代码。 那么,为什么创建者首先要允许数组呢?什么时候可以使

  • 我有什么理由使用 而不是 输出应该是相同的,我所做的基准测试似乎表明稍微快一点(需要评估所有非标准评估输入)。 那么,对于如此简单的情况,有什么理由让我考虑切换到< code>purrr::map呢?我在这里不是问你喜欢或不喜欢purrr提供的语法和其他功能。,但严格来说是关于< code>purrr::map与< code>lapply的比较,假设使用标准评估,即< code>map(

  • 问题内容: 也许对编译器进行优化后并不重要,但是在C / C ++中,我看到大多数人以以下形式进行for循环: 使用postfix 完成增量操作。我得到了两种形式之间的区别。i 返回i的当前值,但是在安静时将1加到i。++ i首先将1加到i,然后返回新值(比i大1)。 我认为i 需要做更多的工作,因为除了下一个值外,还需要存储一个前一个值:推 (&i)进行堆栈(或加载至寄存器);递增(&i)。与