Почему этот Doctype "DIV" не разрешен? - PullRequest
5 голосов
/ 03 июня 2011

Я создал этот кусок кода.

<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>

И когда я проверяю код под проверкой HTML W3, это выдает мне ошибку:

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 ]

7 голосов
/ 03 июня 2011

Разделение <div> - это элемент уровня блока, а якорь <a> - это встроенный элемент.С веб-сайта w3c :

Как правило, элементы уровня блока могут содержать встроенные элементы и другие элементы уровня блока.Как правило, встроенные элементы могут содержать только данные и другие встроенные элементы.Это структурное различие присуще идее о том, что блочные элементы создают «более крупные» структуры, чем встроенные элементы.

Скорее всего, вы используете деления, потому что вам нужно поведение на уровне блоков, например width и height.

Не изменяя свой 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;
}
7 голосов
/ 03 июня 2011

Div - это элементы уровня блока - они не должны быть включены в теги привязки.

1 голос
/ 03 июня 2011

Вы не можете иметь тег div внутри тега a.Также в приведенном вами примере кода тег a не закрывается.

0 голосов
/ 03 июня 2011

Нельзя использовать блочные элементы, такие как DIV внутри a-тега, если вы используете тип документа HTML4.

Попробуйте этот тип документа:

<!DOCTYPE html> 

и убедитесь, что вы добавили отсутствующий конечный тег для тега привязки; </a>

<!DOCTYPE html> - это тип документа для HTML5. И в соответствии со стандартом для HTML5 div теги теперь разрешены внутри тега a

Надеюсь, это поможет.

...