![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
こんにちは。
HTMLについて、最近いろいろ考えるようになりまして。。。
IE・NNの独自タグ(以下、独自タグ)がありますよね。例えば<body>タグに使う「leftmargin」「rightmargin」、「marginwidth」「marginheight」など。
自分のウェブページがあって、古いブラウザーにも思う通りのレイアウト表示が可能であるよう、基本仕様として「HTML 4.01 Transitional」(システム識別子なし)でHTMLを書いています。
ところが、最近、「AnotherHTML」を知り、文法チェックを行った結果、「エラーですよ」といわれてしまいました。独自タグだから使うな、スタイルシートを使いなさい ということだと思います。
ここで、ボクが知りたいのは、
■1■
「HTML 4.01 Transitional」(システム識別子なし)で書く場合、独自タグを使ってはいけないの?
■2■
エラーがいやだから、独自タグを全部取っ払って、スタイルシート対応させたらエラーは消えるかもしれないけど、「表示」のほうは大丈夫なの?
以上の2つです。
これといった基準がないようようには思いますが、詳しい方、ご意見を聞かせていただけますか。
どうぞ宜しくお願いいたします。
No.2ベストアンサー
- 回答日時:
IEではそれほど問題ではありませんが、確かにNN4.Xまでを視野においた場合、NN用のmarginwidth等は記述しないとmarginが出てしまいますね。
いくら、CSSで<body>に「margin:0px;」としても、NN4.XはCSS導入が不完全(バグではなく不完備)なので、marginが出てしまいます。あとNN4.Xは、前者のようにCSS不完全なので、<h>や<p>などの「margin」を「0」にしても1知行分開いてしまいます。よって、NN4.Xまで視野におき、IEも視野においた場合のCSSの使用は限られてしまいます。
例えば、<h1>見出し</h1><p>本文</p>として、通常、見出しと本文の間に1行分隙間がでますが、これをCSSでくっつけたい場合、<h1>と<p>タグに「margin:0px;」を指定すると隙間が「0」になるのですが、NN4では、空いたままなので、デザイン上統一させるために、<h>や<p>は一切使わず、全て<div>でレイアウトするか、<table>を使用しますね。現在多くのサイトで<table>をレイアウトのために使用されているのはその名残だと思われます。
しかし、本来W3Cでは、レイアウトのために<table>を使うことは推奨されていません。ましてや、<h>や<p>を使わず、<div>のみでレイアウトするのは、HTMLの理論に反しています。HTMLではやはり、見出しがあって、必要ならば中見出しや小見出しがあって、本文や表があるべきです。つまり、
<h1>大見出し</h1>
<h2>中見出し</h2>
<h3>小見出し</h3>
<p>本文</p>
<h3>小見出し</h3>
<p>本文</p>
みたいになるのが本当です。
長くなりましたが、「Transitional」なら■1■は使えると思います。「stric」だと一応だめですね。
■2■上記長文を参考にして下さい。もしデザイン的に完璧なクロスブラウザを目指し、正しいHTML文法で作るなら、NN4.Xはあきらめるしかないかと思います。
実際、銀行やお役所関係でNN4.7を使っているところは見たことあるけど、それ以外でNN4.7をブラウザとして使用している会社などは私は見たことがないです。N6やN7はあるけど....。
丁寧なご指導をどうもありがとうございます。
非常にポイントがわかりやすく、痒いところに手がとどくといった感じです。
※やはり、「NN4.x」って問題児ですよね。
これを無視できないのが現状(クレジットカード会社のウェブサイト)なので、表示のために独自タグも(保険として)使わざるを得なんでしょうね。
![](http://oshiete.xgoo.jp/images/v2/common/profile/M/noimageicon_setting_02.png?e8efa67)
No.3
- 回答日時:
1.について:
"W3Cが提案・推奨している基準に対して正しい"HTML文書を書くという観点からいうと、HTML 4.01 Transitionalで書く場合は、ブラウザが独自に実装した要素や属性は使えません。 HTML 4.01 TransitionalのDTDで定義された記述規則に則って記述していることを宣言している以上、そのDTDで定義されていない要素や属性値などを使用することは、厳密には出来ないことになります。
HTML-lintなどのHTMLの文法チェッカでエラーとして引っかかっているのは、それを端的に示していると考えてよいでしょう
ただし、独自の仕様を取り込んでいるブラウザについては、HTML 4.01 TransitionalのDTDにない要素の記述についても、ブラウザ独自の解釈を行って、そのまま反映することがあります。 それは、HTMLの記述の正当性とは無関係に、解釈されると思います。
2.について:
独自の要素や属性を排除して、スタイルシートでレイアウト・デザインを整えた場合ですが、スタイルシートを正しく解釈できるブラウザであれば、スタイルシートの記述を誤らない限りは、そのHTMLの表示に問題が出ることはないでしょう。
逆に、スタイルシートにまったく対応していないブラウザであれば、そのHTMLの表示は、スタイルシートで指定したデザイン・レイアウトが一切反映されない表示になります。 こちらの場合、HTMLの書き方によってその影響は変わります。 ホームページビルダーのどこでも配置モードのようにスタイルシートでのレイアウトに過度に頼っている場合は、その文書の編集の手順によっては、まともに見られたものではなくなるかもしれませんし、スタイルシートでの装飾を適度に抑えていれば、プレーンテキストのような味気ない表示になるだけですむかもしれません。
また、Netscape 4.xxのように、スタイルシートの実装にバグの多いブラウザの場合、いろいろなところでスタイルシートの反映具合が異常になることもあります。 このケースへの対応は、非常に困難を極めると思います。
スタイルシートをレイアウトの主体にすることで被る影響については、閲覧側がどのようなブラウザを利用しているのかを、デザイナとしてどう評価するかによって、異なって見えると思います。 スタイルシートに未対応ないし対応に欠陥が多いブラウザの利用者が多いと考えれば、スタイルシートを主体的に使うのは、正常な表示を提供できないという点で、大きなリスクを背負うと考えられます。 逆に、スタイルシートに対応したブラウザを利用している人が大多数と考えていれば、大して問題はないと判断するのが普通でしょう。
スタイルシートの全面的な使用の可否については、最終的にはやはり、そのページに対して要求されていることに対する、デザイナのさじ加減で決められることなのではないかと思います。 想定される閲覧者の環境の大多数で正常な表示を確保するために、HTML 4.01についてvalidな文書ではなくなる(HTML-lintやW3CのHTML Validatorで警告される記述を取り入れる)ことを選ぶのも、現状では一つの実際的な判断とも思いますし、一部のブラウザでは正常に表示できないことを承知の上で、validな文書を公開することに重きをおくのも、一つの立派な選択肢でしょう。
参考になれば…
アドバイスをいただきまして、どうもありがとうございます。
>HTML-lintなどのHTMLの文法チェッカでエラーとして引っかかっているのは、それを端的に示していると考えてよいでしょう
→Transitionalの標準モードでのエラーだと知りつつ、「HTML-lint」のエラーを凄く気にしていました。
ぼくの場合、「互換モード」想定なので、お話とおり「端的なエラー指摘」として受け止めます。
![](http://oshiete.xgoo.jp/images/v2/common/profile/M/noimageicon_setting_13.png?e8efa67)
No.1
- 回答日時:
「marginwidth」「marginheight」はフレームに与える属性ですよね?
でしたらHTML4.01 Transitionalではなく、
HTML4.01 Framesetを宣言しなければなりませんが。
1.
HTML 4.01 Transitionalを宣言するのならHTML 4.01 Transitionalに定められたものしか使ってはいけません。
2.
「表示」に限っていえばスタイルシートの方がHTMLよりも優れていると思います。
むしろleftmargin属性などを使うよりはいいかと。
参考URL:http://openlab.ring.gr.jp/k16/htmllint/tagslist. …
この回答への補足
早速のご回答をどうもありがとうございます。
ちょっと補足をさせてください。
>「marginwidth」「marginheight」はフレームに与える属性ですよね?
→お話の通り、フレームの余白指定用の属性でもありますね。ぼくの質問では、<body>タグに記述する属性としての「marginwidth」「marginheight」(←NN用)です。
(「LEFTMARGIN」「TOPMARGIN」はIE専用属性)
ちなみに、フレームページは一切使用していません。
---
>2. 「表示」に限っていえばスタイルシートの方がHTMLよりも優れていると思います。
むしろleftmargin属性などを使うよりはいいかと。
→見栄えに関して言えばおっしゃるとおり、CSSのほうがずっといいと思います。ただ、ぼくが心配しているのは、NN4.xまで考慮したときに、やはり見栄えのほうをCSSだけに頼るのは危険ではなかろうかという部分です。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・「I love you」 をかっこよく翻訳してみてください
- ・歩いた自慢大会
- ・許せない心理テスト
- ・字面がカッコいい英単語
- ・昔のあなたへのアドバイス
- ・かっこよく答えてください!!
- ・あなたが好きな本屋さんを教えてください
- ・スタッフと宿泊客が全員斜め上を行くホテルのレビュー
- ・【大喜利】【投稿~8/27】 こんなガソリンスタンド二度と来るか!なぜそう思った?
- ・これ何て呼びますか Part2
- ・人生で一番思い出に残ってる靴
- ・【お題】動物のキャッチフレーズ
- ・【お題】甲子園での思い出の残し方
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・「それ、メッセージ花火でわざわざ伝えること?」
- ・自分用のお土産
- ・人生で一番お金がなかったとき
- ・一番好きなみそ汁の具材は?
- ・泣きながら食べたご飯の思い出
- ・ちょっと先の未来クイズ第1問
- ・ゴリラ向け動画サイト「ウホウホ動画」にありがちなこと
- ・初めて自分の家と他人の家が違う、と意識した時
- ・単二電池
- ・チョコミントアイス
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
htmlのolやulなどlistにtitleや...
-
<div id="container">の使いか...
-
要素間、要素内に隙間が空く
-
min-heightとheightの違いについて
-
グリッドレイアウトで"auto-fit...
-
<div>テキスト</div>
-
HTML属性での「""」 「''」違い
-
divとpの使いわけ
-
上部と下部にx-repeat∞の背景画...
-
CSSのIDとclassの命名規則は?
-
リストで画像を右に表示したい
-
IE・NNの独自タグについて
-
オシャレな区切り線はありませ...
-
検索して出てくるHPのコメント...
-
CSSで「float: left;」の次にフ...
-
CSS 余白を作る方法
-
html の divとtable の役割
-
h1のテキストサイズよりh2の方...
-
htmlの見出しタグ(<h1>)の次...
-
スライド部分のリンクが貼れな...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
htmlのolやulなどlistにtitleや...
-
HTML属性での「""」 「''」違い
-
html の divとtable の役割
-
<div id="container">の使いか...
-
1時間30分を簡単に表したいで...
-
min-heightとheightの違いについて
-
複数のボタンを等間隔に、かつ...
-
ヘッダーとフッターだけ背景を...
-
div要素が重なってします
-
divを横に並べる方法
-
スペースを使わず文字位置を揃...
-
<!-- #BeginLibraryItemとは
-
HTMLのJIS規格について
-
スライド部分のリンクが貼れな...
-
セクションをdivで囲むと見出し...
-
要素間、要素内に隙間が空く
-
hタグの右横に画像を表示
-
inline-blockをネストすると表...
-
divとpの使いわけ
-
グリッドレイアウトで"auto-fit...
おすすめ情報