掲示板のレイアウトはtableを使うべきか?

このQ&Aのポイント
  • 掲示板のソースを覗くとたいていはtableでレイアウトされているように思えますが、今のwebデザインの常識の中ではどうなっているのでしょうか?
  • CSSを使って掲示板のレイアウトを作成することもできますが、tableを使って作ることが多いです。
  • 掲示板では名前やメールアドレスなどの項目を横並びにし、本文を下に配置することが一般的です。
回答を見る
  • ベストアンサー

掲示板もtableを使わず作った方が良いのか?

 現在、HTMLとCSSを勉強中です。  後々はPHPを勉強して掲示板を作ろうと思っております。  HTMLは10年以上前にかじった程度でして、tableを駆使してレイアウトするのが格好良いとされていた時代の人間です。  今はそんなことをすると、CSSを使えよと、表はあくまで表だよと、鼻で笑われてしまうそうで(^_^;  勉強していてふと思ったんですが、掲示板のソースを覗くとたいていはtableでレイアウトされているように思えます。  これってどうなんでしょう?  掲示板は表と言えるのか?  今までの人生で何気なく使っていた「表」という言葉ですが、いまいち定義が分からなくなってきました(^_^;  そもそも、名前、年齢、メールアドレス、都道府県、本文…といろいろな項目をひとまとめにしたレイアウトをCSSでできるんでしょうか?  全部を縦に並べるなら、ラベルを使って何とかなりそうですが、よくある掲示板のように名前やメールアドレス等は横並びで本文を下に、というよなレイアウトがです。  今のwebデザインの常識の中で、掲示板の扱いはどうなってるんでしょう?  やはり、多くの掲示板で使われているようにtableを使って作るもの?  それともCSSで作るのが常識?

noname#235729
noname#235729
  • CSS
  • 回答数5
  • ありがとう数11

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

  • ベストアンサー
  • mitoneko
  • ベストアンサー率58% (469/798)
回答No.5

 掲示板の文書構造が表でもおかしくは無いと思います。  横軸が各項目(投稿時間・投稿者・メルアド・発言内容)で、縦軸が時系列とすれば、立派な表ですね。一発言が表の1行として表現される形です。  個人的には、どちらかというと、構造化された(入れ子の)リストと考えた方が、すっきりするように思います。  特に、発言へのレスを元発言に対して、インデントして表現するとなると、ますますリストっぽくなります。    どちらにしても、レイアウトは完全にCSSでコントロールできます。  リスト構造の一部を横に並べる方法がよく見られるのは、ページトップのメニューです。  このOKWEBサイトの上部にあるカテゴリのメニュー表示が、一番近くにある実例。(スクリプトが絡んでいますが、スクリプトの部分は、マウスを置いた時に子メニューがでるようにするためです。これを無視すればたんなる単純なリストです。)  classをきちんと分けていけば、あまりdivに頼る必要も無いはずです。

noname#235729
質問者

お礼

 ご回答ありがとうございます。  OKWaveのメニュー!  目の前に良い例があったんですね。  XHTMLがよく分からないもので、ソースの宣言を見て閉じてしまいました(^_^;  これを参考に調べてみたいと思います。

その他の回答 (4)

  • t_ohta
  • ベストアンサー率38% (5081/13278)
回答No.4

> ブロック要素だと改行されちゃいますよね。 > 検索してみると横並びにする使い方もあるようですが、ブラウザによってできたりできなかったり。 > divとかじゃなくて、spanで囲って枠をつけて並べるというぐらいしか思いつきませんが、これだと文章的には続いてるのでおかしいですよね(^_^; divをfloatとかinline, inline-blockで並べればいいのです。 HTMLとして独立した要素であることを指定し、CSSでデザインするので最近の考え方に準拠した方法です。 ガラケーのブラウザやサポート期限の切れた古いブラウザ以外なら問題なく表示できます。

noname#235729
質問者

お礼

 ご回答ありがとうございます。  今、ちょっとfloatで試しているんですが、なかなか思うようにいかないですね。  もう少し勉強を続けてみます。

  • ORUKA1951
  • ベストアンサー率45% (5062/11036)
回答No.3

>HTMLは10年以上前にかじった程度でして、tableを駆使してレイアウトするのが格好良いとされていた時代の人間です。  それはないでしょう。HTML4.01が長い検討のうえ、やっとこさ勧告になったのは1999年12月ですから15年前ですよ。 「構造とプレゼンテーションの分離( http://www.asahi-net.or.jp/%7Esd5a-ucd/rec-html401j/intro/intro.html#h-2.4.1 )」 「単に文書内容を整形する目的だけで表を用いるべきでない。( http://www.asahi-net.or.jp/%7Esd5a-ucd/rec-html401j/struct/tables.html#h-11.1 )」 「ページレイアウトの目的で表を用いる。( http://www.asahi-net.or.jp/%7Esd5a-ucd/rec-html401j/present/styles.html#h-14.1 )」  と随所で、強く否定されてきました。もう15年も前の話・・ >そもそも、名前、年齢、メールアドレス、都道府県、本文…といろいろな項目をひとまとめにしたレイアウトをCSSでできるんでしょうか?  ここは、違います。  tableは文字通り、表ですから、それが表であればtableで良いです。 ┌──┬──────┐ │項目│内    容│ ├──┼──────┤ │氏名│山田太郎**│ ├──┼──────┤ │住所│東京都杉並区│ └──┴──────┘  これは表で問題ないです。しかし、記事に関しては表に入れるのはおかしいと思います。 >掲示板のソースを覗くとたいていはtableでレイアウトされているように思えます。  そんなに一般的ではないと思いますが、結構tableを使用したものが多い理由として、いくつか原因が考えられます。 ・後方互換 CSS2.1を解釈できないIE6以前の古いブラウザ対策---もう必要はないでしょう。 ・PHP 元々のデータがテーブル(データベース)であるために変換が楽(というより手抜き) ・とても古い手法を引き継いだままになっている。   >よくある掲示板のように名前やメールアドレス等は横並びで本文を下に、というよなレイアウトがです。  それだと、わざわざ表にする必要はありません。 >掲示板は表と言えるのか?  一般的には表ではないと思いますが・・。  実は、HTML4.01の勧告以来、強く言われてきた事はHTMLは文書構造、スタイルシートはそのデザインを担うという役割分担です。(素のHTMLでさえ、それなりに見出しは大きく、引用部分が字下げされるのはブラウザが持つスタイルシートによるものです。)  そのため<h1>ここは見出し</h1><p>ここから一つの段落</p>とマークアップし、HTMLで用意されていない構造はDIVやSPANとidやclassを使うよう言われてきました。 ★DIV要素とSPAN要素は、id属性及び class属性と併用することで、文書に構造を付加するための一般機構を提供する。( http://www.asahi-net.or.jp/%7Esd5a-ucd/rec-html401j/struct/global.html#h-7.5.4 ) (残念ながら)  これは理解されたとは言いがたく、その反省からHTML5では文書構造を明確化する新しい要素が追加されます。--- http://standards.mitsue.co.jp/resources/w3c/TR/html5-diff/#new-elements  あなたが掲示板を作成されるなら、まず率直にデザインは考えずに!!!HTMLを出力し、デザインは100%スタイルシートで行なうという、HTML4.01strict以来の手法でよいでしょう。 【注意】 『strict DTD に適合する文書を作るよう推奨する。( http://www.asahi-net.or.jp/%7Esd5a-ucd/rec-html401j/conform.html#h-4.1 )』  strictには、デザイン的な要素はありません。 具体的には <body> <div class="header">  この文書のヘッダ  タイトルや要約とかナビゲーション </div> <div class="section">  この文書の本文  <div class="article">   <div class="header">    掲示板記事のヘッダ    <dl>定義リスト     <dt>投稿者</dt>     <dd class="register">氏名<dd>     <dd class="age">年齢</dd>     <dd class="mail">メールアドレス</dd>     <dd class="address">都道府県</dd>    </dl>   </div>   <div class="section">    <p>記事</p>    <p>記事</p>   </div>  </div>  <div class="article">   ・・・【中略】・・・  </div>  <div class="article">   ・・・【中略】・・・  </div> </div> <div class="footer">  このページのフッタ </div> </body>  とかにしておくとよいでしょう。将来HTML5にするときはそのまま <body> <header>  この文書のヘッダ  タイトルや要約とかナビゲーション </header> <section>  この文書の本文  <article>   <header>    掲示板記事のヘッダ    <dl>定義リスト     <dt>投稿者</dt>     <dd class="register">氏名<dd>     <dd class="age">年齢</dd>     <dd class="mail">メールアドレス</dd>     <dd class="address">都道府県</dd>    </dl>   </header>   <section>    <p>記事</p>    <p>記事</p>   </section>  </article>  <article>   ・・・【中略】・・・  </article>  <article>   ・・・【中略】・・・  </darticle> </section> <footer>  このページのフッタ </footer> </body> とするだけになりますから・・ HTML/PHPのメンテナンスもとっても楽になりますし、スタイルシートを書き換えるだけで好きにデザインできます。 [例] div.section div.article{ border:red 2px solid; } div.article div.header dl, div.article div.header dl dt, div.article div.header dl dd{ list-style.none; margin:0;padding:0; } div.article div.header dl{ border:1px gray solid; } div.article div.header dl dt, div.article div.header dl dd{ display:inline-block; padding:0 1em; } div.article div.header dl dd{ border-left:1px soid gray+ } とすれば、『名前、年齢、メールアドレス、都道府県、本文…といろいろな項目をひとまとめにしたレイアウト』が可能ですね。

noname#235729
質問者

お礼

 ご回答ありがとうございました。

回答No.2

考えようによってはテーブルだと言えなくもないですが、1つ1つは何ら関係性のあるものでもないし、 ul -> li -> divなどの構造で、リスト化していった方がレイアウトは作り易いと思います。 twitterやfacebookのコメント欄、MSDN フォーラムなどはそのような作りです。 (olだったりulだったりはするでしょうが、基本的に、ということで) 大したコメント量が書き込めず、ものすごく単調な作りなら大枠はtable、tdは1つ、中身を divやspanで構成という形でもいいでしょうけど、そういうサイトは最近は見かけませんね。 tableを使うかどうかはともかく、常識というか、htmlは構造を定義するもので、レイアウト定義はcssですよ。 htmlで無理矢理レイアウトを構成させると、最近なら様々なデバイスでページを閲覧した時に問題が生じると思います。

noname#235729
質問者

お礼

 ご回答ありがとうございます。  そうなんですよね。  自分としてもレイアウトはきっちりCSSでしたいんですが、CSSでレイアウトしてる掲示板が見当たらなくて・・・。  「掲示板を作る CSS」などで検索しても、CSSの質問をするための掲示板がヒットしたり(^_^;  具体例があれば分かりやすいんですけど・・・。  Twitterとかにヒントがありそうですね。

  • t_ohta
  • ベストアンサー率38% (5081/13278)
回答No.1

どんなレイアウトも基本的にはCSSで出来ます。 HTMLのタグは、タグが持つ本来の意味で使いましょうというのが今の流れなので、tableは何かの比較一覧のようなモノだったり、実験等の計測結果のようなデータを表す際に使用すると考えるといいと思います。 掲示板は一つ一つの投稿は独立した記事であり、縦や横に並んだものを比較して見るようなモノでは無いのでtableでは無くブロック要素でレイアウトしていく方がいいと思います。

noname#235729
質問者

お礼

 ご回答ありがとうございます。  ブロック要素だと改行されちゃいますよね。  検索してみると横並びにする使い方もあるようですが、ブラウザによってできたりできなかったり。  divとかじゃなくて、spanで囲って枠をつけて並べるというぐらいしか思いつきませんが、これだと文章的には続いてるのでおかしいですよね(^_^;  ブラウザ上では  名前 年齢 メルアド  と分かれていても、  文章としては  名前年齢メルアド  ですもんね(^_^;

関連するQ&A

  • tableレイアウトについて。

    自分は HTML , CSSを勉強して、ホームページをつくっていたのですが、いざ、就職をしてみると、ホームページのソースが自分が今まで、勉強してきた HTML, CSSは使われておらず、tableレイアウトでつくったホームページを沢山、目にします。特に楽天やYahooなどECサイトなどで多くみられます。自分は HTML, CSSをつかって <div></div>でレイアウトをするのが正しいとおもいやってきたのですが、このさき、tableレイアウトで作るやり方も勉強するべきでしょうか?

    • ベストアンサー
    • HTML
  • テーブルは使っちゃいけないんですか?

    自分のホームページを持ちたいと思ってHTMLとCSSを勉強しているんですがためしに作ってみたページを知識のある友達に見せたら「全然だめ。一からやりなおし」と言われました。「どこで覚えたか知らないけどレイアウトにテーブルを使うとかふざけてる」と言われたんですが何でだめなのか聞きそびれました。よかったら何でだめなのか教えてください。

    • ベストアンサー
    • HTML
  • 掲示板やメールフォームを自由にレイアウトし設置するには

    Flash(もちろんASも)とHTML&CSSを学びはじめて、そこそこ使えるようになってきた というぐらいのものです。で、HP設置の為にlolipopで契約を最近しました。 lolipop HPにある、10日間で出来ちゃうHP講座などで紹介されている 掲示板やメールフォームなどはアドレスをリンクさせるだけのものなので難なくできたのですが、掲示板やメールフォームなどを好みにCSSでレイアウトしたいと思うのですが、何から手を付けてよいのやらという感じで困っています。 自分なりに検索をしたりしてみたのですが、どうも何から行えばいいのかがわかりません。CGIは難しいのでまずはjavaをと書いてあるところもあれば、必要に応じてCGIを覚えてゆけばよいというかたちで私ではさっぱり理解できないCGI入門だったりという感じでどうしてよいのやらという感じです。 とりあえず、掲示板やメールフォームを自由にレイアウトし設置するという事を目的にした場合、何から勉強していけばいいのでしょうか? ご教授をいただきたく思います。よろしくお願いします。

    • ベストアンサー
    • HTML
  • テーブルレイアウトしてしまっている後でCSSの背景を適用したいです。

    私HPをつくっているのですが、 テーブルレイアウトをしているのですが、 最近CSSを勉強しだしまして、 テーブルレイアウトのうしろの背景色を設定しようと思っております。テーブルはすべて中央揃えにしておりまして、 そのテーブル以外の部分に背景色を設定したいと思っております。 どのようにしたいかというと 参考HPをあげておきます。 http://www.neutrals.jp/works.html http://www.kekkon-navi.org/ http://www.plusmoney.jp/ この用な感じにメニューや本文の部分は白くて、 それ以外のところの背景が色をついている状態にしたいです。 外部CSSで全ページに適用していこうと思っているのですが、 CSSにはどのように記述したらよろしいでしょうか? お詳しい方よろしくお願いいたします。

    • ベストアンサー
    • HTML
  • テーブルレイアウトのサイトでSEO

    CSS+HTMLでやらずにテーブルレイアウトで作ったサイトで、効果の上がるサイト、SEOに強い、良いサイトを作る事は可能でしょうか?

  • ホームページビルダーでcssレイアウトは可能ですか?

    Web制作初心者です。 Htmlのtableでトップページ全体をレイアウトすると、読み込みが遅くなるそうですが、ホームページビルダー9を使っているため、レイアウトを作るのは簡単にすみ、いままでtableで作成してきました。 今度、新たにサイトを作るのですが、cssでレイアウトを作りたいと思います。そこで、ホームページビルダー9はcssでtableのようなレイアウトを作ることは可能なのでしょうか? tableの場合は、「表の挿入」を選んで、「行の追加」や「列の追加」、「選択セルの結合」とかでどんどん表を作っていって、セルに画像追加や文字を書いていました。 こういうのはcssでは(ホームページビルダー上では)どのようにするのでしょうか? あと、tableを作って、その下にもtableを追加していくと、ページをプレビューした場合、下のほうに行くにつれてそれぞれの表がズレていきます。cssではズレないようにできるのでしょうか?

  • Dreamweaver8でテーブルをCSSで作るには

    Dreamweaver8使っています。 テーブルをCSSで作るにはどうすればいいのでしょうか。今までテーブルレイアウトでしたのでやり方が不明です。

  • htmlのtableレイアウトについて

    こんばんは。訳あってcssとテーブルの両方のレイアウト手法を用いた サイト作りをしています。準初心者です。 昔から受け継がれてきたサークルのサイトの更新担当をしているのですが、 テーブルレイアウトとcssレイアウトがごちゃまぜで、わけの分からないスペーサーgifなど も多用されていたりと、悲惨な有様なので、必死に修復しているところです。 テーブルレイアウトとで組まれていても、今回は抜本的な対策は留保するつもりで書いていた のですが、ある問題に突き当たりました。 divタグ内のtableタグによって作られた1×1の表ボックスが更新情報欄になっていて、 ページの左端に隙間無くくっついているようなレイアウトにしようと試みました。 <TABLE style=" border:0px;padding:0px;margin:0px;・・とするとdivのブロック要素と テーブルが完全にくっついた状態にできると思い実践してみたのですが、どうしても何pxかの隙間が生じてしまうのです。試行錯誤の末、もとのソースコードではtable要素にhtmlでwidth="400" と指定されていたものをtableタグ内に <TABLE style=" border:0px;padding:0px;margin:0px;  width:400px;> と指定し直した結果、計らずしもこの隙間は無くなりました。 そこで疑問なのですが、なぜこのような結果になったのでしょうか、ご教授ください!

    • 締切済み
    • CSS
  • テーブルレイアウトとは

    テーブルレイアウトとは,テーブルタグを表以外のコンテンツなどに使うことでしょうか? http://okfood.digiweb.jp/index.htmlのコンテンツもテーブルレイアウトなのですよね。 このサイトの場合、同じような見た目にするにはdivを縦横に重ねて、thの毎度縦幅をCSSでかえて行うのでしょうか? 大変過ぎてやっていられなくないですか? WEBデザイナーはそこまでやっているのでしょうか?それとももっと便利な方法があれば教えてください。 SEO上も不利なのでしょうか? table内の文字を軽視されるのでしょうか?

    • ベストアンサー
    • HTML
  • レイアウトはテーブルよりCSSですか?

    今まで、Webサイトのレイアウトは、テーブルを何重にも入れ子にして、行ってきました。 最近、「レイアウトにテーブルを使うのはよくない」「テーブルで全体を囲っているレイアウトはダサい」などの意見を聞くようになってきました。 奮起して、テーブルでつくったページをCSSに書き換えようと思いましたが、なかなか困難です。 位置を左上基点に、それぞれの<div>をabsoluteで設定すれば、比較的容易にレイアウトを組めるのですが、やはり全体を画面の中心に持っていきたい、そうなると、全体をテーブルで囲って、align="center"が簡単です。 そこで、質問です。 ・CSSでレイアウトを組むとき、左上を基点にされていますか?全体を中央に配置するようにされていますか? ・CSSで、全体を中央に配置するとき、全体を<div>で囲って、その中に<div>を入れ子にして、配置していくと思いますが、なかなか思い通りの配置になりません。このやり方であっていますか?簡単なやり方がありますか? ・やはり、レイアウトにはテーブルよりも、CSSを使ったほうがいいですか? ご意見・ご回答いただきたく、どうぞよろしくお願いします。

    • ベストアンサー
    • CSS

専門家に質問してみよう