現在WEBを独学で学んでおります。
そこでDOCTYPE宣言についていくつか疑問に思いました。
ひとつでもわかる方はご回答頂ければ幸いです。
1.<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01
Transitional//EN">
と、ソースの頭に記述しておいて
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitio …
の内容で記述(XHTML 1.0 Transitionalで記述)することは可能ですか??
つまり、HTML 4.01 Transitionalを宣言して終了タグなど、XHTML 1.0 Transitionalの方式で書いても正確に表示されるかを知りたく思って
おります。
2.DOCTYPE宣言を書いてないサイトが多く見受けられますが、
この場合はどのようにDOCTYPE宣言と捉えられるのでしょうか?
また、この場合のデメリットとかはありますでしょうか??
以上、わかる方いましたらよろしくお願いいたします。
No.5ベストアンサー
- 回答日時:
2.について
htmlのレンダリングには大きく分けて「標準モード」と「互換モード」というものが存在します。これら、モードの違いによって、レンダリングの法則が大きく変わります。特に、マージン・パディング・ボーダーあたりの規則が大きく変わるため、標準モードと互換モードではレイアウトが大きく崩れる原因となります。
以下のリンクを参照して欲しいのですが、
http://hxxk.jp/2006/12/19/2100
上記ページの「検証用リソースと検証結果」の部分をご覧ください。一覧につけられたリンクは、そのDOCTYPE宣言ならどんなレンダリングに結果なるかをあらわしています。もしIEをお使いなら、リスト最上段の「なし」と、リスト4段目(html4.01のloose)とを比較してみてください。これらはDOCTYPE宣言以外、htmlのソースも適用しているCSSも全く同一のものです。しかしモードが違うためレンダリング規則が変わってしまっています。
DOCTYPE宣言とは、Webにおける共通ルールの宣言なのです。「食いタン、メンゼンピンフの有り無し」を一番最初に宣言してるわけです。この宣言が無ければ、各ブラウザが「俺ルール(=互換モード)」に則ってレンダリングをするわけです。みんながIEを使っていた時代は、「俺ルール=みんなのルール」だったのでレンダリングの違いを気にすることもなく、DOCTYPE宣言がなくてもあまり困りませんでした。しかし現在、Firefoxを筆頭にOpera、Safari、Slapenir、Lunascapeに、さらにIEでもMacIEにIE7に・・・といった具合に群雄割拠の様相を呈しています。DOCTYPE宣言はルール統一のための必須条件と考えてよいのではないでしょうか。
Eefedorさんが質問を書き込みした際、書かれたDOCTYPE宣言の一部がリンクになってますよね?そちらをクリックしてみてください。なにやらプログラムチックなものが表示されましたよね。コレがいわゆる「xhtml(transitional)のルールブック」なのです。各ブラウザはこのルールブックに則ったレンダリングをしようと頑張るわけです。このルールブックに則っていれば各ブラウザごとに見た目が変わることなんて無いはずなんです。無いはずなんですが…ブラウザの世界にも出来る子と出来ない子がいる訳でして。IEご兄弟にはもうちょっと頑張って欲しいものです。
DOCTYPE宣言については以上の様な感じです。ただ、この説明は私の意訳や勝手読みも大いに含まれますw
ご勉強されているとのことですので、事実関係を一度ご確認してみるのもよいかもしれません。
以下は、W3C勧告のhtml4.01及びxhtml1.0の仕様書邦訳です。ただし、素人にはお薦め出来ませんw理解の前に挫折します。私もその口ですw
http://www.asahi-net.or.jp/~sd5a-ucd/rec-html401 …
http://msugai.fc2web.com/web/W3C/xhtml1SE/Cover. …
この回答への補足
回答ありがとうございます。
なるほど~大変ご丁寧に説明して頂きありがとうございます!
標準モードと互換モードはつい最近知ったのですが、
推奨タグと非推奨タグの表示・非表示の違いかと解釈して
いたのですが、マージン・パディング・ボーダーあたりの規則
も変わるのですね。
私はIEしか使っていなかったのでURLの表は大変参考になります。
しかし、DOCTYPE宣言ひとつとっても色々と難しいですね、、、
私はHTML+CSSでWEBサイトを作ろうと思っているのですが、
その場合はHTML4.01 Strictの方がよいですかね??
連投すいません、、、
面接用にと思い試行錯誤しております。汗w
どうもありがとうございました。
No.4
- 回答日時:
1.について
記述することは可能です。ただ、ブラウザ側はDOCTYPE宣言のあった仕様に則ってレンダリングをします。したがってたとえxhtml方式で書こうが、それをブラウザはhtml4.01として解釈します。
しかし、たいていのブラウザでは、それらの記述法の違い(<br />の/とか)を誤字のように解釈し、「うん、惜しいね。ホントはそうじゃないんだけど…今回は先生、大目にみてあげるよ☆」といった具合に、ブラウザが独自に修正してくれます(多分)。この辺は、ブラウザによって対応状況は違うと思います。
※確か、IE6先生はCSSでmargin:200;とか書いても「あぁ、コレは200pxって書きたかったんだろうな」って勝手読みしてくれたはずです。しかしコレは、必ずしも正しい先生のあり方ではないかもしれません。間違いを間違いとして指摘することも、教師としての務めだとおもいます。Firefox先生などは完全に無視します。結構厳しい先生ですw
2.については、すみません、書いてるうちについつい乗ってきちゃったので、分けて書きますw
この回答への補足
回答ありがとうございます。
なるほど、後々XHTMLに変える場合を想定してhtml4.01で宣言して
xhtml方式で書こうと思いましたがやめたほうがいいですよね??
割とHTML+CSSにしておけば移行はそんなに難しくないと聞きましたし、、、
どうもありがとうございました。
No.3
- 回答日時:
こういう空要素の記述をXHTMLの方式で書くのは問題ありませんが、XHTMLでしか使えない要素(ruby要素など)やCSSのプロパティを使ってはいけません。
<img src="hoge.png" alt="hoge" />
文法チェックなどを使うといいんじゃないでしょうか?
http://openlab.ring.gr.jp/k16/htmllint/
http://validator.w3.org/
http://jigsaw.w3.org/css-validator/
回答ありがとうございます。
空要素の記述はよいのですね、安心しました。
imgもスペースとスラッシュが必要でしたね。
どうもありがとうございました。
No.2
- 回答日時:
> 2.DOCTYPE宣言を書いてないサイトが多く見受けられますが、
> この場合はどのようにDOCTYPE宣言と捉えられるのでしょうか?
DOCTYPE宣言なし、と捉えられます。
最近のブラウザは概ねHTML3.2かSGML(HTMLの元となる言語)とみなしているようです。
> また、この場合のデメリットとかはありますでしょうか??
DOCTYPEを書かずにXHTMLを使うことは出来ません。
HTMLだけで考えるのであれば、文法に則っていてDOCTYPEがない、というだけであれば特別大きなデメリットはありません。
文法に則っていなければDOCTYPEがあろうがなかろうが表示に乱れが出るのは変わりありません。
スタイルシートを使う場合、現在使われているCSS2の定義やそれに基づく解説・サンプル公開サイトと、
実際のブラウザでの表示に違いが発生することがあります。
(DOCTYPEなしでは、CSS1に近い表示になるようです。)
回答ありがとうございます。
なるほど書いてないとHTML3.2かSGMLととらえられるのですね。
CSS2で表示したけらばDOCTYPE宣言をしないといけない
ようですね。
どうもありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- ASP・SaaS FC2 BLOG <AUDIO TAGを入れプレビューはOk テーンプレートを更新すると ✖ 1 2023/08/14 11:40
- JavaScript html5に変えるとスライドショーが消えてしまった。 3 2022/03/26 19:53
- HTML・CSS 私の能力からして間違っていないような気がします。 4 2022/09/30 13:24
- HTML・CSS <!doctype html>について コマンドではにですよね? 3 2022/12/11 04:13
- HTML・CSS (Javascript)印刷するファイルに応じて印刷プレビュー画面で用紙を自動的に切り替えたい!! 2 2022/04/11 12:04
- Instagram HTML5の廃止とJavaScript 2 2022/04/13 21:05
- JavaScript セレクトボックスを2つ設けて選択して初めてメッセを表示 1 2022/07/27 12:15
- JavaScript switch文のswitch(n)の部分を複数の値にするか、if文に変えてほしいです。 1 2022/07/27 17:18
- PHP PHPでCookieを使った訪問回数について 1 2023/05/28 14:10
- CGI CGIで出力するhtmlの<!DOCTYPE html>等のタグは要りますか? 2 2023/02/05 21:26
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excel VBA :URLの中で変数を使...
-
javaでhtmlファイルを開く方法
-
インラインフレームの横スクロ...
-
ドライアイスの持続時間
-
アメリカの最初に独立した13州...
-
<HTML>タグについて
-
中埜酢店 のよみかた
-
商売繁盛で笹もってこい!
-
白木屋のメニューの値段。
-
島根(松江、出雲)へ遊びに行...
-
花の名前を教えてください
-
田んぼの稲刈り
-
上部ヒンジ式の窓の開度を調整...
-
ストーブの芯の交換
-
拡張子「.stm」について
-
ドイツ語の「時間」の言い方
-
桐蔭学園卒業生があつまるBBS
-
葉巻の吸い方おしえてください。
-
安楽死についてのレポート
-
エアジョーダン6 カーマインを...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
セイヨウタンポポとカントウタ...
-
lang 英語と日本語など混ざる時は
-
noindexタグを試作ページの段階...
-
javaでhtmlファイルを開く方法
-
Excel VBA :URLの中で変数を使...
-
ベーシック認証時、キャンセル...
-
インラインフレームの横スクロ...
-
メール本文に変な文字が
-
iframeの中のページのリンクを...
-
複数のファイルをdiffで比較す...
-
フォルダの中の特定のファイル...
-
相対パスでリンクできない
-
VBAからhttpを呼びソースを取得
-
HTML5の宣言で画像に隙間が出来...
-
jQueryにてformの中を書き換え...
-
鉄腕アトム:トビオの母親
-
You Are The Sunshine Of My Li...
-
中埜酢店 のよみかた
-
Apacheのドキュメントルートを...
-
htmlのinput type="date"をgett...
おすすめ情報