• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:bodyタグの範囲について)

bodyタグの範囲について

このQ&Aのポイント
  • HTMLとJavaScirptで下記のコードを書いた場合、<body>タグが担当する範囲はテキストボックスのみ(余白を含まない)です。
  • 関数foo()はテキストボックス内をクリックした場合にのみ実行されます。
  • しかし、<body>タグにbgcolor属性を追加すると、余白全体が着色されることがあります。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.4

文法上は1.でも2.でもないと思います。(詳しくは最後に) <body onClick="foo()" style=" margin: 200px; background-color:blue; border:10px solid red; "> 画面全体が青くなるのに、ボーダーが書かれるのは<input>のある行だけ。 IE、Webkit、Operaはborder(border上含む)の内部でonclickが発生、 Geckoのみbodyのマージン部分(inputの上)やウインドウ全体で発生。 さらに、<html>の背景色を入れてみると(デフォルトのtransparentから変更) <html style="background-color:white;"> <body onClick="foo()" style="margin:200px; background-color:blue; border:10px solid red;"> bodyのbackground-colorの範囲がborderと一致します。 ですので、 HTML/CSSは上記全てのブラウザが1.で実装、 JavaScript(イベント発生範囲)のみ、Geckoは2.で実装、それ以外は1.で実装していると思います。 (あくまで「実装」を確認しただけであって、「文法」は確認していません。 最初に書いた1.でも2.でもない、の件ですが、margin:0とするなら1.だと思いますが、 ・要素の範囲はmarginとその内部 ・backgroundの範囲はborderの内部(borderを含めない) ・onclick(イベントを発生させる範囲)はborderとその内部 と思います。 <div>や<p>と同様に扱うのであれば、ですが、<body>だけ特別扱いするのかどうかはわかりません。 一応、要素の範囲について。。。 私にとっては文法はあまり重要でない(ブラウザを作ってるわけではないので、『実装』の方が重要)ので、詳しく読んでいません。 ですので、私の解釈が間違っている可能性もあります。(むしろその可能性の方が高いと思います) http://www.w3.org/TR/CSS21/visuren.html http://msdn.microsoft.com/ja-jp/library/bb250395(VS.85).aspx <html>の背景色を指定しないときに、<body>の背景色をウインドウ全体に塗るのは違うような気がしますが、、、 昔はこれを付けないと背景がウインドウ全体にならなかった気がしますが、記憶違いかな。。。 <style> html,body { height:100% } </style>

ryu-e
質問者

お礼

ありがとうございます。 backgroundとonclickでは微妙に範囲が違うのですね。 勉強になりました。

その他の回答 (3)

  • yyr446
  • ベストアンサー率65% (870/1330)
回答No.3

bodyの範囲は、<body></body>の内部です。 <input>で発生したクリックイベントは、親要素に向かって伝わって いきます。(イベントバブリングと呼ばれる) body onClick="foo()"としてあるので、クリックイベントのバブリングが body要素に達した時、foo()が実行されます。 ↓で試しましょう。inputボックスより下の余白は、クリックしても反応しませんよね!。 背景色とは無関係です。 <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <title>HTML 5 complete</title> <style type="text/css"> body {background-color:#ccccff;} </style> <script type="text/javascript"> <!-- function foo(event){ var target = event.target || event.srcElement; alert (target.nodeName); } // --> </script> </head> <body onClick="foo(event);"> <input type="text"> </body> </html>

ryu-e
質問者

お礼

ありがとうございます。 背景色とは無関係との事ですが、ならばなぜonClick()で反応しない範囲にも着色がされるのでしょうか。 同じbodyタグの属性なので、着色範囲とonClickの反応する範囲は同じである気がするのです。

  • suzuko
  • ベストアンサー率38% (1112/2922)
回答No.2

2でしょう。

参考URL:
http://www.tagindex.com/html_tag/elements/body.html
ryu-e
質問者

お礼

ありがとうございます。 できれば理由も教えていただけると助かります。

  • t_ohta
  • ベストアンサー率38% (5238/13705)
回答No.1

答えは 2 です。 bodyタグにbgcolorをつけて着色される範囲がbodyタグの範囲です。 例示されているhtmlをFirefoxで実行するとウインドウ内の何処をクリックしてもダイアログが表示されます。

ryu-e
質問者

お礼

ありがとうございます。 ブラウザによって変わる、との事でよいでしょうか。

関連するQ&A