文章中 h1 和 h2 的字体大小相同

新手上路,请多包涵

问题:

为什么这样做 <h1><h2> <article> font-size

输出:

在此处输入图像描述

然后我想也许只是我的眼睛愚弄了我所以我测量了一下。

在此处输入图像描述

我原来是一样大的。

我查看了以下链接( http://w3c.github.io/html/rendering.html#sections-and-headings ),我了解到它是基于层次结构的,但是 <h1><h2> 处于同一层级。

因此, <h1> 应该是2em, <h2> 应该是1.5em。

代码:

 <!DOCTYPE html>
<html>
    <head>
        <title>Headings</title>
        <meta charset="utf-8">
    </head>
    <body>
        <article>
            <h1>This is h1.</h1>
            <h2>This is h2.</h2>
            <h3>This is h3.</h3>
            <h4>This is h4.</h4>
            <h5>This is h5.</h5>
            <h6>This is h6.</h6>
        </article>
    </body>
</html>

原文由 kexxcream 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 752
2 个回答

This is by design for <h1> tag to be behave like this ie size reduce specially for <article> , <aside> , <nav> , <section> and it will keep on decreasing as structure will become more deep ie <article> inside <article> inside <article> then size at each level will reduce.

下面是演示:

 <!DOCTYPE html>
<html>

<head>
  <title>Headings</title>
  <meta charset="utf-8">
</head>

<body>
  <span>Default</span>
  <h1>This is h1.</h1>
  <h2>This is h2.</h2>
  <h3>This is h3.</h3>
  <h4>This is h4.</h4>
  <h5>This is h5.</h5>
  <h6>This is h6.</h6>
  <hr>
  <article>
    <span>One level inside article tag</span>

    <h1>This is h1.</h1>
    <h2>This is h2.</h2>
    <h3>This is h3.</h3>
    <h4>This is h4.</h4>
    <h5>This is h5.</h5>
    <h6>This is h6.</h6>
    <hr>
    <article>
      <span>Two level inside article tag</span>

      <h1>This is h1.</h1>
      <h2>This is h2.</h2>
      <h3>This is h3.</h3>
      <h4>This is h4.</h4>
      <h5>This is h5.</h5>
      <h6>This is h6.</h6>
      <hr>
      <article>
        <span>Three level inside article tag</span>

        <h1>This is h1.</h1>
        <h2>This is h2.</h2>
        <h3>This is h3.</h3>
        <h4>This is h4.</h4>
        <h5>This is h5.</h5>
        <h6>This is h6.</h6>
        <hr>
      </article>
    </article>

  </article>
</body>

</html>

资源:

作为参考,您可以查看 官方信息

这个官方信息说:

在以下 CSS 块中,x 是以下选择器的简写::matches(article, aside, nav, section)

>  x h1 { margin-block-start: 0.83em; margin-block-end: 0.83em; font-size: 1.50em; }
> x x h1 { margin-block-start: 1.00em; margin-block-end: 1.00em; font-size: 1.17em; }
> x x x h1 { margin-block-start: 1.33em; margin-block-end: 1.33em; font-size: 1.00em; }
> x x x x h1 { margin-block-start: 1.67em; margin-block-end: 1.67em; font-size: 0.83em; }
> x x x x x h1 { margin-block-start: 2.33em; margin-block-end: 2.33em; font-size: 0.67em; }
>
> ```

**为什么 h1 和 h2 相同?**

这是设计使然,因为浏览器制造商认为/同意,在网络编辑、制作人和开发人员之下, `<h2>` 通常被视为视觉上更重要的标题,内容文档中的标题最好以 . That is why `<h1>` `font-size` is not default bigger **inside** `<article>` , `<aside>` , `<nav>` , `<section>` 标签。

YOUR CASE IS THE FIRST LEVEL ie `x h1` where size of `h1` is `1.50em` but this rule is for `h1` only ie `h2` 将具有其默认/原始大小 `1.50em` 。这里 `x` 是 `<article>` 标签。

:-webkit-any(article,aside,nav,section) h1 { font-size: 1.5em; }

:-webkit-any(article,aside,nav,section) :-webkit-any(article,aside,nav,section) h1 { font-size: 1.17em; }

”`

:-webkit-any() 选择器匹配括号内列出的任何标签,即 article、aside、nav、section。 And inside an <article> , <aside> , <nav> or <section> tags is reduced to the size 1.50em of a normal上面演示中所展示的标题等。

原文由 Vikasdeep Singh 发布,翻译遵循 CC BY-SA 4.0 许可协议

这是一个错误吗?

不,这是大多数浏览器(包括 Edge、Internet Explorer、Opera、Chrome 和 Firefox)都遵循的预期行为。

为了在某种程度上证实这一点,有一个关于 Firefox 行为的错误报告已被关闭,状态 为 Wontfix ,可能是由于以下原因:

长话短说:我建议将此问题的状态更改为 wontfix,因为它符合更复杂的 html5 标准之一。

_https://bugzilla.mozilla.org/show_bug.cgi?id=1424001_

为什么会这样?

最初浏览器可能会遵守以下 W3C 指南:

部分可以包含任何级别的标题,但强烈建议作者仅使用 h1 元素,或者使用适合该部分嵌套级别的级别的元素。

还鼓励作者在分节内容的元素中显式包装节,而不是依赖于分节内容的一个元素中具有多个标题而生成的隐式节。

https://www.w3.org/TR/2011/WD-html5-author-20110809/headings-and-sections.html

以下示例与本指南一起提供,所有这些在(当时)都是有效的:

示例 1

 <h4>Apples</h4>
<p>Apples are fruit.</p>
<section>
  <h2>Taste</h2>
  <p>They taste lovely.</p>
  <h6>Sweet</h6>
  <p>Red apples are sweeter than green ones.</p>
  <h1>Color</h1>
  <p>Apples come in various colors.</p>
</section>

这是最不理想的版本,因为标记使得很难确定哪个标题应该最突出,并且它没有遵循上述指南。

示例 2

 <h1>Apples</h1>
<p>Apples are fruit.</p>
<section>
  <h2>Taste</h2>
  <p>They taste lovely.</p>
  <section>
    <h3>Sweet</h3>
    <p>Red apples are sweeter than green ones.</p>
  </section>
</section>
<section>
  <h2>Color</h2>
  <p>Apples come in various colors.</p>
</section>

此版本使查看标题层次结构变得容易得多,并遵循两个指导要点。

示例 3

 <h1>Apples</h1>
<p>Apples are fruit.</p>
<section>
  <h1>Taste</h1>
  <p>They taste lovely.</p>
  <section>
    <h1>Sweet</h1>
    <p>Red apples are sweeter than green ones.</p>
  </section>
</section>
<section>
  <h1>Color</h1>
  <p>Apples come in various colors.</p>
</section>

此版本还可以更轻松地查看标题层次结构并遵循两个指导要点。

您应该注意到,尽管使用了不同的标题元素, 示例 2示例 3 看起来都一样,这是因为这两个示例都遵循指南,同样有效并且传达相同的标题层次结构。

然而

在最近的草稿中,关于如何引导分段内容的指南发生了变化:

节可以包含级别等于其节嵌套级别的标题。作者应该为章节的嵌套级别使用适当级别的标题。

https://www.w3.org/TR/html53/sections.html#headings-and-sections

本指南表明,在上面提供的示例中, 示例 2 是标记数据的正确方法。

鉴于此,似乎合乎逻辑的是:

  • 此功能是根据原始指南实现的
  • 新指南建议 h1 元素不会成为分段内容中的合适标题,因为它们将设置在分段根中,但是,在使用它的情况下,它的样式将适合匹配嵌套级别的标题

分段内容元素始终被视为其最近的祖先分段根或其最近的分段内容祖先元素的子部分

https://www.w3.org/TR/html53/sections.html#headings-and-sections

概括

这是预期的行为,因为当标题嵌套在诸如 articlesection 等节内容中时,最初有多种传达标题层次结构的方法。现在使用相同的规则来确保标题反映嵌套部分的适当排名。

原文由 Hidden Hobbes 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏