• 締切済み

DOCTYPE宣言文について

naokitaの回答

  • naokita
  • ベストアンサー率57% (1008/1745)
回答No.8

横から失礼。 過去モードと標準モードでレンダリングが変わります。 ブラウザによっても変わります。 <?xml version="1.0" encoding="Shift_JIS"?> このXML宣言が有る事によって古いIEブラウザでは、 標準モードなのに過去互換モードとして解釈されます。 また、DOCTYPEが無い場合と、 後半の部分のURL「システム識別子」が無い場合も過去互換モードになります。 更に、IEでは互換性を変更する仕様もあります。 この辺を理解していないと、 autoが効かない = センターリング出来ないとか、 幅が違う = カラム落ちするとかになり、困惑します・・・ ---------------- 対処法としては、 1、XHTMLでのDOCTYPEスイッチを理解する。 2、標準モードで書く(XHTMLでなくても良い) 3、XML宣言をわざと書かない。 4、標準モードでも過去互換モードでも同じ表現になるCSSで書く。 5、ハックを使う 6、ブラウザを変更する(古いブラウザを無視・サポート外) 7、それ以外のCSSでの因果関係があるかもしれません。 8、諦める などなど他にも選択・方法があり、人によって方法や選択肢が違うが、 適当にやると更に別の問題も発生します・・・ #6.7回答では、XHTMLstrictだからとかmarginのショートハンドなどを問題視されているようですが、#6.7さんには失礼ながら全く問題無いので、誤解されないように。 また、先の画像のセンターリングだけの話なら、display: block;もautoも不要です(ケースバイケースでは使いますが) <p style="text-align:center;"><img src="photo.jpg" width="400" height="300" alt="海の風景" /></p>

feetoh
質問者

補足

naokita様 ご指導有難うございます。対処法の1、2、を検討中なんですが、なにせ超初心者ですので とにかく最初は購入した本のとうりソースを打ち覚えようと思っている時に「auto」が反応せず質問させて頂きました。本のとうりの画面が出ないと次に進めず何日も悩んでいる次第です。 <p style="text-align:center;">も試して中央に移動しましたが、本の後半の複雑なソース(私にとっては)になるとやはり本のとうり「auto」で処理した方が未熟な私には好都合ですので悩んでいます。今はとりあえずhtmlを最初から勉強し、DOCTYPE宣言を理解しようと思っていますが。(正直難しいです)本当にご親切に有難うございました。 

関連するQ&A

  • DOCTYPE宣言は厳密に気にするべきか??

    現在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-transitional.dtd"> の内容で記述(XHTML 1.0 Transitionalで記述)することは可能ですか?? つまり、HTML 4.01 Transitionalを宣言して終了タグなど、XHTML 1.0 Transitionalの方式で書いても正確に表示されるかを知りたく思って おります。 2.DOCTYPE宣言を書いてないサイトが多く見受けられますが、 この場合はどのようにDOCTYPE宣言と捉えられるのでしょうか? また、この場合のデメリットとかはありますでしょうか?? 以上、わかる方いましたらよろしくお願いいたします。

    • ベストアンサー
    • HTML
  • DOCTYPE宣言について

    自分はXHTML1.0を参考通り <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> このように二列で入力しているのですが、一列で入力しても大丈夫なのでしょうか?また、オススメの宣言タイプ?があったら教えてください。お願いします。

  • XHTML1.1でのXML宣言とDTD宣言の書き方

    XML宣言によるレイアウトの崩れ等の質問はありましたが今回の質問と同じ内容は私には見当たらなかったため質問させて頂きます。 XHTMLでのXML宣言を <?xml version="1.0" encoding="utf-8"?> と記述しています。 上記の記述と <?xml version="1.0" encoding="UTF-8"?> とで、文字コードの大文字か小文字かの違いだけなのですがどちらの方が良いのでしょうか。 同じくDTD宣言を <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> と記述しています。 XMLでは大文字と小文字を区別して扱うため必ず半角で書かなければならないとされていますが、XHTMLでマークアップされているサイトのソースを見るとどこもXML宣言での文字コードとDTD宣言では大文字が使用されています。 細か過ぎるというのは分かっているのですが厳密にはどのような記載が正しいのでしょうか。 ※今回投稿カテゴリーの小カテゴリーにて”XML”を選択致しましたがXHTMLについての質問の場合”XML”と”HTML”どちらにするべきでしょうか。 合わせてご返答、又はご意見を頂戴できれば幸いです。

    • 締切済み
    • XML
  • html宣言文同じサイト内に数種類混在さても問題ありませんか?

    現在、サイトを制作する際にDreamWeaverを使用し、htmlの宣言文xhtml 1.0 strictをデフォルトにしていますが、スクリプトエラーが出ます。そこで、xhtml 1.0 transitionalに変更すると直ったりします。 そこで質問なのですが、ページごとに宣言文(htmlのversion)を変えて、1つのサイトで複数の宣言文(htmlのversion)を混在させる際のデメリットを教えて頂きたく思います。有識者の方々のご教授をお待ちしております。

    • ベストアンサー
    • HTML
  • [javascript]DOCTYPE宣言対応についてお教え下さい。

    [javascript]DOCTYPE宣言対応についてお教え下さい。 皆様、お世話になります。 JavaScriptがDOCTYPE宣言によって動作しなくなるということを質問したり解決しているブログは多く見ますが・・・それでも解決出来ず・・・すみません、お教えください。 動作するソースはこちらです。 <html> <head> <title></title> <script language="JavaScript"> function init() { effect(); } function effect() { var element = document.getElementById("sample"); var wanna_width = window.innerWidth - 500; element.style.backgroundColor = 'red'; element.style.width = wanna_width; } </script> </head> <body onload="init();" onresize="effect();"> <div id="sample">sampleText</div> </body> </html> これに、以下のDOCTYPE宣言を入れたいのです。 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 事前調査通り、動作しません。 1)CSS 初期包含ブロックが body 要素ではなく html 要素になるのでdocument.documentElement から取得しないといけない。 2)0以外のサイズ指定には単位が必要。 このようなことは何となく調べがついたのですが。 お手数をお掛け致します。 お教え下さいませ。 追記:重ねてお手数をお掛け致しますが、すこし具体的に改善方法をお教えいただけますと非常に助かります。

  • DOCTYPE宣言とdocument.body.clientHeight

    お世話になります。 ブラウザのサイズを取得するにはどうすればよいのでしょうか? document.body.clientHeightで取得出来るのは分かりましたが DTDにより動作したり、しなくなるのも分かりました。 ×動作しない <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> ○動作する <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 後者のものですとIEでは動作しますが、firefoxでは動作しません。 何か対処法は、御座いませんでしょうか? 一番望む形は <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> の宣言で、ブラウザサイズが取れるようになるのがベストです。 CSSを使用しているので<?xml version="1.0" encoding="UTF-8"?>を入れると 表示モードが互換になるので・・・。 対応したいブラウザはIE6.0、firefox,Safariです。 一応ソース <?xml version="1.0" encoding="UTF-8"?> <!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"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <script> function init(){ var bodyHeight = document.body.clientHeight; alert(bodyHeight); } </script> </head> <body onload="init();"> <div> ほげ </div> </body> </html>

  • 教えてください。ホームページを作っているのですが、宣言文を入れると、中

    教えてください。ホームページを作っているのですが、宣言文を入れると、中央に配置できなくなります。 これはどうすればよいのでしょうか?? <?xml version="1.0" encoding="UTF-8"?> <!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="ja" lang="ja"> <head>

  • 携帯サイトを作成しているのですが、DOCTYPE宣言で

    携帯サイトを作成しているのですが、DOCTYPE宣言で <!DOCTYPE HTML PUBLIC \"-//i-mode group (ja)//DTD XHTML i-XHTML(Locale/Ver.=ja/2.3) 1.0//EN\" \"i-xhtml_4ja_10.dtd\"> (ドコモ使用時) だけがページに表示されてしまいます。書き方に間違いがあるのでしょうか? 又、これは受け入れられてないのでしょうか? どなたかわかる方アドバイスよろしくおねがいします。 ↓プログラム添付 <?php $agent=$_SERVER['HTTP_USER_AGENT']; if(preg_match("/DoCoMo/", $agent)) { print("<?xml version=\"1.0\" encoding=\"Shift_JIS\"?>\n"); print ("<!DOCTYPE HTML PUBLIC \"-//i-mode group (ja)//DTD XHTML i-XHTML(Locale/Ver.=ja/2.3) 1.0//EN\" \"i-xhtml_4ja_10.dtd\">\n"); print ("<html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"ja\" xml:lang=\"ja\">\n"); print ("<head>\n"); print ("<meta http-equiv=\"Content-Type\" content=\"application/xhtml+xml; charset=Shift_JIS\" />"); } elseif・・・・

    • ベストアンサー
    • PHP
  • xmlの宣言文をPHPで出力するには

    PHP4.3を使っています。 PHPの後にHTMLを入れて表示させようと思っていますが、HTML文の先頭にXMLの宣言文が入っており、そこでエラーになってしまいます。 <?php ・・・ ・・・ ?> <?xml version="1.0" encoding="Shift_JIS"?> <html> ・・・ </html> この1行をphpのほうにいれてprint文で打ってやればもちろんエラーはでないのですが、HTMLのほうは別な人間が作っており、できればPHPとHTMLは分離させておきたいと考えています。 どのような対処法がいいでしょうか。 よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • xml宣言をしたら・・・

    XHTML+CSSを勉強中なのですが、下記のソースを見てください。 <?xml version="1.0" encoding="Shift_JIS"?> <!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="ja" lang="ja"> <head> -----------省略------------- </head> <body> <div id="container"> -----------省略------------- </div> </body> </html> xml宣言をするまでは画面中央に表示されていたのですが、宣言の行を追加したら左側に寄ってしまいました。 CSS部分は以下のようになっています。 body { font-size: 100%; font-family: sans-serif; color: #333333; margin: 0; padding: 0; background-color: #F0F0F0; } #container { width: 800px; position: relative; margin: 0 auto; background-color: #FFFFFF; } marginの設定の仕方が悪いのかなとか考えたんですが、わかりませんでした。 用は<table align="center">のようなことがしたいんです。 どなたかご教授よろしくお願いします。

    • ベストアンサー
    • XML