• ベストアンサー

Tableを固定する

テーブル内のセルのWidthを100pxとかに指定しても たくさん文字を入れて100pxを超えるとどんどん横に伸び続けますよね? これを固定して、文字数が多い場合はセル内で改行して縦に伸ばしたいのですが どうすればいいでしょうか? よろしくお願いします。

  • HTML
  • 回答数4
  • ありがとう数6

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

  • ベストアンサー
  • tumo020
  • ベストアンサー率36% (24/66)
回答No.3

 質問時の状況が、半角英数字を半角スペース・ハイフンなどをいれない長文(『aaaaaaaaaaaaaaaaaaaaaa……』など)を打ち込んだとき、と考えた場合です。  現在のHTMLの仕様で、連続した半角英数は、それひとつで一つの単語としてみなされます(例え1000文字の文字列でも一つの単語と扱われる)。単語の途中で改行されると英文の意味がわからなくなるため、あえて単語の途中での改行を禁止しています。  そのため、横幅の指定を無視して横に伸びてしまいます。   というわけで、これを修正するには、プログラムに「禁則処理を無視させる」必要があります。ですが、これはHTMLでは実現できませんので、別のCSSを使います。 word-break: break-all; ↑これを何らかの形で入れ込んでください。 <table border="1" style="word-break: break-all;"> <tr> <td width="100">aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa</td> </tr> <tr> <td width="100">これで禁則処理を無視して半角英数も改行される</td> </tr> </table>  ただし、これはIEが独自で追加したものだったと思います。ですから、他のブラウザとの出力に差が出てしまうかもしれません。なので私はお勧めしません。

OKbokuzyo
質問者

お礼

回答ありがとうございます。 >>現在のHTMLの仕様で、連続した半角英数は、それひとつで一つの単語としてみなされます >>(例え1000文字の文字列でも一つの単語と扱われる)。 そういうことでしたか‥。 >>というわけで、これを修正するには、プログラムに「禁則処理を無視させる」必要があります。ですが、これはHTMLでは実現できませんので、別のCSSを使います。 >>word-break: break-all; なるほど、こんなプロパティもあるんですね。 しかし例文に沿って使ってみたところうまくいかず、 以下のように修正してみたところうまく動きました。 ・「aaa...」の部分を「<span style="word-break: break-all;">aaa...<span>」に変更。 >>ただし、これはIEが独自で追加したものだったと思います。ですから、他のブラウザとの出力に差が出てしまうかもしれません。なので私はお勧めしません。 そうですか‥。 NNにも対応させる必要があるので何か方法を考えます。 ありがとうございました。

その他の回答 (3)

  • TMEspion
  • ベストアンサー率27% (5/18)
回答No.4

回答します。 >どうすればいいでしょうか? ANo.3さんが挙げている「word-break」が クリアブラウザをInternetExplorerのみとした時の回答。 他のブラウザでもやるとすれば、 「半角英数を使用しない」って所でしょうか?

OKbokuzyo
質問者

お礼

回答ありがとうございます。 >>他のブラウザでもやるとすれば、 >>「半角英数を使用しない」って所でしょうか? そうですね。 しかし半角英数を禁止にするわけにはいかないので サーバ側で半角英数は全角に変更するロジックを組み込むか、 適当に改行を挿入するロジックを組み込もうと考えています。 ありがとうございました。

  • leap_day
  • ベストアンサー率60% (338/561)
回答No.2

こんにちは <table style="table-layout: fixed;"> <tr> <td width="60"> ああ </td> <td width="40"> あああああああああああああああああ </td> </tr> <tr> <td> あああああああああああああああああああ </td> <td> あああああ </td> </tr></table> 1行目でwidth指定すれば残りはそれに準じます

OKbokuzyo
質問者

お礼

回答ありがとうございます。 >>1行目でwidth指定すれば残りはそれに準じます 日本語はそうなのですが、 半角アルファベットのみで文章を構成した場合は伸びてしまいます。 table-layoutで固定はされるようですが、 その場合、半角アルファベットが切れてしまいますね。 ありがとうございました。

回答No.1

改行のタグ=<br> (←改行したい所入れる) と入れれば改行できますよ♪ 【例文】 明けまして<br>おめでとう<br>ございます<br>    ↓ 明けまして おめでとう ございます

参考URL:
http://www.tohoho-web.com/how2/table.htm#size
OKbokuzyo
質問者

お礼

回答ありがとうございます。 申し訳ありません、質問文を割愛しすぎたかもしれません。 若干込み入った話をしますと、 セル内には動的に変化する値が入るため 固定値で持たせるわけではありません。 上記条件の元、セルの幅を固定するにはどうすればよいか? という趣旨の質問です。

関連するQ&A

  • TABLEの高さの固定、TABLEの高さの変動を固定について

    TABLEの高さの固定できずに困っています。 【(2)】に縦500程度の画像掲載(又は複数回改行)をすると、 【(1)】の50pxで固定している縦幅が変動してしまいます。 【(3)】の<TD>にheight=500pxのような大きな値を入れると 【(1)】の縦変動を固定できるのですが、【(2)】の縦幅が大きくなると、 その都度、【(3)】の<TD>のheightの値を書き換えなければなりません。 CSS等で【(1)】のheight:50px;の指定をしても、 【(2)】の縦幅の上昇より【(1)】が50px以上になってしまいます。 【(1)】のheightを【(2)】の縦の変動に左右されず固定する方法を 出来ればCSSを使用した方法でわかる方がいらっしゃいましたら ご回答宜しくお願い致します。 【-------HTML START---------】 <TABLE style="WIDTH: 500px;HEIGHT:100%" cellSpacing=0 cellPadding=0 border=1> <TR> <TD colSpan=2 height="20px"></TD></TR> <TR> <TD height="50px">【(1)】</TD> <TD vAlign=top width="165px" rowSpan=2>【(2)】</TD></TR> <TR> <TD vAlign=top>【(3)】</TD></TR></TABLE> 【-------HTML END---------】

    • ベストアンサー
    • HTML
  • テーブルの幅固定について

    テーブルの幅固定を以下のように行っているのですが文字が指定した幅を超えると、 幅を指定してるにも関わらず、文字が改行せずに幅が伸びてしまいます。 自動的に改行になるとばかり思っていました。 <br>での改行は考えていないので、テーブルの幅を絶対的に固定する方法ありますでしょうか? <table width="50" border="0" style="background-color: #cecece"> <tbody> <tr> <td>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA</td> </tr> </tbody> </table>

    • ベストアンサー
    • HTML
  • tableの幅をがっちり固定

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

    • ベストアンサー
    • HTML
  • テーブル<TD>の幅の固定

    テーブルのTD幅をWIDTHで指定しているのですが、入力するテキストによって幅が動いてしまいます。 例) <table width="50">  <tr>   <td width="10">AAAAAAAAAAAAAAAA</td>   <td width="40">AA</td>  </tr> </table> というような場合、幅の狭い方のセル幅が広くなってしまいます。 また逆に広い方が何度も改行させられて出力されたり、出力させたいテキストによって、いかようにも幅が変更されてしまいます。 他のサイトなども色々調べてみて、半角英数字の場合は特に顕著ということも書かれてあったのですが、半角英数字の出力は必須なんです。 (全角文字の場合でも、完全に固定とはなりませんでした) やっぱり完全にテーブルのセル幅を固定するのはムリなのでしょうか? 何か解決方法はありますでしょうか? よろしくお願いします。

    • ベストアンサー
    • HTML
  • テーブルの設幅固定がオフラインで崩れます

    WEBサイトでテーブルのセル幅を固定しているのですが、オンライン環境では意図通りになるものの、オフライン環境では固定されずに崩れてしまいます。 固定方法は、外部CSSで「table-layout:fixed;」と「各セルのwidth指定(class)」を記述しています(下記ご参照下さい)。 外部CSSへのリンク指定は絶対パスではなく相対パスで指定しており、オフライン環境でもCSSの参照は出来ていると思います(セル幅以外の記述内容は反映されます)。 どこに原因があるのか分からずに困っています。 お分かりになる方がおられましたら、ご教示頂きたくお願い申し上げます。 【CSS】 table.t { border:1px solid #000000; border-collapse:collapse; table-layout:fixed; font-size:13px; } table.t td{ border:1px solid #000000; height:13px; } table.t th{ border:1px solid #000000; font-size:13px; } .index{ width:155px; } .remarks{ width:100px; } .code{ width:120px; } ・ ・ ・ 【HTML】 <table class="t"> <thead> <tr> <th class="index">INDEX No.</th> <th class="remarks">Remarks</th> <th class="code">Part code</th> ・ ・ ・

    • ベストアンサー
    • CSS
  • HTML テーブルセル内の自動改行について

    テーブルのセルの文字というのは、何も指定しなければ自動的に改行されるかと思います。 しかしスタイルシートなどでwidthを100pxなどに設定すれば、それに従うかと思うのですが、適用されません。 自動改行禁止は入れていません。 どんなに広くwidthを設定しても全角2行分ほどで改行されてしまうのです。 セルの大きさも変化しません。 (文字が多ければ多いほどセルの高さがつのっていき、縦長のセルになっていく) 原因お分かりになる方いらっしゃらないでしょうか…?

  • テーブルを固定

    □□□ □□□ 上記のように6つのテーブルを作ったとします。 スタイルシートで"<table style="width="200" height="200">のように幅を指定しても 作ったテーブルより小さいサイズの画像を入れただけでも全体が大きく崩れてしまいます。 これをテーブルの幅を幅以下の画像なら("width="200" height="200"で作った場合は199まで)動かないように完全固定したいのですがどのような方法で可能になるのでしょうか?。

    • ベストアンサー
    • HTML
  • テーブルの幅を固定するとnowrapがきかなくなるのですが・・・

    いつもお世話になっております。どなたか教えて下さい。 テーブルの幅を”width=***”で固定しました(tableタグもtdタグも両方)。文字列を改行したくないので”nowrap”を書いて改行不可にしたら、改行は回避できたものの、幅が固定されずに文字の長さに合わせられてしまいました。 そこでこのサイト内で方法を模索していると”style=table-layout:fixed”で固定できると書いていたので追加すると幅の固定は出来たのですが、今度は文字列が改行されてしまいました。 どうすれば幅を固定し、改行も回避できるのでしょうか? 文字列が長すぎるものは途切れていてもOKなので、枠をとにかく固定したいのです。 どなたか回答御願い致します。 ブラウザはIE5か6です。

  • テーブルの高さ幅の固定方

    現在、 JSPによりDBから読み込んだデータを HTMLのテーブルに表示しようとしているのですが、 データはTDの幅"WIDTH"以上のデータが来ます。 このような中で、TDに高さ"HEGHT"を指定しているのですが、 セル内で改行され高さがテーブル内で不揃いとなってしまいます。 この様な場合、高さをそろえる為にはどの様にすればいいのでしょう。 データを予め短くするしかないのでしょうか? ご存知の方がいらっしゃったら宜しくお願い致します。

    • ベストアンサー
    • HTML
  • セル内のリンク文字を中央に配置したい

    セル内のリンク文字を中央に配置したい テーブルタグにdisplay:blockを使ってセル全体がリンクできるようにしたのですが、セル内の文字数が増えると(8文字以上になると?)2行になる分、高さが2倍になってしまい、セル内の文字も上下に大きく離れてしまいます。 文字数が2行になる場合でもセルの中央にリンク文字を配置し、高さも2倍にならないようにするにはどうしたらいいか教えてください 全体のwidthを600px, tableを横に4つ並べて一つ一つのtableの大きさを width: 130px; height: 70px; table同士の隙間をあけたかったのでborder-spacing: 20px;とってあります th a{width: 130px; line-height: 70px; display:block;} も入れてあります cssもホームページ作りも慣れていないのでうまく説明できていないかもしれませんが、よろしくお願いします。

    • ベストアンサー
    • HTML

専門家に質問してみよう