首页 文章

在HTML中,块级元素是否总是包装<a>标签?

提问于
浏览
8

在HTML中,块级元素是否总是包装 <a> 标签?如果标记包含块级元素以确保应用正确的样式,该怎么办?例如可以这样

<h3><a href="/">Your Header</a></h3>

是的

<a href="/"><h3>Your Header</h3></a>

注意:我正在采用后一种方法来确保应用正确的样式(我正在使用遗留代码,这对于这一个元素不值得重新工作),但在这样做时我很想知道是什么社区的观点是 .

是的,我已经阅读了这个问题In HTML which way round should a and h1 be nested?但我不确定是否有一个不同或更灵活的规则适用于 <h3> 标签 .

接下来的评论并再次查看代码,我有两个可能的解决方案:

  • <a> 元素包装 <h3> 元素(在HTML5中确定)

  • .class a 添加到CSS,以便它继承父 div 样式,如下所示:

HTML

<div class="class">
    <h3><a href="/">Your Header</a></h3>
</div>

CSS

.class, .class a {
    width:296px;
    height:46px;
    overflow:hidden;
    color:#FE5815;
}

4 回答

  • 1

    在此上下文中,绝对允许 a 元素包含 h3 元素,至少根据HTML5 .

    a 元素称为"transparent"元素:它可以包含其父元素可能包含的任何内容 . 唯一的标准是它可能不包含任何其他"interactive"内容,例如其他 a 元素, button 元素, iframe 元素 . 在这种情况下,假设允许第一个版本,HTML5下也允许使用第二个版本 .

    This is the page in the HTML5 spec指定了这一点 . 不幸的是,需要一点解释才能理解......

  • 1

    请注意,HTML5中有一个案例

    <h3><a href="/">Your Header</a></h3>
    

    会有效,但是

    <a href="/"><h3>Your Header</h3></a>
    

    不会,而且 <h3> 元素的父元素是 <hgroup> 元素 .

    <hgroup> 元素只能包含 <h?> 子元素,因此,当 <a> 元素的透明内容模型允许 <h3> 成为其子元素时, <a> 元素将作为 <hgroup> 的子元素保持无效 .

    在这种情况下

    <hgroup>
      <h3>
        <a href="/">Your Header</a>
      </h3>
    </hgroup>
    

    <a href="/">
      <hgroup>
        <h3>Your Header</h3>
      </hgroup>
    </a>
    

    是唯一有效的安排 .

  • 9

    两者都可以

    <h3><a href="/">Your Header</a></h3>
    
    
    <a href="/"><h3>Your Header</h3></a>
    

    但如果我不关心锚中的任何东西,我会使用第一个,我只是想让它看起来像 <h3>

    如果我担心锚定需求的特定部分,我将使用第二个 <h3> . 对于

    下面的例子我需要第二个 .

    <a href="/"> check normal text <h3>check large text</h3></a>
    
  • 2

    在HTML 4.01和XHTML中, h3 标记可能包含 a 标记,但不是相反 .

    在HTML5中,两种方式都是有效的 . 如果 a 标记包含 h3 标记,则 a 标记不得嵌套在不能包含 h3 元素的元素中 .

相关问题