为什么不允许使用此Doctype"DIV"?

Muz*_*mil 5 html doctype w3c-validation

我创建了这段代码.

<a href="#">
  <!-- BEGIN #btnBox .btnBox --> 
  <div id="btnBox2" class="btnBox">
    <div class="btnleft"></div> <!-- BEGIN & END .btnleft -->
      <!-- BEGIN .btncenter --> 
      <div class="btncenter">
        <div id="btnText2" class="btnText">Want more? - check out my recent work</div>
      </div>
      <!-- END .btncenter -->            
      <div class="btnright"></div> <!-- BEGIN & END .btnright -->
  </div>
  <!-- END #btnBox .btnBox -->   
</a>
Run Code Online (Sandbox Code Playgroud)

当我在W3 HTML验证下验证代码时,它给了我一个错误:

Line 163, Column 41: document type does not allow element "DIV" here; missing one of "OBJECT", "MAP", "BUTTON" start-tag
Run Code Online (Sandbox Code Playgroud)

我在用

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
Run Code Online (Sandbox Code Playgroud)

g.d*_*d.c 8

Div是块级元素 - 它们不应包含在Anchor标记中.

  • ...因为锚元素是内联级元素. (2认同)

Ric*_*uen 7

除法<div>是块级元素,而锚<a>是内联元素.来自w3c网站:

通常,块级元素可以包含内联元素和其他块级元素.通常,内联元素可能只包含数据和其他内联元素.这种结构区别的固有特征是块元素比内联元素创建"更大"的结构.

您可能正在使用分区,因为您需要块级行为,例如widthheight.

在不更改DOCTYPE的情况下,可以使用CSS属性display使<span>元素的行为与<div>元素类似:

HTML

<a href="#" class="forMuzammil">
<!-- BEGIN #btnBox .btnBox --> 
<span id="btnBox2" class="btnBox">
    <span class="btnleft"></span> <!-- BEGIN & END .btnleft -->
    <!-- BEGIN .btncenter --> 
    <span class="btncenter">
        <span id="btnText2" class="btnText">Want more? - check out my recent work</span>
    <!-- END .btncenter -->    
    </span>
    <span class="btnright"></span> <!-- BEGIN & END .btnright -->
<!-- END #btnBox .btnBox -->     
</span>
</a>
Run Code Online (Sandbox Code Playgroud)

CSS

a.forMuzammil {
    display:block;
}
a.forMuzammil span {
    display:block;
}
Run Code Online (Sandbox Code Playgroud)