- ベストアンサー
HTMLテーブル構造の疑問 - IE8~IE10での表示方法
- HTMLでテーブルを特定の構造にする方法を調べています。IE8~IE10で表示できる方法が特に知りたいです。
- カラムの幅を指定せずに、テーブルの左端と右端を揃えたいです。
- IE以外のブラウザでも表示できるとなお嬉しいです。
- みんなの回答 (7)
- 専門家の回答
質問者が選んだベストアンサー
うまくない <table border=1 > <tr > <th>見出し1</th><td colspan=3 >○○○○○○</td> <th>見出し2</th><td>○○○</td> </tr> <tr> <th>見出し3</th><td>○○</td> <th colspan=3>少し長い見出し4</th><td>○○○</td> </tr> <tr height=0 > <td> </td> <td> </td> <td> </td> <td> </td> <td> </td> <td> </td> </tr> <tr height=0 > <td>□□</td> <td>□□</td> <td>□□</td> <td>□□</td> <td>□□</td> <td>□□</td> </tr> </table>
その他の回答 (6)
- ORUKA1951
- ベストアンサー率45% (5062/11036)
将来性を考慮すると ___<dl class="name C2"> ____<dt>氏名</dt> ____<dd><input type="text" size="10" name="name" value=""></dd> ____<dt>性別</dt> ____<dd>男:<input type="radio" name="sex" value="M"> 女:<input type="radio" name="sex" value="F"></dd> ___</dl> ___<dl class="address C2"> ____<dt>住所</dt> ____<dd><input type="text" size="40" name="address" value=""></dd> ___</dl> ___<dl class="mail C7"> ____<dt>メールアドレス</dt> ____<dd><input type="text" size="10" name="e-mail" value=""></dd> ___</dl> ___<dl class="mail C10"> ____<dt>メールアドレス(確認)</dt> ____<dd><input type="text" size="10" name="e-mail2" value=""><strong>コピーペーストしない</strong></dd> ___</dl> ___<dl class="textarea C4"> ____<dt>連絡事項</dt> ____<dd><textarea cols="40" rows="5" name="message"></textarea></dd> ___</dl> のようにclass名をつけておいたほうが良いでしょうね。
- ORUKA1951
- ベストアンサー率45% (5062/11036)
No.3へのお礼 >項目名と入力欄のセット、を GridLayout したいのです… から入力フォームだと判断したサンプルです。 IEにはtableに関してバグがあって、数年前にも ⇒テーブルをスクロールさせるときのスクロールの位置 - HTML - 教えて!goo( http://okwave.jp/qa/q7105490.html ) 試されたらわかるように、他のブラウザはすべて期待通りに、tableだろうがdlだろうが同じデザインになるはずですが、IEのみ期待通りになりません。 なおclass名の class="textarea C4"の意味はわかると思いますが、項目見出しの文字数をcharacter(C)が4文字と言う意味です。 form.dl dl{/* 略 */position:relative;} ・・・・ form.dl dl.textarea dt{display:block;position:absolute;top:0;left:0;height:100%;} form.dl dl.C4 dd{padding:0 1em;position:relative;top:2px;} form.dl dl.C4 dd{margin-left:6em;} ・・・【中略】・・・ form table tr{/* ・・・*/position:relative;} ・・・ form table tr.textarea th{display:block;position:absolute;top:0;left:0;height:100%;} form table tr.C4 td{padding:0 1em;position:relative;top:2px;} form table tr.C4 td{margin-left:6em;} 縦ボーダーをこの方法以外では行高さに合わせられないためにabsoluteで参照させています。
- ORUKA1951
- ベストアンサー率45% (5062/11036)
tableが必須だとIEを使用すれば無理です。 説明は次回 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html lang="ja"> <head> _<meta http-equiv="content-type" content="text/html; charset=Shift_JIS"> _<title>サンプル</title> _<meta name="author" content="ORUKA1951"> _<meta http-equiv="Content-Style-Type" content="text/css"> _<link rev="made" href="mailto:oruka1951@hoge.com" title="send a mail" > _<link rel="START" href="../index.html"> _<style type="text/css"> <!-- html,body{margin:0;padding:0;} h1,h2,h3,h4,h5,h6{margin:0;line-height:1.6em;} p{text-indent:1em;} div.header,div.section,div.footer{width:90%;min-width:630px;max-width:900px;margin:0 auto;padding:5px;} div.section{position:relative;} /* 色分け */ body{background-color:gray;} div.header{background-color:aqua;} div.section{background-color:white;} div.footer{background-color:fuchsia;} form.dl{display:block;border:solid 2px gray;width:60%;margin:10px auto;line-height:1.8em;} form.dl dl{display:block;margin:0;padding:0;list-style:none;border-width:1px 0;border-style:solid;border-color:gray;position:relative;} form.dl dl dt,form.dl dd{display:inline-block;padding:0 1em;margin:0;} form.dl dl dt{border-style:solid;border-color:gray;border-width:0 1px;} form.dl dl.textarea dt{display:block;position:absolute;top:0;left:0;height:100%;} form.dl dl.C4 dd{padding:0 1em;position:relative;top:2px;} form.dl dl.C4 dd{margin-left:6em;} form table{width:60%;margin:10px auto;border:solid 2px gray;line-height:1.8em;} form table,form table tbody,form table tr{display:block;} form table th,form table td{display:inline-block;font-weight:normal;padding:0 1em;position:relative;top:-1px;} form table tr{border-width:1px 0;border-style:solid;border-color:gray;position:relative;} form table tr th{border-style:solid;border-color:gray;border-width:0 1px;} form table tr.textarea th{display:block;position:absolute;top:0;left:0;height:100%;} form table tr.C4 td{padding:0 1em;position:relative;top:2px;} form table tr.C4 td{margin-left:6em;} --> _</style> </head> <body> _<div class="header"> __<h1>タイトル</h1> __<p>このページでは・・・・</p> _</div> _<div class="section"> __<h2>見出し</h2> __<form action="./" class="dl"> ___<dl> ____<dt>氏名</dt> ____<dd><input type="text" size="10" name="name" value=""></dd> ____<dt>性別</dt> ____<dd>男:<input type="radio" name="sex" value="M"> 女:<input type="radio" name="sex" value="F"></dd> ___</dl> ___<dl> ____<dt>住所</dt> ____<dd><input type="text" size="40" name="address" value=""></dd> ___</dl> ___<dl> ____<dt>メールアドレス</dt> ____<dd><input type="text" size="10" name="e-mail" value=""></dd> ___</dl> ___<dl> ____<dt>メールアドレス(確認)</dt> ____<dd><input type="text" size="10" name="e-mail2" value=""><strong>コピーペーストしない</strong></dd> ___</dl> ___<dl class="textarea C4"> ____<dt>連絡事項</dt> ____<dd><textarea cols="40" rows="5" name="message"></textarea></dd> ___</dl> __</form> __<form action="./"> ___<table summary="フォーム"> ____<tbody> _____<tr> ______<th>氏名</th> ______<td><input type="text" size="10" name="name" value=""></td> ______<th>性別</th> ______<td>男:<input type="radio" name="sex" value="M"> 女:<input type="radio" name="sex" value="F"></td> _____</tr> _____<tr> ______<th>住所</th> ______<td><input type="text" size="40" name="address" value=""></td> _____</tr> _____<tr> ______<th>メールアドレス </th> ______<td><input type="text" size="10" name="e-mail" value=""></td> _____</tr> _____<tr> ______<th>メールアドレス(確認)</th> ______<td><input type="text" size="10" name="e-mail2" value=""><strong>コピーペーストしない</strong></td> _____</tr> _____<tr class="textarea C4"> ______<th>連絡事項</th> ______<td><textarea cols="40" rows="5" name="message"></textarea></td> _____</tr> ____</tbody> ___</table> __</form> _</div> _<div class="footer"> __<h2>文書情報</h2> __<dl class="documentHistry"> ___<dt id="FIRST-PUBLISHED">First Published</dt> ___<dd>2013-03-03</dd> __</dl> _</div> </body> </html>
お礼
ありがとうございます。確認してみました。 教えて頂いた方法だと↓のようになりますね。(等幅フォントで見ないとずれますが…) ┏━━━━━━┳━━━━━━━┳━━━━┳━━━┓ ┃見出し001┃○○○○○○○┃見出し2┃○○○┃ ┣━━━┳━━┻┳━━━━━━┻━┳━━┻━━━┫ ┃見出3┃○○○┃少し長い見出し4┃○○○ ┃ ┗━━━┻━━━┻━━━━━━━━┻━━━━━━┛ 質問の仕方が悪かったですね、すみません;; ↓こういう感じにしたかったのです。 ┏━━━━━━┳━━━━━━━┳━━━━┳━━━┓ ┃見出し001┃○○○○○○○┃見出し2┃○○○┃ ┣━━━━━━╋━━━┳━━━┻━━━━╋━━━┫ ┃見出3 ┃○○○┃少し長い見出し4┃○○○┃ ┗━━━━━━┻━━━┻━━━━━━━━┻━━━┛ 基本はセルの端を揃えて、 でも指定した箇所だけは侵食させたい(?)みたいな感じなのですが… ちょっと難しそうですね。 # あ、教えていただいた方法も今後使いそうなので # メモさせて頂きます(´人`) もうしばらく開けて置きますが、しばらくして他に方法がなかったら締めようと思います。
補足
ありがとうございます。 ちょっと急ぎ仕事が入ってしまったので週明けの報告になってしまいそうですが、 落ち着いたら確認してみます。 (´人`)
- ORUKA1951
- ベストアンサー率45% (5062/11036)
No.3です。 >質問の2「カラムの width 等を指定することなく左端や右端を揃えたい」が叶えば もう少し詳しく・・ ・widthを指定したくないということは、リキッド--使用環境によってディスプレイ幅が異なるため内容に応じて伸縮の余地を残しておきたいと言うことでしょうか? ・tr |--tr |--td |--tr |--td tr |--tr |--td |--tr |--td となってますが、ひとつのtr内に必ずふたつ以上ののtr+tdのセットがあると言う事ですか? なぜ、 table tr |--tr |--td |--tr |--td table tr |--tr |--td |--tr |--td じゃまずいのか??? 定義リストで言うと dl dt(定義) dd(説明) dt(定義) dd(説明) dl dt(定義) dd(説明) dt(定義) dd(説明) ・・ 差し支えない範囲で。、もう少し具体的な文書構造を示していただけると良いです。 ★HTMLには、レイアウトは考えずに率直に文書構造だけ記してください。そのほうがデザインは楽ですし、HTMLの改訂もスタイルシートも楽になりますし、環境に依存しませんから・・ 私が知りたいのは文書構造と、それをどのようにプレゼンテーションしたいかです。
- ORUKA1951
- ベストアンサー率45% (5062/11036)
本当に表ですよね。 『ページレイアウトの目的で表を用いる。( http://www.asahi-net.or.jp/%7Esd5a-ucd/rec-html401j/present/styles.html#h-14.1 )』のは、最も避けなければならないのです。 見出しがどのような物かわかりませんが、見出し(heading)はそんなに連続する物ではありません。 【引用】____________ここから スタイルシートはこれらの問題を解決すると同時に、HTMLにおける制限されたプレゼンテーション機構に取ってかわる。スタイルシートでは、行間の設定やインデントの設定、テキスト色や背景色、フォントのサイズとスタイル、その他様々なプロパティの設定が簡単にできる。  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ここまで[Style Sheets in HTML documents (ja)( http://www.asahi-net.or.jp/%7Esd5a-ucd/rec-html401j/present/styles.html#h-14.1 )]より ですので、文書構造だけがHTMLでキチンのマークアップされていれば、表よりもはるかに容易に自在にデザインできますし、IE7とか9とかFirefoxとかの視覚ブラウザだけでなく、携帯電話も点字端末も読み上げブラウザ(スクリーンリーダー)も印刷機も・・・そして検索エンジンにも最適なページを作ることが出来ます。 ○○部分がテキストだとして・・・ <dl class="test"> <dt>見出し1</dt> <dd>記事・・・</dd> <dt>見出し2</dt> <dd>記事・・・</dd> </dl> <dl class="test"> <dt>見出し3</dt> <dd>記事・・・</dd> <dt>見出し4</dt> <dd>記事・・・</dd> </dl> とかのほうが望ましいのじゃないかと。
お礼
# 質問の追記とか補足に追記ってできないんですか… なお、質問にて "見出し" としてしまいましたが正確には "項目名" です。 項目名と入力欄のセット、を GridLayout したいのです…
補足
ご明察の通り、実はテーブルレイアウトです… テーブルレイアウトが駄目なのは百も承知なのですが、 今回は社内の閉じた環境でのみ使う画面であること、 他色々な理由との兼ね合いで テーブルレイアウトを使うことになっています。 質問の2「カラムの width 等を指定することなく左端や右端を揃えたい」が叶えば テーブルレイアウトなんか使わなくても良いのですが…
- warpspace
- ベストアンサー率56% (83/147)
可能です。 ↓「複雑な表(テーブル)の作り方 colspan rowspan」が参考になります。
補足
ありがとうございます。 参考サイトを拝見したのですが、 普通のcolspan,rowspanの記述しか見つけられませんでした。 質問の、1のTDと4のTHが喰い合う?ような構造ができないかと思っているのですが、 それについてのヒントも載っていましたでしょうか。
補足
ありがとうございます。 やっぱりそういう感じになっちゃいますよね! 実は投稿した後ふと思いついてダミー行をかますのやってみたのですが、 カラムの幅の割当が希望通りにならなかったり (これはまあ調整すればできそうな気もしなくもないのですが) ダミー行がうまく消せなかったりしていまひとつです… ↓ダミー行を非表示にする為に試したcss /* border を消すと喰い合いが解消されてしまうように見える */ tr.test1 td { padding:0; border-width:0; } /* border があれば喰い合ったままに見える。縮んで欲しくないところが縮んでる気がするけど。ただ要らない枠線が残る */ tr.test2 td { padding:0; height:0; } /* 予想通り駄目 */ tr.test3 td { display:hidden; } うう…