- ベストアンサー
table、tr、tdタグの描画について
table、tr、tdタグがどのような解釈を経てブラウザ(ユーザエージェント?)によって描画されているのか? をご教授いただきたく質問します。 (table、tr、tdタグの使用方法に関する質問ではありません) 例として、添付画像にサンプルを用意しました。 1セルの幅を決定出来るのは3セルの要素を解釈した後となると思うのですが、 そうなると、1セル→2セル→3セル→4セル という順番で要素と枠線が描画されるのではなく、 全ての要素を一度チェックした後に、各セルの座標を決定し、 要素と枠線を描画しているのではないか?と考えました。 しかし、同じものを2回チェックするのってスマートでないなあ・・・ 実際にはどのように解釈されているのだろう・・・ という思いで質問した次第です。 よろしくお願いします。
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
tableの表示方法は、ブラウザ依存なのですが、HTMLの仕様では、逐次表示が可能なようにtableのサイズが早く決められるようにせよと書かれています。 視覚系ユーザエージェントによる表の整形 ( http://www.asahi-net.or.jp/%7Esd5a-ucd/rec-html401j/struct/tables.html#h-11.3 ) 【引用】____________ここから 著者が列幅情報を指定していない場合、ユーザエージェントは適切な幅を割り当てるために列のデータ全体が届くのを待たねばならないため、逐次的整形をすることはできない。 ある特定のコマにおいて、内容に対して列幅が狭すぎると判明した場合、ユーザエージェントは表を再整形することを選択してよい。 ・・・以下省略・・・  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ここまで[Tables in HTML documents (ja)( http://www.asahi-net.or.jp/%7Esd5a-ucd/rec-html401j/struct/tables.html#h-11.3 )]より
その他の回答 (5)
- rukuku
- ベストアンサー率42% (401/933)
はじめまして ユーザーによる幅の指定のない場合には、 1.1行目を読み込んだ時点で各列の幅を決定する 2.表全体を読み込んだ後に各列の幅を決定する の2通りがあります。 これは table-layoutというプロパティで選択できます。(ブラウザによっては効かないものもあります) http://www.htmq.com/style/table-layout.shtml http://w3g.jp/css/table/table-layout http://www.tagindex.com/stylesheet/table/table_layout.html http://www.marguerite.jp/Nihongo/WWW/RefCSS/table-layout.html
お礼
ありがとうございます
- askaaska
- ベストアンサー率35% (1455/4149)
Web上にレンダリング仕様書ってあるのかしら。 欲しいなら直接問い合わせた方がいいと思うわ。 描画は独自技術だったりするから 技術的な情報を得るのは難しいと思うけど <table>の表示タイミングくらいなら 教えてもらえると思うわ。
- askaaska
- ベストアンサー率35% (1455/4149)
InternetExplorerは<table>があると </table>を読みこむまで待って その構造を解析して表示するわ。 なので一発で綺麗に表示される反面 ページ全体が<table>でくくられていると いつまでも何も表示されないで いらいらするという欠点があるの。 昔のNetscapeNavigatorは気にせず 描画をはじめていたわ。 (昔のと言っているのは今は知らないから) そのため、読みこむ内容によって かくかくかくって描画が変わっていくのは面白かったわよ。 #2さんが見たのはきっとこれだと思うわ。 検証していないけどGoogle Chromeもこれじゃないかな。
お礼
ありがとうございます。 >その構造を解析して表示するわ。 コレは、構造を「HTMLパーサーによって解析して」と「レンダリングしている」、という理解でよいですか? この手法を具体的に示しているサイトや書籍をご紹介いただけますでしょうか? 特にtableタグに関する解析と表示方法を知りたいのです。 (ググってみましたが、無知なもので辿りつけませんでした。)
- suzuko
- ベストアンサー率38% (1112/2922)
#1の方のを読んで、どこだったかすっげー回線速度の遅いPCで、1度表示されたテーブルが、後から中央線(1セルと2セルの間の線)だけがひょこっと右に移動して表示されていくのを見たような気が・・・ 思い違いかもしれません。むっちゃあやふやな情報ですみません。
お礼
ありがとうございます
- KDASH-XP
- ベストアンサー率45% (62/135)
昔ISDNなど回線が遅かった時代に、TABLEの表示テクニックでWIDTH属性を全部指定しておく(これは今も有効ですが)、や─属性名は忘れましたが─最初の方の行で表示幅を決めてしまう...ような属性指定があった記憶があります。 ということは、逆に言えば明示的に何も指定がない場合はやはり全ての要素を読み込んだ後に、表示サイズを計算しているのでは?と推測できますが...。 セルの中にJavaScriptを埋め込んで、どのタイミングで描画処理が行われているか?とか調べられたりしないかな??とか思いました(なんとなく...ですが)。
お礼
ありがとうございます
お礼
HTML仕様書の存在を再認識しました。 ありがとうございます。