Что значит " - PullRequest
       31

Что значит "

43 голосов
/ 30 апреля 2011

Я не могу поверить, что происходит на моем сайте. Когда я добавлю эту строку:

<html xmlns="http://www.w3.org/1999/xhtml">
<!DOCTYPE html>
<html>
 <head>

Все отлично работает. И когда я этого не делаю, CSS «портится», все становится по-другому, а верстка становится «уродливой».

Как эта линия может решить все проблемы?!

Ответы [ 4 ]

81 голосов
/ 30 апреля 2011

Вы смешиваете HTML с XHTML .

Обычно для определения версий HTMLish-версий используется объявление <!DOCTYPE> (в данном случае,HTML или XHTML).

Различные языки разметки будут вести себя по-разному.Мой любимый пример - height:100%.Посмотрите в браузере следующее:

XHTML

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
  <style type="text/css">
    table { height:100%;background:yellow; }
  </style>
</head>
<body>
  <table>
    <tbody>
      <tr><td>How tall is this?</td></tr>
    </tbody>
  </table>
</body>
</html>

... и сравните его со следующим: (обратите внимание на заметное отсутствие декларации <!DOCTYPE>)

HTML (режим причуд)

<html>
<head>
  <style type="text/css">
    table { height:100%;background:yellow; }
  </style>
</head>
<body>
  <table>
    <tbody>
      <tr><td>How tall is this?</td></tr>
    </tbody>
  </table>
</body>
</html>

Вы заметите, что высота таблицы резко отличается, и единственное различие между двумя документами - это тип разметки!

Это хорошо ... что делает <html xmlns="http://www.w3.org/1999/xhtml">? 1025 * Это не отвечает на ваш вопрос.Технически, атрибут xmlns используется корневым элементом документа XHTML: (согласно Wikipedia ) Корневым элементом документа XHTML должно быть htmlи должен содержать атрибут xmlns, чтобы связать его с пространством имен XHTML. Понимаете, важно понимать, что XHTML не HTML, а XML - оченьдругое существо.(хорошо, это другое существо) Атрибут xmlns - это только одна из тех вещей, которым документ должен быть действительный XML.Зачем?Потому что кто-то, работающий над стандартом, так и сказал;) (вы можете прочитать больше о пространствах имен XML в Википедии , но я опускаю эту информацию, потому что она на самом деле не относится к вашему вопросу!) Но тогда почему <html xmlns="http://www.w3.org/1999/xhtml"> исправляет CSS?

Если структурировать ваш документ примерно так ... (как вы предлагаете в свой комментарий )

<html xmlns="http://www.w3.org/1999/xhtml">
<!DOCTYPE html>
<html>
<head>
[...]

.... исправляет ваш документ, заставляет меня поверить, что вы не так много знаете о CSS и HTML (без обид!) и что правда в том, что без <html xmlns="http://www.w3.org/1999/xhtml"> он ведет себя нормально и с <html xmlns="http://www.w3.org/1999/xhtml"> это не так - и вы просто думаете это так, потому что вы привыкли писать недопустимый HTML и, таким образом, работаете в режиме quirks .

Приведенный выше пример является примером той же проблемы;большинство людей думают, что height:100% должно привести к тому, что высота <table> будет целым окном, а DOCTYPE фактически нарушает их CSS ... но это не совсем так;скорее они просто не понимают, что им нужно добавить правило CSS html, body { height:100%; } для достижения желаемого эффекта.

23 голосов
/ 30 апреля 2011

Это пространство имен XML. Это требуется при использовании типов документов XHTML 1.0 или 1.1 или mimetypes application / xhtml + xml.

Вы должны использовать HTML5 doctype, тогда он вам не нужен для text / html. Лучше начать с шаблона, как это:

<!DOCTYPE html>
<html>
    <head>
        <meta charset=utf-8 />
        <title>domcument title</title>
        <link rel="stylesheet" href="/stylesheet.css" type="text/css" />
    </head>
    <body>
            <!-- your html content -->
            <script src="/script.js"></script>
    </body>
</html>



Если вы прямо указали свой Doctype - сделайте и подтвердите html и ваш css .
Как правило, это решит проблемы с макетом.

7 голосов
/ 30 апреля 2011

Похоже, ваш сайт имеет CSS или JS, который зависит от работы в режиме причуд. Вот почему вам нужен мусор выше вашего типа документа, чтобы отобразить «правильно». Я предлагаю удалить указанный мусор и затем исправить ваш CSS + JS, чтобы он фактически работал в стандартном режиме; Вы спасете себя от боли в долгосрочной перспективе.

0 голосов
/ 30 апреля 2011
The namespace name http://www.w3.org/1999/xhtml 
is intended for use in various specifications such as:

Recommendations:

    XHTML™ 1.0: The Extensible HyperText Markup Language
    XHTML Modularization
    XHTML 1.1
    XHTML Basic
    XHTML Print
    XHTML+RDFa

Проверьте здесь для более подробной информации

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...