如果徽标是文本,徽标元素应该使用什么标签?
What tag should be used for a logo element if the logo is text?
我读到 <h1>
标签 is inappropriate for a logo。但是,如果您的徽标是纯文本,您应该使用什么?我觉得<p>
和<span>
也不合适。这是一个示例:
<header>
<nav>
<a id="logo" href=".">
<span>Company Name</span>
</a>
<a id="linkOne" href="#thingOne">
<img src="…">
</a>
<a id="linkTwo" href="#thingTwo">
<img src="…">
</a>
<a id="linkThree" href="#thingThree">
<img src="…">
</a>
</nav>
</header>
谢谢!
我相信标签主要由您决定。
鉴于它是纯文本,我不明白为什么它不应该是 h1。
但是分析你的情况,这就是我会做的。
方案1.使用h1并将其确定为用于显示logo的标签。永远不要再在 dom.
中使用它
选项 2. 为徽标创建一个新标签,例如 。这些被称为 "Custom elements"。它应该是这样的:
var logo = document.registerElement('com-logo', {
prototype: Object.create(HTMLElement.prototype)
});
然后您必须使用 CSS 格式化徽标。
阅读 this 以了解更多关于自定义元素的信息! :)
在 HTML 中没有 "semantic" 标记徽标的方法(即语法),因此在基本层面上没有正确或错误的方法。也就是说,我不会使用 <h1>
作为徽标,因为 heading-tags 应该构建您的 HTML.
我通常使用带有徽标的简单 <div>
或 <a>
作为背景图像,因为我认为这是从屏幕阅读器中隐藏它的最佳方式。坦率地说,我认为将徽标作为 <img>
放在 <section>
中没有多大价值,因为一个部分应该包含内容的主题分组。
对于你的情况,我会将你的 <a>
格式化为 inline-block
并将徽标设置为背景图片。
鉴于您的标记示例,您似乎在询问 nav
元素中的 link。如果是这种情况,您不应该为它使用标题元素,因为标题元素会标记 nav
部分(这可能不是您想要传达的内容;如果您在 nav
中有一个标题, 它可能应该类似于 "Navigation").
在那种情况下,您根本不需要特殊元素,只需在 nav
中列出 link(最好在 ul
中):
<header>
<nav>
<ul>
<li><a id="logo" href="." rel="home">Company Name</a></li>
<li><a id="linkOne" href="#thingOne"><img src="…" alt="…"></a></li>
<li><a id="linkTwo" href="#thingTwo"><img src="…" alt="…"></a></li>
<li><a id="linkThree" href="#thingThree"><img src="…" alt="…"></a></li>
</ul>
</nav>
</header>
但是,如果您谈论(通常)显示在每个页面上的 site-wide banner/header 中的站点名称,则使用 h1
是有意义的,因为它代表站点,所有页面部分都应在该范围内(例如,site-wide 导航),它为文档大纲提供了一个 top-level 标签(否则将未指定)。在那种情况下,它不能是 nav
的一部分;它最近的部分应该是 body
部分根。
从语义上讲,站点 name/logo 显示为图像还是文本都没有区别。对于图像,alt
属性提供与文本等效的内容。
因此对于站点徽标,您可能有:
<body>
<header>
<h1><a href="/" rel="home"><img src="…" alt="ACME Inc."></a></h1>
</header>
</body>
对于站点名称,您可能有:
<body>
<header>
<h1><a href="/" rel="home">ACME Inc.</a></h1>
</header>
</body>
只需使用<site-logo>...</site-logo>
。 W3C validator wont complain as long as the element contains a dash.
与目前接受的答案相反,我们最好不要使用 H1
来包装您的品牌名称,如:
- 我知道
H1
的最佳和正确使用是将顶级标题指向 webpage/document,而不是 站点本身(即,将所有文档都命名为站点名称在这种情况下没有意义),并且
- 使用多个
H1s
通常被认为是不好的做法(如果您想使用 H1
为您的 documents/pages 命名,这是必要的)。
经过深思熟虑,我认为最好的答案是 通过包含 schema.org 微数据 来表达品牌名称,然后使用您认为对您来说合理的任何标签.
例如,您可以看到从 https://schema.org/LocalBusiness 底部附近拍摄的示例:
<div itemscope itemtype="https://schema.org/Restaurant">
<span itemprop="name">GreatFood</span>
希望这有助于更明确地回答这个问题!
没有真正正确的答案,因为网站徽标没有官方语义元素,例如,我们有 <figure>
图像,<blockquote>
&& <q>
对于引号块和引号,<main>
是 self-explanatory
所以从个人角度来说:
figure > img
如果徽标是图片
div > span
用于文本
现在为什么 div > span
?
- h1 应该在页面上只使用一次(不幸的是我没有官方参考)&& 搜索引擎会将徽标视为第一个标题
- 糟糕 UI 如果您在徽标中制作 link 主页页面,因为一些用户不习惯在找不到主页时单击站点徽标 link
div
s 对屏幕阅读器没有帮助,因此在这种情况下它们对 SEO 不利,不像说 <section>
那样没有意义
- 不只是
span
因为容器有助于像居中这样的样式
最后但并非最不重要的一点是,您应该将徽标放在导航内部还是外部:内部
出于与在 <div>
内包装 <span>
相同的原因
总结
- 将包含徽标的元素放在导航中
- 使用其中之一
figure > img
div > span
- 单独建一个HOMElink更好UI
希望我有所帮助:)
我读到 <h1>
标签 is inappropriate for a logo。但是,如果您的徽标是纯文本,您应该使用什么?我觉得<p>
和<span>
也不合适。这是一个示例:
<header>
<nav>
<a id="logo" href=".">
<span>Company Name</span>
</a>
<a id="linkOne" href="#thingOne">
<img src="…">
</a>
<a id="linkTwo" href="#thingTwo">
<img src="…">
</a>
<a id="linkThree" href="#thingThree">
<img src="…">
</a>
</nav>
</header>
谢谢!
我相信标签主要由您决定。
鉴于它是纯文本,我不明白为什么它不应该是 h1。
但是分析你的情况,这就是我会做的。
方案1.使用h1并将其确定为用于显示logo的标签。永远不要再在 dom.
中使用它选项 2. 为徽标创建一个新标签,例如 。这些被称为 "Custom elements"。它应该是这样的:
var logo = document.registerElement('com-logo', {
prototype: Object.create(HTMLElement.prototype)
});
然后您必须使用 CSS 格式化徽标。
阅读 this 以了解更多关于自定义元素的信息! :)
在 HTML 中没有 "semantic" 标记徽标的方法(即语法),因此在基本层面上没有正确或错误的方法。也就是说,我不会使用 <h1>
作为徽标,因为 heading-tags 应该构建您的 HTML.
我通常使用带有徽标的简单 <div>
或 <a>
作为背景图像,因为我认为这是从屏幕阅读器中隐藏它的最佳方式。坦率地说,我认为将徽标作为 <img>
放在 <section>
中没有多大价值,因为一个部分应该包含内容的主题分组。
对于你的情况,我会将你的 <a>
格式化为 inline-block
并将徽标设置为背景图片。
鉴于您的标记示例,您似乎在询问 nav
元素中的 link。如果是这种情况,您不应该为它使用标题元素,因为标题元素会标记 nav
部分(这可能不是您想要传达的内容;如果您在 nav
中有一个标题, 它可能应该类似于 "Navigation").
在那种情况下,您根本不需要特殊元素,只需在 nav
中列出 link(最好在 ul
中):
<header>
<nav>
<ul>
<li><a id="logo" href="." rel="home">Company Name</a></li>
<li><a id="linkOne" href="#thingOne"><img src="…" alt="…"></a></li>
<li><a id="linkTwo" href="#thingTwo"><img src="…" alt="…"></a></li>
<li><a id="linkThree" href="#thingThree"><img src="…" alt="…"></a></li>
</ul>
</nav>
</header>
但是,如果您谈论(通常)显示在每个页面上的 site-wide banner/header 中的站点名称,则使用 h1
是有意义的,因为它代表站点,所有页面部分都应在该范围内(例如,site-wide 导航),它为文档大纲提供了一个 top-level 标签(否则将未指定)。在那种情况下,它不能是 nav
的一部分;它最近的部分应该是 body
部分根。
从语义上讲,站点 name/logo 显示为图像还是文本都没有区别。对于图像,alt
属性提供与文本等效的内容。
因此对于站点徽标,您可能有:
<body>
<header>
<h1><a href="/" rel="home"><img src="…" alt="ACME Inc."></a></h1>
</header>
</body>
对于站点名称,您可能有:
<body>
<header>
<h1><a href="/" rel="home">ACME Inc.</a></h1>
</header>
</body>
只需使用<site-logo>...</site-logo>
。 W3C validator wont complain as long as the element contains a dash.
与目前接受的答案相反,我们最好不要使用 H1
来包装您的品牌名称,如:
- 我知道
H1
的最佳和正确使用是将顶级标题指向 webpage/document,而不是 站点本身(即,将所有文档都命名为站点名称在这种情况下没有意义),并且 - 使用多个
H1s
通常被认为是不好的做法(如果您想使用H1
为您的 documents/pages 命名,这是必要的)。
经过深思熟虑,我认为最好的答案是 通过包含 schema.org 微数据 来表达品牌名称,然后使用您认为对您来说合理的任何标签.
例如,您可以看到从 https://schema.org/LocalBusiness 底部附近拍摄的示例:
<div itemscope itemtype="https://schema.org/Restaurant">
<span itemprop="name">GreatFood</span>
希望这有助于更明确地回答这个问题!
没有真正正确的答案,因为网站徽标没有官方语义元素,例如,我们有 <figure>
图像,<blockquote>
&& <q>
对于引号块和引号,<main>
是 self-explanatory
所以从个人角度来说:
figure > img
如果徽标是图片div > span
用于文本
现在为什么 div > span
?
- h1 应该在页面上只使用一次(不幸的是我没有官方参考)&& 搜索引擎会将徽标视为第一个标题
- 糟糕 UI 如果您在徽标中制作 link 主页页面,因为一些用户不习惯在找不到主页时单击站点徽标 link
div
s 对屏幕阅读器没有帮助,因此在这种情况下它们对 SEO 不利,不像说<section>
那样没有意义- 不只是
span
因为容器有助于像居中这样的样式
最后但并非最不重要的一点是,您应该将徽标放在导航内部还是外部:内部 出于与在<div>
内包装
<span>
相同的原因
总结
- 将包含徽标的元素放在导航中
- 使用其中之一
figure > img
div > span
- 单独建一个HOMElink更好UI
希望我有所帮助:)