如何在博客中正确使用HTML语义元素? [关闭]

2024-01-08

我读了很多关于w3学校 https://www.w3schools.com/html/html5_semantic_elements.asp。它定义了<section> as:

元素定义文档中的一个部分。 [...] 主页通常可以分为介绍、内容和联系信息几个部分。

所以,基本上,一个<section>可以是一个<header>(介绍)和<footer>(联系信息)?

元素指定文档或部分的标题。

所以我可以放一个<header> inside a <section>? But a <section>可以用于“介绍”,所以基本上is一个标题?与同样的故事<footer>元素。

问题

我实际上应该如何使用这些元素?

  • 我应该使用<header>对于一个标题<article>或者我的网站包含徽标和导航的部分?

  • 我应该使用<footer>对于一个数据<article>或者我的网站中包含版权和页脚导航的部分?

  • 我应该放一个<section> tag around my <article> tags?

假设我有一个简单的网站,包含徽标、导航、几篇文章和一些页脚文本。进行标记的最佳方法是什么?

<!DOCTYPE html>
<html>

<head>
    <title>My site</title>
</head>

<body>
    <header>
        <img src="logo.png" alt="My logo!">
        <nav>
            <ul>
                <li><a href="#">Item 1</a></li>
                <li><a href="#">Item 2</a></li>
                <li><a href="#">Item 3</a></li>
            </ul>
        </nav>
    </header>

    <section>
        <article>
            <header><h2>Article 1 title</h2></header>
            <footer>Posted on Foo.Bar.2017</footer>
        </article>

        <article>
            <header><h2>Article 2 title</h2></header>
            <footer>Posted on Foo.Bar.2017</footer>
        </article>

        <article>
            <header><h2>Article 3 title</h2></header>
            <footer>Posted on Foo.Bar.2017</footer>
        </article>
    </section>

    <footer>
        <p>Copyright</p>
    </footer>
</body>

</html>

如果我这样做,Nu HTML 检查器 http://validator.w3.org/nu/ says:

警告:该部分缺少标题。考虑使用 h2-h6 元素向所有部分添加识别标题。

我不想要一个<h1>说明<section>包含<article>标签。我应该删除<section>?它似乎是一个灵活的标签,但我找不到放置它的有效位置。

正确的标记是什么?


header / footer

分段内容 https://www.w3.org/TR/2016/REC-html51-20161101/dom.html#sectioning-content and 切根 https://www.w3.org/TR/2016/REC-html51-20161101/sections.html#sectioning-roots元素。header/footer元素始终“属于”这些分段(内容/根)元素之一。

<body>

  <header>belongs to the 'body'</header>

  <article>
    <header>belongs to the 'article'</header>
    <footer>belongs to the 'article'</footer>
  </article>

  <div>
    <header>belongs to the 'body'</header>
    <footer>belongs to the 'body'</footer>
  </div>

  <footer>belongs to the 'body'</footer>

</body>

请注意,div元素不是分段元素,这就是为什么它header/footer儿童属于body(这是一个分段根元素),而不是div.

所以你可以使用header/footer站点范围内容的元素,通过放置它们使得它们最近的分段父元素是body元素。

section

A header/footer可以由一个或多个组成section元素,但这通常只有在以下情况下才有意义header/footer(通常)很复杂。

一般来说,什么时候使用才有意义section?如果你有一个隐含的section,或者如果您需要在文档大纲中添加条目。请看我的相关回答:

  • 如何决定使用哪个分段内容元素 https://stackoverflow.com/a/26887006/1591669(带有三个博客标记示例)
  • section in article vs. article in section https://stackoverflow.com/a/30286429/1591669(在博客上下文中)
  • 何时使用的经验法则section https://stackoverflow.com/a/40462142/1591669

请注意,验证器报告警告,而不是错误 https://stackoverflow.com/a/26185873/1591669,当分段内容元素没有标题元素时。它们不需要有标题,但这可能表明分段内容元素被滥用:通常只有在可以有标题的情况下使用它才有意义,即使您实际上没有提供标题。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在博客中正确使用HTML语义元素? [关闭] 的相关文章

  • 通过 Javascript 更改 Webkit 属性?

    请帮助我 可能是因为我对 CSS 动画和 Javascript 相当陌生 但我使用的代码应该更改它的属性 当我运行代码时 它会执行代码中的所有其他操作 除了更改所需 div 的 CSS 属性 我已经尝试了所有这四种方法 但似乎都不起作用 它
  • Javascript 制作音频 blob

    我正在测试 html 音频标签 我想制作音频 blob url 就像 youtube 或 vimeo 那样 并将其添加到 src 开始播放音频 我一直在测试new Blob and URL createObjectURL 但我不知道如何使用
  • Opera 中 margin-bottom 的计算方式不同

    我有一个具有相对位置的 div 和一个具有绝对位置的子 div div class out div div div CSS container width 100px height 100px position relative insid
  • 如何显示/隐藏jsf组件

    在我的一个 JSF 应用程序中 顶部的标题部分包含 selectOneMenu 底部的内容部分显示过滤器组件 默认情况下 应用程序首先在顶部显示 selectOneMenu 数据 在底部显示相应的 Filter 信息 如果用户选择不同的se
  • CreateJs Canvas 形状在 Windows Phone 上丢失坐标

    我正在制作一个 Createjs 和 html5 项目 在其中绘制一个形状 红色圆圈 当我单击圆圈时它会发出警报 它在所有台式机和 Android 手机上都能正常工作 除非我在 Windows Phone 中打开它 否则它在普通屏幕上工作正
  • 将可点击的锚标记转换为 html 文档中的纯文本

    我正在尝试匹配 a 我的内容中的标签 并将其替换为链接文本 后跟打印版本的方括号中的 url 如果只有 href 则以下示例有效 如果 a 包含另一个属性 它匹配太多并且不会返回所需的结果 我怎样才能匹配 URL 和链接文本 就是这样 这是
  • 从函数在 python 3 中创建全局变量

    我想知道为什么在函数结束后我无法访问变量 variable for raw data 代码是这样的 def htmlfrom Website URL import urllib request response urllib request
  • 在画布上剪出圆形图像

    我正在使用 html5 canvas 并且我正在创建一个游戏 可以将您的脸部上传到游戏中 并将其用作主要角色 不幸的是 游戏中的角色是圆形的 就像笑脸一样 那么这将如何完成呢 是否可以拍一张照片 然后将其剪成一个圆 这样圆之外的任何东西都是
  • 检测 html 选择框上的编程更改

    有没有办法让 HTML 选择元素在每次以编程方式更改其选择时调用函数 当使用 JavaScript 修改选择框中的当前选择时 IE 和 FF 都不会触发 onchange 此外 更改选择的 js 函数是框架的一部分 因此我无法更改它以在结束
  • HTML 标签在 Ionic 5 警报文本中不起作用

    我已将以下代码从 Ionic 3 迁移到 Ionic 5 const alert await this alertCtrl create subHeader About b this user name b message Test Mes
  • 文件和目录条目 API 在 Chrome 中损坏?

    我正在尝试使用文件和目录条目 API 创建一个文件上传器工具 该工具允许我将文件和目录的任意组合放入浏览器窗口中 以供读取和上传 我完全意识到 可以通过使用文件输入元素来实现类似的功能webkitdirectory已启用 但我正在测试一个用
  • 为什么我会收到此 Javascript 运行时错误?

    我的网页上有以下 JavaScript 64 var description new Array 65 description 0 66 description 1 78 function init 79 document getEleme
  • 如何像facebook和twitter一样显示帖子更新时间?

    我正在制作一个通知平台 而不是显示通知到来的时间 我想显示自通知到达以来经过的时间 就像在 Twitter 和 Facebook 上发生的那样 他们显示 32m 1 小时前等 我想用JavaScript Java来实现这段代码 任何帮助将非
  • CSS:如何在“div”内垂直对齐“标签”和“输入”?

    考虑以下代码 http jsfiddle net s2qBw 3 HTML div div
  • 由于内容不可压缩,谷歌浏览器中出现了新的复合层

    当 chrome profiler 说 图层是单独合成的 因为它无法被挤压 时 它到底意味着什么 我正在对我的 html 进行更改 并在相对 div 内引入了一个固定位置 div 并给出了will change transform在上面 完
  • 如何使用 PHP 从 MySQL 查询中按升序对值进行排序?

    我使用以下 PHP 脚本从 MySQL 表中获取和更改数据 并将结果打印在 HTML 表中 我希望按升序对数据进行排序 utilization percentage变量 它是由创建的 total client time total avai
  • 响应式菜单:悬停子菜单显示错误

    简而言之 我根据教程创建了一个响应式菜单 当您将鼠标悬停在投资组合按钮上时 菜单应该显示子菜单 而在移动模式下 您需要按该按钮才能显示子菜单 效果很好 问题是该教程有一个错误 如果您在桌面模式下按组合按钮 子菜单将不会再次显示 除非您按 单
  • 如果在 HTML 标记中使用自定义属性会发生什么?

    这个问题与以下内容无关jQuery本身 但我发现了一个名为Metadata found there http docs jquery com Plugins Metadata metadata其中一个示例使用自定义标签属性 li li 问
  • Javascript / jQuery - 转换特殊 html 字符

    我有一个pre元素中包含一些 html 代码 该代码中有特殊字符 例如 lt 所以它不会破坏页面 然后我有一个 javascript 函数 它获取此 pre 元素的内容 突出显示它 使用 codemirror 并用突出显示的文本替换元素内容
  • html5 canvas 使用图像作为蒙版

    是否可以使用具有形状的图像作为整个画布或画布内图像的蒙版 我想将图像放置在画布中 并在图像上添加蒙版 然后将其另存为新图像 您可以使用 source in globalCompositeOperation 将黑白图像用作蒙版 首先 将蒙版图

随机推荐