パソコン用ホームページでフレームを使用したページを作成中なのですが、メニューを上フレームに横並びにして記述したので、それと同じ幅のテーブルを下フレームにも作りたいのです。
しかし!ブラウザが違うと横幅が違ってしまうので困っています。
下にタグを記述します。
なんでもいいのでアドバイスをお願い致します。
<html>
<head>
<title>テスト</title>
</head>
<body>
<div align="center">
<table cellspacing="1" cellpadding="0">
<tbody>
<tr>
<th valign="top" class="td1" align="left">
あああ
</th>
<td width="200">
ううう
</td>
</tr>
<tr>
<td>
<textarea rows="15" cols="70">いいい</textarea>
</td>
<td valign="top" class="td1">
えええ
</td>
</tr>
</tbody>
</table>
<br>
</div>
</body>
</html>
No.3
- 回答日時:
すみません、ANo.2で誤記がありましたので訂正します。
CSSでクラスセレクタを使用していたのに、HTML側に指定し忘れていました。
×<table cellspacing="1" cellpadding="0" border="0" summary="サンプル">
↓
○<table class="sample" cellspacing="1" cellpadding="0" border="0" summary="サンプル">
あと、CSS内のbodyの定義は本件の問題解決とは直接関係ないので無視して下さっても結構です。
No.2
- 回答日時:
> テキストボックスがネットスケープでテーブルをぶち抜いてしまう現象について
Netscapeだけではないですね。Firefoxでも同様の表示になります。
"table-layout: fixed;"と定義すると、1行目のセルに幅が指定されている場合、それを読み込んで後の行のレイアウトを固定する為、表示が早くなります。この場合であれば、【いいい】のセルの長さは、先立つ【あああ】で規定された幅(class="td1"にwidthの指定が入っているかどうか定かではないですが)、【えええ】は【ううう】(このサンプルでは200px)の幅で固定されることになります。
ただし、それらで規定された幅よりも、【いいい】【えええ】の実際のセル内のデータ量の幅が大きければ、それははみ出してしまいます。ただのテキストであれば、固定された幅まで達したところで自動的に折り返してどんどん垂直方向へセルが伸びて行くだけですからレイアウトは崩れませんが、今回の様にテキストボックス(<textarea>)が入っていておりしかもその幅がcols="70"とかなり大きく、それは実質【いいい】の幅を超えると解釈される為、テキストはその領域に併せて広がってしまい、その親要素であるセルの枠をぶち抜いてしまう事になります。IEがぶち抜かないのは、たまたまcols="70"に対する表示幅の解釈が小さめ(<textarea>内のfont-sizeに対しても)であったという事もありますが、IEは妙な方向への独自解釈が多い為、あまりそちらを基準するのはお勧めしません。
試しに一度テーブルのボーダーを表示させて見て下さい。<textarea>が<td>に対してどの様な状態になってしまっているかが一目瞭然です。
"table-layout: fixed;"が指定されていなければ、初期値の"table-layout: auto;"が適用される為、列の合計幅が実質テーブルの幅を超える様な事になってしまった場合は、各セルの幅指定は無視してテーブル幅全体を拡げる為、セルの領域を超えてデータがはみ出してしまう、という状態にはなりません。
(参考)http://www.seo-equation.com/html/css/table-layout
まずこのプロパティの性質をよく理解して下さい。
しかしながら本件はそれぞれのコラム幅を固定する、というのが目的の様ですので、はみ出さずかつ幅を可変にせず、という状態にしなければなりません。
<textarea>のcols属性の数値によって表示される幅は環境によりかなり結果が違うので、この幅を固定するにはCSSでwidthを指定してやる必要があります。
本サンプルの場合、テーブル全体の幅が700px、2列目【ううう】が200pxということは、自ずと1列目【あああ】の幅は500px(以下)でなければならない事になります。であれば、それぞれのコラムの中の要素がセルの幅を超えない様にコントロールします。
----------------------------------------------------------------------
【HTML】
----------------------------------------------------------------------
<table cellspacing="1" cellpadding="0" border="0" summary="サンプル">
<tbody>
<tr>
<th class="col1">あああ</th>
<td class="col2">ううう</td>
</tr>
<tr>
<td class="col1"><textarea rows="15" cols="70">いいい</textarea></td>
<td class="col2">えええ</td>
</tr>
</tbody>
</table>
----------------------------------------------------------------------
【CSS】
----------------------------------------------------------------------
body {
font-size: 12px;
background: #ffffff;
padding: 0;
margin: 0;
}
table.sample {
table-layout: fixed;
width: 700px;
border-collapse: collapse;
}
table.sample .col1 {
width: 500px;
}
table.sample .col2 {
width: 200px;
}
table.sample textarea {
width: 99%;
}
----------------------------------------------------------------------
とでもすれば宜しいかと。
最後の、textareaのwidthは100%としてしまうと若干2列目のコラムに被ってしまう場合があるので、余裕を持たせて99%としています。もっと2列目との余白を持たせたければ、お好みでパーセンテージを低くして下さい。
なお、textareaの定義に更にbodyと同じfont-sizeを指定してやれば、<textarea>内のテキストも同じサイズに揃いますので、そちらもお好みでどうぞ。
No.1ベストアンサー
- 回答日時:
テーブルの幅を調整する場合、いろいろな条件により微妙に変わってしまうので、
その場に応じて設定を変える必要がありそうです。
今回はまず、<table>タグにwidthとstyle属性を入れてみてください。
width="700"
style="table-layout: fixed;"
これらは必要に応じて付けたりはずしたりしてください。
テーブル全体のwidth属性は、ややゆとりを持たしたほうが良いようです。
また、内容が文字だけの場合と<textbox>を含む場合とは違いが出てきます。
とりあえず、以下の様に変更してみてください。
-------------------------------------------------------------------
<table cellspacing="1" cellpadding="0" width="700" style="table-layout: fixed;">
-------------------------------------------------------------------
詳しくは、以下のページも参考にしてみてください。
文字の場合
http://cvs.sourceforge.jp/cgi-bin/viewcvs.cgi/ka …
CSSによるページレイアウトの考察
http://www.kiwi-us.com/~mizusawa/penguin/html_hi …
回答いただきありがとうございます。
テーブルに属性を入れて動作確認やってみました。
思い描いていたものに近づいたように思います。
テキストボックスがネットスケープでテーブルをぶち抜いてしまう現象についてご助言頂けると嬉しいです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- HTML・CSS テーブルタグのセルの幅の一部だけを指定 1 2023/03/12 12:02
- Visual Basic(VBA) Selenium.ChromeDriverの使い方について 7 2022/09/22 06:43
- AJAX JavascriptからPHPへのAjax通信でnullが返ってくる 3 2022/08/03 22:00
- JavaScript EasyUIのSubGrid(jquery)におけるObjectに入れた連想配列について 1 2022/05/02 11:21
- HTML・CSS 自身のHPにYouTube動画を貼り付けるのが出来なくなり困ってます 1 2022/11/11 10:44
- PHP htmlで複数の個数入力欄を表示させるには 1 2022/09/20 03:11
- JavaScript jQueryで同じクラス名のものを別物として扱いたい 1 2022/06/17 14:14
- HTML・CSS 【CSS】:hasで可能? imgを含むtr要素を選択したい 1 2022/11/17 14:36
- JavaScript jQueryでのドラッグアンドドロップについて 1 2022/07/30 09:10
- HTML・CSS アコーディオンメニューが思うように動作しません。 1 2023/08/20 16:48
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
TABLEのセルの中の文字を行単位...
-
テーブルとテーブルの間隔について
-
<th>タグを使っても太字にしな...
-
テーブル幅が固定できない
-
<fieldset>タグについて
-
フォームタグのプルタウンの隙...
-
CSSで特定のテーブルだけに...
-
画面幅に合わせてテーブルのカ...
-
tableを縦に続けるとtable間の...
-
table要素のtrやtdって・・・
-
正規表現で「より前」と「より後」
-
tableの位置がIEとその他ブラウ...
-
html5のテーブル内でdivのタブ...
-
HTML5で、テーブル内tdタグの高...
-
文字、センタリングの中での行...
-
TABLEタグの位置
-
tableのcellpadding="0" cellsp...
-
テーブルデータを折り返して表...
-
テーブルタグの中にdivを含めて...
-
html でのテキスト結合について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
テーブルとテーブルの間隔について
-
TABLEのセルの中の文字を行単位...
-
<th>タグを使っても太字にしな...
-
CSSで特定のテーブルだけに...
-
HTML5で、テーブル内tdタグの高...
-
同じ幅指定のつもりなのに、ブ...
-
table表を横に並べる際の間隔指定
-
テーブル内のセル間にスペース...
-
textareaの外側の文字が下付き...
-
HTML tableのセルにtextareaを...
-
テーブルデータを折り返して表...
-
tableの位置がIEとその他ブラウ...
-
<fieldset>タグについて
-
正規表現で「より前」と「より後」
-
スタイルシートで左側だけ色を...
-
tableのcellpadding="0" cellsp...
-
tableを縦に続けるとtable間の...
-
HTMLのテーブルをExcelにCopy&P...
-
html5のテーブル内でdivのタブ...
-
スタイルの無効化
おすすめ情報