• 締切済み

widthを指定しない<td>が幅をシェアする基準?

<table>タグの表示不安定につき、ご教示ください。 aaaa.txtに蓄積したデータをCGIで切り分けて、下記の<table>タグ内に割り付けて 表示させています。 <table width=510> <tr><th>左列の表題</th> <th>右列の表題</th></tr> <tr><td>改行タグを含む文字列A1</td> <td>改行タグを含む文字列B1</td></tr> <tr><td>同様のA2</td><td>同様のB2</td></tr> <tr><td>同様のA3</td><td>同様のB3</td></tr> <!--このtrを繰返し--> </table> 表幅を絶対指定したのは、印刷時に 510 px / 72 dpi * 2.54 cm = 18 cmで、 A4の幅に納まりやすいだろうという意図です。文字列AとBは、それぞれ <br>で区切ってありますが、区切りは概ね1行分(はみだせば折り返し)です。 <td>の幅を指定しなかったのは、<br>までの長さに応じて表示幅をシェアさせ、 折り返し頻度を減らすこと(印刷時の縦長の節約)が目的です。 IE5/Win&Mac及びNN4.7/Win&Macで、td内の1行長を無視した割付けが しばしば生じ、その割付け方の法則がわかりません。小細工を諦めて、列幅を 50%ずつに指定してしまおうかとも思っていますが、ブラウザは何を基準に 列幅を割り付けているのでしょう? 要領を得ない状況説明で恐縮ですが、追加説明は補足要求でご指示ください。

みんなの回答

  • kamoto
  • ベストアンサー率41% (26/62)
回答No.2

loveoboさん、こんにちは。#1のkamotoです。 その後いかがですか? table widthは、A4でしたら590ぐらいでも大丈夫だと思いますよ。 でも読みやすいのはだいたい550ぐらいでしょうか…。 ところで、1件ずつ<tr>で区切っているのですよね? <tr>の中でも<br>によっていくつもの項目が区切られているんでしょうか。 あまりうまく想像できていないのですが、 あとは<tr valign="top">で高さをそろえて、 改行されても見にくくならないようにしておいて、 widthはブラウザにおまかせしておけば、 だいたいコンテンツの長さに合わせてくれるのでは ないかと思います。 うーん、いまいちな回答でごめんなさい。

loveobo
質問者

お礼

> その後いかがですか// 気にかけていただき、ありがとうございます。このサイトの醍醐味です。 > table widthは、A4でしたら(中略)550ぐらいでしょうか…。// 550で印刷 (NN&IE/Mac) してみたら切れてしまったので 510 に したのですが、後にWinは 96 dpi (680px でA4幅) と知りました。 > うまく想像できていないのですが、あとは<tr valign="top">で// イントラ向けなので具体的に書くのに躊躇し、単純化したサンプルで 質問しました。わかりにくくてゴメンナサイ。実物は3列、各 <td> で valign指定なし(="middle")と valign="top" を使い分けてます。 > おまかせしておけば、だいたいコンテンツの長さに合わせてくれる// これを期待したのですが、いろんな長さのコンテンツが入ってくると、 ブラウザが意に反した調整をしてくれて・・・ で、落ち着いた先は、 <td>のシェアは width="xx%" を明示。<table>は、width属性なしが閲覧に 向き (windowが広くても間延びしない)、width="100%" がMac/Winとも 無駄なく印刷できるようです。中途半端な指定が裏目に出てました。

全文を見る
すると、全ての回答が全文表示されます。
  • kamoto
  • ベストアンサー率41% (26/62)
回答No.1

loveoboさんの求めている回答ではありませんが… テーブル幅を指定しない場合、OSやブラウザの違いによって、 どこで折り返されるかは全く異なりますよね。 そのようなwebの特性にフレキシブルに対応するためにも、 どこで折り返されても差し支えないコンテンツにするほうが 良いのではないでしょうか? せっかくA4に納まるようにという親切な配慮をされているのですから、 <br>で1行ずつ改行せずに、段落ごとに空行をいれるなどして、 段落を際立たせ、どこで改行されても読みやすくしたほうが、 どのような環境で印刷しても気分良く読めますよ(^-^) 的外れでごめんなさい。

loveobo
質問者

お礼

アドバイスありがとうございます。お返事が遅くなって申し訳ありません。 > どこで折り返されても差し支えないコンテンツにするほうが良いのでは// 仰るとおりで、私もそれを基本に考えています。投稿formから受取った 十数文字ほどの文字列を、1件ずつ区切るために<br>を入れており、その1件が 明らかに2行にわたるなら、おまかせの改行(セル内折り返し)にこだわり ません。ただ、左の列がガラガラなのに、右の列が1文字オーバーで折り返し というような割り付けを避けたくて、<td width=... >を工夫できないかと 思ったのです。 > せっかくA4に納まるようにという親切な配慮をされているのですから// 私の <table width=510> の根拠は、そう悪くもないと思って良いのでしょうか? table widthを指定しなくても、ブラウザのウインドウを適宜調節すれば済む んですが、イントラネット向けコンテンツで、WordやExcelは使うけど インターネット(ブラウザ)は使ったことがない方も巻き込みたかったので。 とりあえず、windowの一部をメニューが占領している方や表示文字を大きく している方と、幅1024で標準文字サイズの方の中間をとって、閲覧用に table width="85%"、印刷用にtable width=510の二本立て、列のシェアは td width="50%" ずつの明示でやってみます。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 同じwidth=200でもセル内の文字によって幅が違う

    まず、大体↓な感じの表を作りました(ファイル1)。 <table width="580"> <th width="60">【A列】</th><th width="320">【B列】</th><th width="200">【C列】</th> <tr><td>D</td><td>E</td><td>F</td></tr> <tr><td>G</td><td>H</td><td>I</td></tr>      ・      ・      ・ </table> このHTMLファイルをコピーしてファイル2を作り、 セル内の文字や数値のみ修正し、 随時ブラウザを更新して確認していると、 【C列】の列幅(200)が広くなったり狭くなったりする現象が起き (その分【B列】も変化し、全体的には580のままです)、 結果的に2つのファイルは【C列】の列幅が違います。 都合上、どちらのファイルも【C列】の列幅は同じにしたいのですが、 何か良い方法はありますでしょうか。 ちなみに、セル内の文字は【B列】も【C列】もオーバー分が折り返されています。 【A列】のみオーバーしないようにしています。 ご回答よろしくお願いします。

    • ベストアンサー
    • HTML
  • ●○■□などの文字を含んだ<td>の幅指定について

    Firefoxで表示確認をしています。 <table border="1" width="100"> <tr> <td>あああああああああああ</td> </tr> </table> だと、幅100pxの位置で自動的に改行されるのですが、 <table border="1" width="100"> <tr> <td>●●●●●●●●●●●</td> </tr> </table> だと改行ず、幅がオーバーしてしまいます。●以外にも○■□などでも同じでした。 ●を使いつつ、指定した幅で改行させることはできないでしょうか?

  • TABLE内でのwidth指定

    <table> <tr><th colspan="3">●</th></tr> <tr><td class="1">■</td> <td class="2">▲</td> <td class="3">★</td></tr> <tr><th colspan="3">○</th></tr> <tr><td class="1">□</td> <td class="2">△</td> <td class="3">☆</td></tr> </table> このサンプルについて考えています。 ●○が、割と長い文字列になります。 この時、例えば2段目の左の列が、■,□のうち長い方の文字列に合わせて「width」が表示されるためには、スタイル「class="1"」の内容をどう記述すれば良いのでしょうか。 デフォルトの「width:auto」では、●○の長さに引っ張られてしまい、余分なスペースが出来てしまいます。 2段目の中の列(▲△部分)が短文を記述するセルなので、●○に合わせる必要のあるスペースは、全てここで吸収してしまいたいのです。 同じ仕組みで幾つかテーブルを組みますので、【class="1"】のwidthにpx,%等といった値自体を指定するのは向いていません。 ご指導おねがいします。

    • ベストアンサー
    • HTML
  • tdタグに何も入れなくとも幅を均一にする方法

    <table border = "1"> <tr> <th>hoge</th> <td></td> </tr> </table> 上記のような場合、<td>タグ内には何も書かれてないので セルがつぶされた形で表示されますよね? これを<th>タグ内のhogeと同じセルの幅で表示するにはどうすればいいですか? style属性にwidth:100pxとかしてみたのですが無駄でした‥

    • ベストアンサー
    • HTML
  • width指定したTDでwhite-space:nowrapが効かない

    width指定したTDでwhite-space:nowrapが効かない ブラウザはIE6~8のみを想定しています。 下記のHTMLでは、2行目は正常なのですが、1行目のnowrapが働かず、改行がかかってしまいます。 列毎に幅を指定する必要があるので、1行目にはwidthを指定しているのですが、 どのようにすれば自動改行を禁止できるでしょうか。 <table style="table-layout: fixed;"> <tr> <td style="width: 50px; overflow: hidden; white-space: nowrap;">あああああああ</td> <td style="width: 70px; overflow: hidden; white-space: nowrap;">あああああああ</td> </tr> <tr> <td style="overflow: hidden; white-space: nowrap;">あああああああ</td> <td style="overflow: hidden; white-space: nowrap;">あああああああ</td> </tr> </table>

    • ベストアンサー
    • HTML
  • テーブルwidthで指定したのに幅が広がる

    ↓のようなHTMLをCGIで出力しました。 <TABLE width="500" cellpadding="10" bgcolor="wheat"> <TR> <TD>2006年9月6日(水)20時48分 </TD><TD><B>2/12求人広告結果</B></TD><TD> 広告</TD> </TR><TR><TD colspan="3">aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa </TD></TR> <TR><TD colspan="3"><A HREF="./outsider01.cgi?mycmd=edit&view_page=328"><P align="right">編集</A>|<A HREF="./outsider01.cgi?mycmd=delete&view_page=328">削除</A></P></TD></TR> </TABLE> すると、テーブルの幅が広がるのです。 aaaaaaaaaaaaaaaaaaaa・・・ ではなく、ふつうの全角の文章ですとwidth500で固定されるようです。 なぜ小文字のaaaaaaaaaaaaaだとwidthが固定されないのでしょうか?

    • ベストアンサー
    • HTML
  • widthを設定してもテキストを流すと幅が広がってしまう

    トップページの左ナビの部分です。 1行2列の大テーブルの、左のtdが左ナビになっています。 ↓こんな感じです。 <table width="800"> <tr><td>左ナビ</td></tr> <tr><td>内容</td></tr> </table> この左ナビ部分を更に<div>で区切って、 その<div>の中に改行なしのテキストを流し込むと大テーブルの幅800まで広がってしまいます。 幅170pxの指定方法は、<div class="navi">というふうにwidth指定を含むcssをつけています。 cssではダメなのかと、<div>なしで tdのwidth指定だけにしてみてもダメでした。 方法を教えてください。

  • tableの幅をがっちり固定

    <table width="500"> <tr> <td> 長い文字列長い文字列長い文字列長い文字列長い文字列.... </td> ... の場合、widthで500ピクセル幅を指定しているにもかかわらず横幅が500以上に成ってしまいます。 文字列に改行を加えればいいのですが、改行をしない方法で指定した500px内に納めることはできないでしょうか? よろしくお願いいたします。

    • ベストアンサー
    • HTML
  • 4カラムのテーブルに絶対幅と相対幅の混在指定の可否

    以下のHTMLで、1列目は20ピクセル(?)、2列目は100ピクセルに幅が固定されているとして、 3~4列目、黄色と青のカラムの幅を均等に揃える方法はありませんか。 3~4列目の幅を<col=50%>ととると、1~2列目の幅が侵食されて崩れます。 ごらんのとおり、テーブル自体の幅は100%なので、モニタやブラウザの表示幅によってテーブル自体の幅も異なってくるため、 4カラムのテーブルのうち、1~2列目は絶対幅、3~4列目と相対幅と混在指定できればよいのですけど。 <html> <body> <table border=1 cellpadding=3 cellspacing=0 width=100%> <col width=20> <col width=100> <col> <col> <tr> <th rowspan=2 style="writing-mode: tb-rl;">基本情報</th> <th>プロジェクト</th> <td colspan=2>あいうえおあいうえおあいうえおあいうえお </tr> <tr> <th>概要</th> <td colspan=2>ああああああああああああああああああああああああああああああああああああああああああああああああああああああああ</td> </tr> <tr> <th colspan=2>コメント</th> <th bgcolor=yellow>当方から</th> <th bgcolor=blue>先方から</th> </tr> <tr> <th colspan=2>第1回会合</th> <td>◆ いいいいいいいいいいい<br>◆ うううううう</td> <td>◆ ええええええええええええええ<br>◆ おおおおおおおおおおおおおおおおおおおおおおおおおおおおお</td> </tr> </table> </body> </html>

    • ベストアンサー
    • HTML
  • HTMLのtableタグでセル毎の幅率を指定したい

    HTMLにtableタグがあると思いますが、 例えば <table> <tr> <td></td> <td></td> </tr> </table> のように左右にセルがあるだけの単純な表を作ったとします。 この場合100ピクセルの幅にして左が70ピクセル、右が30ピクセルみたいに 個々の列で幅の比率を指定したりはできるのでしょうか?

    • ベストアンサー
    • HTML
このQ&Aのポイント
  • PC LAVIE DA770HARで文字を打っている途中で日本語入力ができなくなる問題が発生しています。キーボードの設定や入力方式の切り替えを試しましたが解決できません。
  • 毎回再起動することで日本語入力が復活しますが、なぜこの問題が発生するのか原因が分かりません。NEC 121ware:パソコン本体に関する詳しい情報や設定方法を教えていただけると助かります。
  • 日本語入力ができなくなるトラブルに困っています。PC LAVIE DA770HARでのローマ字入力との切り替えや入力方式の設定変更を試しましたが、問題は解決しません。どのような対処法があるのかアドバイスをお願いします。
回答を見る

専門家に質問してみよう