Html <;span>;内部<;h>;标签,验证错误

Html <;span>;内部<;h>;标签,验证错误,html,validation,Html,Validation,有验证错误,不知道为什么会发生,有人能帮我修复吗 第317行第26列:在此上下文中,元素h3不允许作为元素span的子元素。(正在抑制来自此子树的进一步错误。) 主页 元素跨度的内容模型: 措辞内容 <ul id="sdt_menu" class="sdt_menu"> <li> <a href="home.html"> <img src="images/imagesPop/2.jpg" alt=" Woman with

有验证错误,不知道为什么会发生,有人能帮我修复吗

第317行第26列:在此上下文中,元素h3不允许作为元素span的子元素。(正在抑制来自此子树的进一步错误。)

主页
元素跨度的内容模型: 措辞内容

<ul id="sdt_menu" class="sdt_menu">
    <li>
     <a href="home.html">
      <img src="images/imagesPop/2.jpg" alt=" Woman with child walking up the hill">
      <span class="sdt_active"></span>
      <span class="sdt_wrap">
       <h3 class="menuHT"><span class="sdt_link">Home</span></h3>
       <h6 class="menuHB"><span class="sdt_descr">Main page</span></h6>
      </span>
     </a>
    </li>
    <li>
     <a href="about.html">
      <img src="images/imagesPop/6.jpg" alt="The old image of Lulworth tower">
      <span class="sdt_active"></span>
      <span class="sdt_wrap">
       <h4 class="menuHT"><span class="sdt_link">About</span></h4>
       <h6 class="menuHB"><span class="sdt_descr">General Info.</span></h6>
      </span>
     </a>
     <div class="sdt_box">
      <a href="home.html">blablabla</a>
      <a href="home.html#AboutSection">Shopping Cart</a>
      <a href="#">Interactive Maps</a>
     </div>
    </li>
    <li>
     <a href="attractions.html">
      <img src="images/imagesPop/1.jpg" alt="The rock arc know as Durdle Door">
      <span class="sdt_active"></span>
      <span class="sdt_wrap">
       <h4 class="menuHT"><span class="sdt_link">Attractions</span></h4>
       <h6 class="menuHB"><span class="sdt_descr">Place to visit</span></h6>
      </span>
     </a>
     <div class="sdt_box">
       <a href="#">Websites</a>
       <a href="#">Illustrations</a>
       <a href="#">Photography</a>
     </div>
    </li>
    <li>
     <a href="gallery.html">
      <img src="images/imagesPop/3.jpg" alt="Human taking photo (front view of how he do it)">
      <span class="sdt_active"></span>
      <span class="sdt_wrap">
       <h4 class="menuHT"><span class="sdt_link">Gallery</span></h4>
       <h6 class="menuHB"><span class="sdt_descr">Slide shows</span></h6>
      </span>
     </a>
    </li>
    <li>
     <a href="directions.html">
      <img src="images/imagesPop/5.jpg" alt="Path which dissapear at the end">
      <span class="sdt_active"></span>
      <span class="sdt_wrap">
       <h4 class="menuHT"><span class="sdt_link">Location</span></h4>
       <h6 class="menuHB"><span class="sdt_descr">Travel Info.</span></h6>
      </span>
     </a>
    </li>
    <li>
     <a href="accommodation.html">
      <img src="images/imagesPop/4.jpg" alt="Old fashion house (in Lulworth village)">
      <span class="sdt_active"></span>
      <span class="sdt_wrap">
       <h4 class="menuHT"><span class="sdt_link">Accommodation</span></h4>
       <h6 class="menuHB"><span class="sdt_descr">Hotel, flats</span></h6>
      </span>
     </a>

    </li>
   </ul>

错误是说
h3
span
的孩子。检查
span
是否在
h3
外部,而不是内部。否则,这段特定的代码是正确有效的

您可能会得到如下结果:

<span>
    <h3 class="menuHT"><span class="sdt_link">Home</span></h3>
</span>
您需要删除
外部的
,而不是内部的


正如你所猜测的那样:

  <span class="sdt_wrap">
   <h3 class="menuHT"><span class="sdt_link">Home</span></h3>
   <h6 class="menuHB"><span class="sdt_descr">Main page</span></h6>
  </span>

家
主页
将其替换为:

  <div class="sdt_wrap">
   <h3 class="menuHT"><span class="sdt_link">Home</span></h3>
   <h6 class="menuHB"><span class="sdt_descr">Main page</span></h6>
  </div>

家
主页
这就是问题所在(其中一个实例)

解释


在HTML中,不允许使用
display:block显示器内的code>元素(如
):内联元素(如
)。认为这是无效的HTML的理由是,在内联中包含块元素没有意义。块元素通常会中断页面的流程并转到新行,而内联元素则不会。与所有标题元素一样,h3是块级元素<另一侧的code>span
是一个内联元素。并且不能将块元素放在内联元素中。请注意,验证器并不关心实际的
显示
样式,而是关心
h3
span
的子项这一事实

解决方法是在此处不使用标题标记。不管怎样,对于菜单来说,它们在语义上是错误的!另一个忽略语义的选项是将
.sdt_wrap
a
div
而不是
span

OP从W3C验证器中得到消息“元素范围的内容模型:语法内容”。这是一个HTML5错误,但上面的答案涉及内联元素中的块级元素问题,这会影响早期版本的HTML

在HTML5中,将块级元素放在内联元素中实际上是可以的,但前提是父元素的内容模型允许它们。在这种情况下,是短语内容,它不包括块级元素,如标题

请参见3.2.4.1.5语法内容,了解HTML5中a中允许的元素列表

另请参见此线程:

不应将块级元素
放入
中。移除它。如果可能,也显示完整的代码。是否使用visual studio?发布更多的html。这是正确的,因为html不允许在内联元素中使用块元素。将
替换为
,它将起作用。@Praveen Kumar它只对验证程序起作用,而css不对其起作用(((@user2128789如我所说,用
替换
,它会工作的。它通过了验证,谢谢,但它在显示方面有问题((你需要相应地更改CSS。哈哈…很好的meme…:)我有一个更改字母大小的按钮,所以我必须将其设置为H,因为当我按下按钮时,菜单名必须更改其字体大小,为什么这需要一个H*元素?!1+来表示伟大的meme。然而,问题不是在内联元素中放置块元素;事实上,在中放置
h3
是有效的de>a
。问题在于for元素是,但只能在预期的位置使用。1+特别地,排除标题,因为它们只能在预期的位置使用。
  <div class="sdt_wrap">
   <h3 class="menuHT"><span class="sdt_link">Home</span></h3>
   <h6 class="menuHB"><span class="sdt_descr">Main page</span></h6>
  </div>
<span class="sdt_wrap">
    <h3 class="menuHT"><span class="sdt_link">Home</span></h3>
    <h6 class="menuHB"><span class="sdt_descr">Main page</span></h6>
</span>
<div class="sdt_wrap">
    <h3 class="menuHT"><span class="sdt_link">Home</span></h3>
    <h6 class="menuHB"><span class="sdt_descr">Main page</span></h6>
</div>