
HTMLの表組を利用しています。
2行4列のうち1行をセル結合して入力テキストを設けたいのですが,
テキストボックスの幅を広げると下の行の列幅まで変わるという事象に悩んでいます。
下の行のセルで個別に幅を指定すれば解決するのは分かったのですが,
行が増えた時に面倒になるので,できれば<Colgroup>を使って一元的に指定しておきたいと
考えています。
貼付の図では,入力テキストの幅が小さい分には,下のセルは思い通りなのですが,
入力テキストの幅を広げると,下のセルの幅が狂います。
原因をご存じの方,原因と解決策をご教示いただけると嬉しいです。
No.1ベストアンサー
- 回答日時:
仕様書を一度ならず目を通されたと思いますが・・
表を整形のために用いるのは・・
【引用】____________ここから
Webページのプレゼンテーションを向上させようという志は素晴らしいものではあったが、そのためのテクニックには思わぬ副産物があった。こうしたテクニックは、特定の人々、特定の時代状況でしか成り立たず、すべての人々、すべての時代状況において成り立つものではないのだ。こうしたテクニックの例を挙げよう。
*・・・【中略】・・・
* ページレイアウトの目的で表を用いる。
* ・・・【中略】・・・
こうしたテクニックによって、Webページはより複雑化し、限られた環境にしか適応しなくなり、相互運用性問題に悩まされることとなり、障害を持つ人々にアクセス障壁が設けられてしまう。
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ここまで[Style Sheets in HTML documents (ja)( http://www.asahi-net.or.jp/%7Esd5a-ucd/rec-html4 … )]より
と明確に否定されています。
またcolgroupは、
【引用】____________ここから
1つ以上のCOL要素を含むCOLGROUP要素にこの属性が設定されていた場合、ユーザエージェントは、これを無視しなければならない。
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ここまで[Tables in HTML documents (ja)( http://www.asahi-net.or.jp/%7Esd5a-ucd/rec-html4 … )]より
とも書かれています。
もちろん、form入力欄は表に入れることは、それが表である限り構いませんが、あくまでそれが表であって、整形のためではないことは理解して置いてください。
たとえば、次のようにHTMLを書いても良いわけです。
<form>
<dl>
<dt>投稿者</dt>
<dd>お名前:<input type="text"></dd>
<dd>年齢:<input type="text"></dd>
<dd>性別:男<input type="radio"> 女<input type="radio"></dd>
<dt>メッセージ</dt>
<dd><textarea></texarea></dd>
<dt>・・
これを、textareaの幅に合わせてfloatさせると良い
tableを使うにしても
<tbody>
<tr>
<th>投稿者</th>
<td><span>お名前:<input type="text"></span>
<span>年齢:<input type="text"></span>
<span>性別:男<input type="radio"> 女<input type="radio"></span>
</td>
</tr>
<tr>
<th>メッセージ</th>
<td><textarea></texarea></td>
</tr>
とかでよいはずです。これをきちんと並べるのはCSSに任せる。HTMLはあくまで文書構造(ここで言う形は意味)でマークアップする。
入力テキスト(TEXTAREA)のサイズは、とりあえず決めておけばよいです。今のブラウザはtextareaはユーザー側で変更できますから・・
たとえば、firefox+resizeable Textarea( https://addons.mozilla.jp/firefox/details/3818 )でね。これもそれを使って書いている。もっと長くなれば、It's all Text( https://addons.mozilla.jp/firefox/details/4125 )を使う。
あまりデザインにこだわるより、正しくマークアップするほうが良いかと思います。
回答ありがとうございます。
Tableを使うのはあくまでも表形式の画面であるためです。
W3Cの表の仕様について,勉強します。
参考になりました。
ありがとうございます。
No.2
- 回答日時:
CSSに不慣れで、かつHTMLのtableに合わせれば・・
以前回答した
テーブルの入れ子について - HTML - 教えて!goo ( http://oshiete.goo.ne.jp/qa/6664995.html )
が良かろうかと
<table summary="入力フォーム" border="1" class="formTable">
<!-- 後方互換のためborder -->
<tbody>
<tr>
<th abbr="項目"></th><th abbr="入力"></th>
</tr>
<tr>
<td>記事</td>
<td>
<textarea cols="40" rows="20" tabindex="1">ここに記事を</textared>
<td>
</tr>
<tr>
<td>詳細</td>
<td class="inTable">
<table summary="詳細入力" border="1">
<tbody>
<tr>
<td>氏名<input type="text" size="10"></td>
<td>性別<input type="radio" name="sex">男 <・・・
</tr>
</tbody>
</td>
</tr>
</tbody>
</table>
CSS
table.formTable,table.formTable table{
border-collapse:collapse;
}
table.formTable td{
border:solid 1px gray;
}
table.formTable th{display:none;}
td.inTable{padding:0;}
td table{margin:0;width:100%}
回答ありがとうございます。
表形式の画面構成に対し,入力フィールドを設けた業務アプリケーションを想定しています。
デザイン性としてのカスケードを想定したのではなく,あくまでも「表」の中に表示と入力が混在している画面にしたかったのが要件です。
少なくとも,固定されたフィールドの指定としてCOLは適さない。というのが結論かと。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
cssで、表示されるテキストによ...
-
テーブルの任意の列を非表示に...
-
テーブルの行を折りたたみたい...
-
ホームページ 表の上の余白を...
-
TRタグの余白をcssで設定するには
-
tableにul,または,olを入れられ...
-
テーブルのセルに画像をピッタ...
-
文字列が入っているtdを削除せ...
-
tdなどの閉じタグは省略しても...
-
フレームを使用せずに、各ペー...
-
テーブルの装飾
-
tableの要素(tr、td)に一...
-
Dreamweaverでテーブルセルの選...
-
スタイルシートで colspan=3と...
-
tableでcolspanを使うと次行以...
-
テーブルの表示がずれます
-
テーブルタグのセルの幅の一部...
-
テーブルの列幅を固定にしたい
-
Marqueeタグについて
-
HTMLで文とテーブルの間が空く。
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
テーブルの行を折りたたみたい...
-
TRタグの余白をcssで設定するには
-
tableにul,または,olを入れられ...
-
テーブルの任意の列を非表示に...
-
テーブルのヘッダとボディの幅...
-
中に<table></table>が使えるア...
-
cssで、表示されるテキストによ...
-
テーブルのセルに画像をピッタ...
-
ホームページ 表の上の余白を...
-
文字列が入っているtdを削除せ...
-
tableの要素(tr、td)に一...
-
テーブルの表示がずれます
-
tdなどの閉じタグは省略しても...
-
HTML <td></td>タグ セル内余...
-
EXCELからhtmlへの変換で罫線が...
-
HTMLのテーブルで桁をそろ...
-
html・cssで日付をキレイに揃え...
-
tableでcolspanを使うと次行以...
-
逆L字の表(table)組み
-
CSSだけで<table>の<td>や<tr>...
おすすめ情報