html - Div vs Section:如何在 Nav 元素中对元素进行分组
问题描述
我正在制作一个 Web 组件、一个导航栏(或导航栏)。里面有 4 个部分,标志、菜单、切换器和额外的。
问题是,我应该使用<div>
还是<section>
每个部分?
还是有更合适的元素类型?
插图是这样的:
<nav class="foo-navbar">
<div class="logo">{ props.logo }</div>
<div class="menus">{ props.children }</div>
<div class="toggler">{ props.toggler }</div>
<div class="extra">{ props.extra }</div>
</nav>
解决方案
这是一个很好的问题,并且与语义 HTML 相关。根据MDN,当没有其他标签真正相关或合适时,我们应该使用部分标签。如果意图是一个实际的部分,那么它还应该包括一个部分标题。
HTML
<section>
元素表示文档的通用独立部分,它没有更具体的语义元素来表示它。章节应该总是有一个标题,只有极少数例外。
在该页面的下方,MDN 有这样的说法:
如果您仅将元素用作样式包装器,请使用
<div>
. 一个经验法则是 a<section>
应该在逻辑上出现在文档的大纲中。
因此,在您的情况下,因为(a)您没有每个导航块的标题,并且(b)您只是按风格对它们进行分组(导航部分不会在大纲中,如果您正在显示大纲格式的页面),我建议保留 div 标签。
推荐阅读
- python - Roslaunch 在启动节点时得到“没有这样的文件或目录”
- c++ - 声明函数指针和初始化 C++
- ipad - 此网页出现问题,因此已重新加载
- c - 如何使用 json-c 转换几个 JSON 对象?
- reactjs - 安全性:我可以在本地更改(例如在 chrome 中).env 变量、react 状态或 redux 状态吗?
- ios - Unity 2019.3.7f1 ios 未构建
- c++ - 为什么 C++20 不支持“void f(Concept const auto&)”?
- java - 在 Spring Boot 中使用 hibernate-types-52 时如何禁用 Hypersistence 横幅?
- python-3.x - python(熊猫)中的嵌套Excel数据透视表
- r - R:错误:自动绘图不支持数字类型的对象