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

时间:2011-06-03 19:22:21

标签: 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>

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

Line 163, Column 41: document type does not allow element "DIV" here; missing one of "OBJECT", "MAP", "BUTTON" start-tag

我正在使用

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">

4 个答案:

答案 0 :(得分:7)

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

答案 1 :(得分:7)

除法<div>是块级元素,而锚<a>是内联元素。来自w3c web site

  

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

您可能正在使用分部,因为您需要块级行为,例如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>

CSS

a.forMuzammil {
    display:block;
}
a.forMuzammil span {
    display:block;
}

答案 2 :(得分:1)

div标记内不能包含a标记。同样在您提供的代码示例中,您不要关闭a标记。

答案 3 :(得分:0)

如果您使用的是HTML4文档类型,则无法在a-tag中使用DIV等块元素。

请尝试使用此doctype:

<!DOCTYPE html> 

并确保为锚标记添加缺少的结束标记; </a>

<!DOCTYPE html>是HTML5的doctype。根据HTML5的标准div标签现在允许在a标记内

希望这有帮助。