1. ホーム
  2. ハイパーリンク

[解決済み】HEAD、BODY、HTMLタグは必ず書く必要があるのでしょうか?

2022-04-22 03:54:44

質問

を書く必要があるのでしょうか? <html> , <head><body> タグは?

例えば、こんなページが作れます。

<!DOCTYPE html>     
    <meta http-equiv="Content-type" content="text/html; charset=utf-8">
    <title>Page Title</title>
    <link rel="stylesheet" type="text/css" href="css/reset.css">
    <script src="js/head_script.js"></script><!-- this script will be in head //-->


<div>Some html</div> <!-- here body starts //-->

    <script src="js/body_script.js"></script>

そしてFirebugは正しくヘッドとボディを分離する。 <イグ

W3C Validationでは、有効であるとされている。

でも、このやり方はウェブではほとんど見かけませんね。

このタグを書く理由はあるのでしょうか?

どのように解決するのですか?

を省略することができます。 html , head そして body タグ は、確かにHTMLの仕様で認められています。その根本的な理由は、ブラウザは常に既存のウェブページとの整合性を求めており、ごく初期のバージョンのHTMLではそれらの要素が定義されていなかったからです。HTMLが 2.0 タグがない場合、推測されるような方法で行われました。

プロトタイプを作るときや、特にテストケースを書くときに、タグを省略すると、マークアップを当該テストに集中させることができるので、便利だと感じることがよくあります。推論プロセス べきである は、Firebugで見るのと全く同じ方法で要素を作成し、ブラウザはその方法でかなり一貫しています。

でも...

IEにはこの分野で少なくとも1つの既知のバグがあります。IE9 でさえも、この現象が見られます。マークアップがこうだとします。

<!DOCTYPE html>
<title>Test case</title>
<form action='#'>
   <input name="var1">
</form>

次のようなDOMが得られるはずです(他のブラウザでもそうです)。

HTML
    HEAD
        TITLE
    BODY
        FORM action="#"
            INPUT name="var1"

しかし、IEではこうなる。

HTML
    HEAD
       TITLE
       FORM action="#"
           BODY
               INPUT name="var1"
    BODY

ご自分の目で確かめてください。

このバグは form 開始タグの前にあるすべてのテキストコンテンツと body 開始タグを使用します。