Co robi""?

Nie mogę uwierzyć, co się dzieje na mojej stronie. Kiedy dodam ten wiersz:

<html xmlns="http://www.w3.org/1999/xhtml">
<!DOCTYPE html>
<html>
 <head>
Wszystko działa dobrze. A kiedy tego nie robię, CSS "psuje" się, wszystko staje się inne, a layout staje się"brzydki". Jak ta linia może rozwiązać wszystkie problemy?!
Author: jeroen, 2011-04-30

4 answers

Mieszasz HTML z XHTML .

Zazwyczaj deklaracja <!DOCTYPE> jest używana do rozróżniania wersji języków HTMLish (w tym przypadku HTML lub XHTML).

Różne języki znaczników będą zachowywać się inaczej. Mój ulubiony przykład to height:100%. Zobacz w przeglądarce:

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>

... i porównaj to z poniższym: (zwróć uwagę na widoczny brak deklaracji <!DOCTYPE>)

HTML (dziwactwa mode)

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

Zauważysz, że wysokość tabeli jest drastycznie inna, a jedyną różnicą między tymi dwoma dokumentami jest typ znaczników!

To miłe... co robi <html xmlns="http://www.w3.org/1999/xhtml">? To nie odpowiada na twoje pytanie. W języku XHTML, w języku XHTML, atrybut xmlns jest używany przez element główny dokumentu XHTML: (zgodnie z Wikipedia)

Głównym elementem dokumentu XHTML musi być html i musi zawierać xmlns atrybut kojarzy go z przestrzenią nazw XHTML.

Widzisz, ważne jest, aby zrozumieć, że XHTML to nie HTML, ale XML - zupełnie inna istota. atrybut xmlns jest jedną z tych rzeczy, które dokument musi mieć poprawny XML. Dlaczego? Bo ktoś pracujący nad standardem tak powiedział;) (więcej o przestrzeniach nazw XML można poczytać na Wikipedii ale pomijam te info, bo nie są one w rzeczywistości istotne dla Twojego pytanie!)

Ale dlaczego <html xmlns="http://www.w3.org/1999/xhtml"> naprawia CSS?

Jeśli struktura dokumentu tak... (jak sugerujesz w twój komentarz )

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

... naprawia twój dokument, to prowadzi mnie do przekonania, że nie wiesz tyle o CSS i HTML (bez obrazy!) i że prawda jest taka, że bez <html xmlns="http://www.w3.org/1999/xhtml"> zachowuje się normalnie i Z <html xmlns="http://www.w3.org/1999/xhtml"> nie jest - a ty po prostu myślisz jest, ponieważ jesteś przyzwyczajony do pisania nieprawidłowego HTML i w ten sposób działa w trybie dziwactwa.

Powyższy przykład, który podałem, jest przykładem tego samego problemu; większość ludzi uważa, że {[4] } powinno spowodować, że wysokość <table> będzie całym oknem, a DOCTYPE faktycznie łamie ich CSS... ale tak naprawdę nie jest; raczej po prostu nie rozumieją, że muszą dodać regułę html, body { height:100%; } CSS, aby osiągnąć pożądany efekt.

 76
Author: Richard JP Le Guen,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-09-30 06:08:47

Jest przestrzenią nazw XML. Jest to wymagane, gdy używasz XHTML 1.0 lub 1.1 doctypes lub application/xhtml + xml mimetypes.

Powinieneś używać HTML5 doctype, wtedy nie potrzebujesz go do tekstu / html. Lepiej zacznij od szablonu tak:

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



Gdy umieścisz swój Doctype prosto-zrób i zatwierdź html i twój css .
które zwykle będą Cię rozsiewać problemy z układem.

 22
Author: tereško,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-05-23 00:07:22

Wygląda na to, że Twoja strona ma CSS lub JS, który zależy od działania w trybie dziwactwa. Dlatego potrzebujesz śmieci nad swoim doctype, aby renderować "poprawnie". Sugeruję usunięcie wspomnianych śmieci, a następnie naprawienie CSS + JS, aby faktycznie działał w trybie standardów; zaoszczędzisz sobie wiele bólu na dłuższą metę.

 7
Author: Boris Zbarsky,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-04-30 02:41:34
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

Sprawdź tutaj aby uzyskać więcej szczegółów

 0
Author: nemesisfixx,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-04-29 23:32:19