TopCSS > 標準準拠モードと後方互換モード・DOCTYPE宣言について - IEでドロップシャドウ画像に枠を表示する
News
各種ブログテンプレート
2006年3月11日

エントリー本文

標準準拠モードと後方互換モード・DOCTYPE宣言について - IEでドロップシャドウ画像に枠を表示する

Posted at March 11,2006 1:55 AM
Category:[CSS]
Tag:[, , , ]

IEでドロップシャドウ画像に枠を表示する以前エントリーした「CSSで画像に影をつける(ドロップシャドウ)」で、IEで画像枠が表示されない不具合についての対処方法です。
対処することで、スクリーンショットのようにIEでも画像枠が表示されるようになります。*1

元エントリーで記しているとおり、実験サイトではIEで画像枠(= padding プロパティ)がついていたのですが、エントリー時には画像枠がつかない状態になっていました。そのことについてあまり気にしていなかったのですが、先日この件に関するご質問を頂いて調べたところ、原因が判明しました。

おおざっぱな結論から申し上げますと、テンプレート1行目にあるXML宣言

<?xml version="1.0" encoding="utf-8"?>

が画像枠の表示に影響しています。当サイトでは1行目にXML宣言を記述しているため、実験サイト(XML宣言なし)と異なる結果になっていました。
表示の違いについては以下のサンプルでご確認ください。

XML宣言ありXML宣言なし

XML宣言が影響する原因は、下記の2点です。

  1. XML宣言が記述されている場合に「後方互換モード」になる
  2. IE6 の後方互換モード(および5.5以前)の場合、img 要素に padding プロパティが有効にならない

以下、順を追って説明します。

概要(標準準拠モードと後方互換モード・DOCTYPE宣言)

IEやMozilla 等のブラウザには、CSSに準拠してHTMLを表示するモードを「標準準拠モード」と、古い形式でマークアップされたHTMLに対応するための「後方互換モード」に対応しています。どちらのモードで表示されるかについては、以下のような DOCTYPE 宣言(文書型宣言)に依存します。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

標準準拠モードと後方互換モード、および DOCTYPE 宣言の種類等については下記に詳細な説明があります。

今すぐ調べる!ホームページ作成リファレンス標準モードと互換モードについて
カスタムチャンス! 雑記帖文書型宣言とブラウザの表示モード

XML宣言が記述されている場合に「後方互換モード」になる

1番目の原因で、IE6 では DOCTYPE 宣言を1行目(先頭)に書かないと、必ず「後方互換モード」として解釈されてしまうバグが存在します。つまり1行目にXML宣言が記述されているとこのバグが発生します。
カッコ書きで「先頭」と明記しているのは、同じ行の前にXML宣言を記述しても後方互換モードとして解釈されるためです。

Lucky bag::blogxml宣言について

後方互換モードで img 要素の padding プロパティが有効にならない

そして2番目の原因として、IE6 の後方互換モードでは img 要素の padding プロパティが有効にならないというバグがあります。標準準拠モードでは問題なく表示されます。

CSSバグリスト@CSSバグ辞典スレッドimg要素にパディングが効かない

このような経緯で、マークアップ1行目のXML宣言によって「画像枠が表示されない」という問題が発生します。

まとめ

IEで画像枠(padding)を表示するためには、下記の条件を満たしている必要があります。

  1. 1行目の先頭に DOCTYPE 宣言がある
  2. 標準準拠モードが有効になるDOCTYPE 宣言が記述されている

2番目の「標準準拠モードが有効になるDOCTYPE 宣言が記述されている」の意味は、DOCTYPE宣言を1行目の先頭に記述しても、宣言内容によっては後方互換モードとして解釈される場合があります。
下記の DOCTYPE 宣言では標準準拠モードとして解釈され、画像枠が表示されることを確認しています。

HTML 4.01 Strict DTD

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">

HTML 4.01 Frameset DTD(URLあり)

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">

HTML 4.01 Tranditional DTD(URLあり)

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

DOCTYPE宣言と標準準拠モード対応について

2番目にある「標準準拠モードが有効になるDOCTYPE 宣言が記述されている」ですが、DOCTYPE宣言と標準モードの対応状況については Microsoft の下記のサイトに掲載されています。

MSDN OnlineInternet Explorer 6 における CSS の拡張の !DOCTYPEの例

該当部分を引用させて頂くと下記の通りです。

LabelDefinitionURLありURLなし
HTML 4.0指定なし有効有効
HTML 4.0Frameset有効無効
HTML 4.0Transitional有効無効
HTML 4.0Strict有効有効
XHTML 有効有効

一覧の「Label / Definition / URL あり / URLあり」の組み合わせで有効(=標準準拠モード)・無効(後方互換モード)が決まります。例えば「HTML 4.01 Transitional」については「URLあり」の場合のみ有効になることがお分かりになると思います。
XHTMLについてはXML宣言を削除すれば有効になります。


*1 スクリーンショットは完成イメージです。

Posted by yujiro ReTweet This!
関連記事
この記事を読んだ人はこんな記事も読んでいます
人気エントリー
Hatena Hot Entries
Hatena Entries
トラックバックURL


トラックバック

ホームページ作成で気をつけること from ホームページ作成、アフィリエイト、アクセスアップで幸せです。
どうも。今日も元気にごちおです。 今日はホームページ作成の際、気をつけることをリストにしました。 商用ホームページを対象にしています。 ... [続きを読む]

Tracked on March 12, 2006 3:03 PM

写真に立体的な枠をつける from 波乗りーまん
写真をブログに載せても平べったく感じてたんで、 なんだかなーって思ってました 特... [続きを読む]

Tracked on April 2, 2006 1:28 AM

画像に影をつける from ♪poohな毎日♪
カスタマイズはほとんど終了して以前のエントリーで簡単に覚書を書きましたが、それ... [続きを読む]

Tracked on June 24, 2006 8:09 PM

画像にポラロイド風の飾り枠を設定しましょう(CSS編集) from yozoの気が向いたと記2.0
 せっかくの画像を記事に入れるのなら、ちょっと目立つように周りを飾ってみたくなりますよね♪ それでここの記事画像の枠線を設定しましょう(CSS編集)では... [続きを読む]

Tracked on November 15, 2006 6:15 PM

XHTML+CSSでIEだと表示くずれが発生してしまう原因 from ID-Blogger
普段使っているブラウザはCSSの解釈が最も正しいと評価されているMozilla系の「FireFox」... [続きを読む]

Tracked on July 12, 2007 3:36 AM

PukiWiki の DOCTYPE宣言 from
何故か IE で PukiWiki のページのみ表示が崩れると思ったら、えらいことを忘れていた。PukiWiki はデフォルトで XML 宣言を吐いていた... [続きを読む]

Tracked on February 19, 2008 8:20 AM

DOCTYPE from GSTYLE Blog
前回出てきた&lt;!DOCTYPE&gt;について。 HTMLはまず「DTD」(Document Type Definition:... [続きを読む]

Tracked on June 24, 2008 12:49 PM

ブラウザの表示モード(レンダリングモード) from creator's blog
多くのブラウザは、文書型宣言の書き方や文書型定義の種類によって表示モード(レン... [続きを読む]

Tracked on December 26, 2008 3:50 PM
コメント

先ほどからこの枠をつけるカスタマイズで苦戦しています。
枠自体はDOCTYPE 宣言を変更することにより表示できたのですが、
その代わりにCSSでの表示がおかしくなってしまいます。

具体的にはDOCTYPE 宣言を各種試してみたのですが、どうも1行目に
<?xml version="1.0" encoding="<$MTPublishCharset$>"?>
がないと、タイトルやサイドメニュー、エントリーの背景がページ背景と同じ色になってしまいます。

ちなみにCSSはスタイルシート生成ページで作ったものです。
どうか、なにかわかることがあればご教授下さい。

[1] Posted by ships : May 4, 2006 4:55 AM

>shipsさん
こんばんは。
ご質問の件ですが、文言だけでは解消できそうにありませんのでURLをご連絡頂けますでしょうか。URLを入力してコメントを再投稿されるか、公開されたくない場合はプロフィールのメールフォームでご連絡ください。
それではよろしくお願い致します。

[2] Posted by yujiro : May 8, 2006 10:01 PM

レスありがとうございます。
こんな感じです。TOP以外はDOCTYPE 宣言を変更していないので、意図した色で表示されているのですが・・・。

同時に質問なんですが、dropshadowのズレも上手く直らない状態です。
.shadow セレクタにmagrinを追加して修正しているのですがこれではshadowも一緒に動いてしまって・・・。

色々調整している所ですが、お時間があればお手数ですが助言頂けると大変助かります。
よろしくお願いいたします。

[3] Posted by ships : May 8, 2006 11:44 PM

>shipsさん
こんにちは。
XML宣言は

・必ず1行目の先頭に記述(2行目以降への記述は禁止)
・記述しない

のいずれかです(言及していませんが暗黙の了解となっています)。
http://www.atmarkit.co.jp/aig/01xml/declaration.html

したがってDOCTYPE宣言の下にあるXML宣言は1行目に記述するか、削除してください。
これが不具合の原因かどうか定かではありませんが、まずはこの点を修正してください。
それではよろしくお願い致します。

[4] Posted by yujiro : May 10, 2006 1:16 PM

こんばんは。お世話になってます。

早速修正してみましたが、やはりダメでした。
DOCTYPE宣言は以下のlinkを参考に全て試してみましたが、何れも CSSの配色が崩れるが枠は付く or 枠は付かないがCSSは正常 という結果になってしまいます。

http://html.dspt.net/mode.html
何も無し CSS:O 枠:X
HTML4.01Strict CSS:X 枠:O
HTML4.01Strict URI CSS:X 枠:O
HTML4.01Tranditional CSS:O 枠:X
HTML4.01Tranditional URI CSS:X 枠:O
XHTML1.1 CSS:X 枠:O

まだ作りたてで変な編集をしたとも思えないのですが・・何かわかりますでしょうか?よろしくお願いいたします。

[5] Posted by ships : May 10, 2006 8:07 PM

>shipsさん
こんばんは。
スタイルシートを拝見させて頂いたところ、配色の設定で「#」が付与されていない箇所がありました。
再度スタイルシート生成ツールで設定されるか、まずは公開テンプレートのスタイルシートをご利用して頂けますでしょうか。
それではどうぞよろしくお願い致します。

[6] Posted by yujiro : May 12, 2006 12:22 AM

こんばんは、ご迷惑かけました!
おかげで上手く表示されるようになりました。
ありがとうございます。

[7] Posted by ships : May 12, 2006 10:36 PM

>shipsさん
こんばんは。
ご連絡ありがとうございました。
無事に表示されてよかったです。
ではでは!

[8] Posted by yujiro : May 13, 2006 1:23 AM

yujiroさんこんにちは♪
今回MT復活させるにあたって、毎度のことですけど大変お世話になりました。
数が多すぎて(笑)ひとつひとつにお礼のコメントが書けませんでしたので、ここでお礼を言わせていただきます。
ありがとうございましたm(_ _"m)ペコリ

さて、今回3.2にした後画像に枠が私のもつかなくなっていました。
確かサイトでエントリーがあったと思い出してここにたどりつきました。
確かに3.1の時と1行目の記述が違っていますね。
これが枠が出なかった原因だったのですね。
XML宣言を削除してDOCTYPE宣言を1行目に変更してみましたら、ちゃんと枠が表示されるようになりました。
Blogの表示自体は崩れていないと思うのですが、どうでしょうか。
むずかしいことはよくわからないので(苦笑)方法はこれであっているのかどうかは不安ですけど。
とりあえず原因がわかって一安心です。

[9] Posted by し?ちゃん : May 28, 2006 5:02 PM

>し?ちゃんさん
こんにちは。
記事参照ありがとうございます。
表示は崩れずに正常に表示されています。
ではでは!

[10] Posted by yujiro : May 30, 2006 11:30 AM

yujiroさん、こんばんはー♪
IE6のimgタグでpaddingがどうして効かないのだろうって思って調べていたら、yujiroさんちにたどりつきました。恥ずかしながら、バグとは知りませんでした。(゚ー゚;Aアセアセ  
 yozoはお借りしているテンプレートの一行目のXML宣言を削除するわけにもいかないので、divのclassで設定するようにしました。いつものことですが、勉強になりました。ありがとーございまっす♪  
 また勝手ながらトラバ入れさせていただきました。めちゃくちゃお暇なときにでも見てやってくださいませ。m(_ _)m      押しかけ弟子より

[11] Posted by yozo : November 15, 2006 6:27 PM

>yozoさん
こんにちは。
コメント&トラックバックありがとうございました。
ではでは!

[12] Posted by yujiro : November 16, 2006 5:00 PM

>IE6 では DOCTYPE 宣言を1行目(先頭)に書かないと、必ず「後方互換モード」として解釈されてしまうバグが存在します。

私は今、HTML → XHTML にホームページを移行しています。
で、解決できない問題と葛藤していましたが、
この一文に救われました。。。
いやぁ、しっかりしてくれよMicrosoft ってかんじですね。。

[13] Posted by 通りすがりの者です : February 16, 2008 9:24 PM

>通りすがりの者ですさん
こんばんは。
コメントありがとうございました。
お役に立てたようでよかったです。
ではでは!

[14] Posted by yujiro : February 17, 2008 1:23 AM
コメントする
greeting

*必須



ご質問のコメントの回答については、内容あるいは多忙の場合、1週間以上かかる場合があります。また、すべてのご質問にはお答えできない可能性があります。予めご了承ください。

太字 イタリック アンダーライン ハイパーリンク 引用
[サインインしない場合はここにCAPTCHAを表示します]

コメント投稿後にScript Errorや500エラーが表示された場合は、すぐに再送信せず、ブラウザの「戻る」ボタンで一旦エントリーのページに戻り(プレビュー画面で投稿した場合は、投稿内容をマウスコピーしてからエントリーのページに戻り)、ブラウザをリロードして投稿コメントが反映されていることを確認してください。

コメント欄に(X)HTMLタグやMTタグを記述される場合、「<」は「&lt;」、「>」は「&gt;」と入力してください。例えば「<$MTBlogURL$>」は「&lt;$MTBlogURL$&gt;」となります(全て半角文字)

Now loading...
Introduction
Entry Trackbacks
ホームページ作成で気をつけること
 [ホームページ作成、アフィリエイト、アクセスアップで幸せです。] 03/12 15:03
写真に立体的な枠をつける
 [波乗りーまん] 04/02 01:28
画像に影をつける
 [♪poohな毎日♪] 06/24 20:09
画像にポラロイド風の飾り枠を設定しましょう(CSS編集)
 [yozoの気が向いたと記2.0] 11/15 18:15
XHTML+CSSでIEだと表示くずれが発生してしまう原因
 [ID-Blogger] 07/12 03:36
PukiWiki の DOCTYPE宣言
 [STUD &amp; Co. » CG / 映像 / 音楽制作] 02/19 08:20
DOCTYPE
 [GSTYLE Blog] 06/24 12:49
ブラウザの表示モード(レンダリングモード)
 [creator's blog] 12/26 15:50
Entries of this Category
Recent Entries
Recent Comments
Recent Trackbacks
QRcode

現在停止中です
携帯電話からこのQRcodeを撮影することで携帯用URLを取得することができます

URI for cellular phones
ギターに入った猫
Styles
Font Size
Default
For defective color vision
Gray Scale
RGB Color
Search this site

このブログをメールで購読する by:FeedBurner

loading ...
Categories
Monthly Archives
BlogPeople
Syndicate this site
FeedBurner(RSS1.0/RSS2.0/Atom)
Counter
これまでのアクセス
クリエイティブ・コモンズ・ライセンス
Powered by
Movable Type 5.02