• ベストアンサー

テーブルタグにheight要素

少し疑問なので質問です。 テーブルタグにheight要素が適用されない場合というのは、 どういう場合がありますでしょうか? 現在、テーブルを弄っているのですが、 なぜかテーブルタグにheightが適用されません。 一定の大きさ以上にはなるのですが、 それ以下の大きさには設定できない状態です。 例えば、300pxが基のサイズだとして、 それより大きくはできるのですが、小さくは出来ないのです。 CSSで適用しても同様の結果が得られました。 何か理由があるのでしょうか?

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

  • ベストアンサー
回答No.2

再現しました。テストケースを示します。(解決策ではありません) <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>実験</title> <style type="text/css"> table,p{ width:70%; } .menu1{ table-layout:fixed; background-color:red; height:100px; } .menu2{ table-layout:fixed; background-color:yellow; height:30px; } .menu3{ table-layout:fixed; background-color:green; height:5px; } .menu4{ table-layout:fixed; background-color:green; height:1000px; } </style> </head> <body> <table class="menu1"> <caption>メニュー</caption> <thead> <tr><th>料理</th><th>値段</th></tr> </thead> <tbody> <tr><td>豚肉定食</td><td>800</td></tr> <tr><td>鶏肉定食</td><td>1000</td></tr> <tr><td>牛肉定食</td><td>1200</td></tr> </tbody> </table> <p class="menu1">ほげふが</p> <table class="menu2"> <caption>メニュー</caption> <thead> <tr><th>料理</th><th>値段</th></tr> </thead> <tbody> <tr><td>豚肉定食</td><td>800</td></tr> <tr><td>鶏肉定食</td><td>1000</td></tr> <tr><td>牛肉定食</td><td>1200</td></tr> </tbody> </table> <p class="menu2">ほげふが</p> <table class="menu3"> <caption>メニュー</caption> <thead> <tr><th>料理</th><th>値段</th></tr> </thead> <tbody> <tr><td>豚肉定食</td><td>800</td></tr> <tr><td>鶏肉定食</td><td>1000</td></tr> <tr><td>牛肉定食</td><td>1200</td></tr> </tbody> </table> <p class="menu3">ほげふが</p> <table class="menu4"> <caption>メニュー</caption> <thead> <tr><th>料理</th><th>値段</th></tr> </thead> <tbody> <tr><td>豚肉定食</td><td>800</td></tr> <tr><td>鶏肉定食</td><td>1000</td></tr> <tr><td>牛肉定食</td><td>1200</td></tr> </tbody> </table> <p class="menu4">ほげふが</p> <p><a href="http://www.y-adagio.com/public/standards/tr_css2/tables.html#height-layout "> CSS2 17.5.3 表の高さのアルゴリズム</a>では以下のようになっている。</p> <blockquote> <p> 表の高さは,'table'要素又は'inline-table'要素の'height' 特性によって提供される。 'auto'という値は,高さが行の高さにあらゆるセル間スペース又は境界を加味した合計であることを意味する。 その他の値はいずれも高さを明示的に指定する。 従って,表はその行の高さよりも高くてもよいし,低くてもよい。 <strong>CSS2は,指定された表の高さが内容の高さとは異なる場合,レンダリングを指定しない。 特に内容の高さが指定された高さを上書きするのがよいかどうか, 上書きしない場合,指定された表の高さに合わせて余ったスペースを行にどのように分配するのがよいか, 内容の高さが指定された表の高さを超える場合,UAがスクロール機構を提供するのがよいか,を指定しない。 </strong> </p> </blockquote> </body> </html>

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (2)

回答No.3

ところで、 >テーブルタグにheight要素 table【要素】にheight【属性】ね 全然違うので注意。(ま、タグに属性、は場合によっては許せるかな)

全文を見る
すると、全ての回答が全文表示されます。
  • steel_gray
  • ベストアンサー率66% (1052/1578)
回答No.1

とりあえずHTMLの仕様上、(thやtdにはありますが) tableのheight属性は正式には存在しないので 使わないようにするのが基本です。 一定以上にはなるが、一定以下にはならないという状況はよくわかりません。 >例えば、300pxが基のサイズだとして、それより大きくはできるのですが、小さくは出来ないのです。 何が基? 無指定で内容物でそれぐらいの高さがあるとして それより小さくしたいとしたら、どういう表示結果を望んでいるのでしょう? (ハミでる分を隠す?スクロールバーを出す??)

ktakusya
質問者

補足

tableのheightは無い・・・ですか。 初めて知りました。勉強になります。 無指定で300pxくらいです。 表示結果としては、単純にtableを縮小したいだけです。 それでheightを使っていたのですが、大きくはなりますが小さくならない状況です。 小さくならない=無指定の状態より小さくならないということです。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • CSSでdivのheightを動的に

    DIV要素を作り、その中にテキストを配置しています。これの高さ(height)をCSSで次のようにしたいのですが。どのようにすれば良いでしょうか。 1.文章量が多く、画面外まではみ出したらDIV要素の高さをそれに追従させる。 2.文章が画面内に収まる場合、余ったスペースをDIV要素ですべて埋める。 DIV要素のheightを動的に変化させたいのでpxによる絶対値指定はしません。パーセント指定で100%にしてもうまくいかず、調べてみたところこれは親要素の値に依存するとのことでした。そこで html, body { height: auto; } #main { height: auto; } としてみたところ、1.の「はみ出した場合のサイズ追従」は実現できましたが、2.の「余ったスペースを埋める」ことはできませんでした。逆に html, body { height: 100%; } #main { height: 100%; } にすると2.の「余ったスペースを埋める」ことはできますが1.の「はみ出した場合のサイズ追従」はできません。この両方を実現することってできませんか?

    • 締切済み
    • CSS
  • heightどこか間違ってます?

    以下のような要素を定義してますが, このうちheightの数字をこれ以上小さくしても 変化しません。下限値などがあるのでしょうか。 <div style="left:10px;width:28px;height:10px; background-color:black;"></div>

    • ベストアンサー
    • HTML
  • heightとmin-heightの組み合わせ方

    webページでページの縦の長さを以下のようにしたいです。 ブラウザの縦の表示が600px以上だった場合 → ページの縦長さは100% ブラウザの縦の表示が600px未満だった場合 → ページの縦長さは600px つまり、縦長さ100%を維持しつつ、ブラウザの縦長さが600pxを下回った場合にはページの長さを600pxで固定(スクロールバーつき)したいのです。 今現在cssでidを2つ作ってそれぞれに min-height:600px と height:100% を与えてその二つのidでbodyを囲んでいるのですが、うまくいきません。 どなたか教えてください;;

  • tdに対してmin-heightの定義、または同じ

    テーブルのtdに対してmin-heightの定義を行いたいのですが、調べてみますと、多くのブラウザでtdなどへは対応外と記述が御座います。 色々と駆使して試してみたのですがうまくいきません。 tdに対してmin-heightをハック的にでも適用することは出来ませんでしょうか? または同じような効果が得られる方法がありましたらアドバイス願います。 min-height:100px; height:auto; height:100px; この様な方法もあったのですが、div要素には効果があるようですがtdにはやはり反映されませんでした。 よろしくお願いします。

    • 締切済み
    • CSS
  • floatした要素を親要素に対して左右ピッタリに収める

    タイトルのとおり、CSSのfloatを使ってある要素を横にレイアウトします。 この要素は増減します。マージンを使って要素の右に隙間を作りますが、一番右にくる要素にも同じマージンがつくので、親要素に対して右端に不要な隙間ができます。 3つ以上の要素をfloatを使って左右一杯に配置するにはどうすればいいのでしょうか。IE6をメインに、safari1.0やfirefoxでも実現できる方法を教えてください。 ソースはこんな感じです。 【HTML】 <div> <p><img src="○○○○" width="150" height="150" /></p> <p><img src="○○○○" width="150" height="150" /></p> <p><img src="○○○○" width="150" height="150" /></p> <p><img src="○○○○" width="150" height="150" /></p> ・ ・ ・ </div> 【CSS】 div{ width:800px;} p{ width:150px; float:left; margin-left:50px;} この場合、4つ目の要素の右にも50pxの空間ができます。 800pxの中に、均等割付けできればと思います。 よろしくお願いいたします。

  • テーブルタグについて

    重ね重ね質問してごめんなさい! スタイルシートを使ってみたんですけど・・・ <HTML> <HARD> <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> <meta http-equiv="content-style-type" content="text/css"> <META name="robots" content="noindex,nofollow"> <TITLE>**************</TITLE> <style type="text/css"><!-- body{font-size:12px;} div{font-size:14pt;font-weight:bold;color:orange;text-indent:47em;} .moji{font-size:13px;font-weight:normal;color:black;text-indent:65em;} span{font-size:14px;color:orange;margin-left:75em;} .rire{font-size:12px;color:black} --></style> </HEAD> <BODY> <BR><BR><BR><BR> <div>***********</div> <BR> <div class="moji">***************</div> <BR><BR> <span><A HREF="mail.htm"><IMG SRC="image/******.gif" border=0></A>(←mail)</span> <BR><BR><BR><BR> <table class="rire" border align="right" border="0" cellpadding="0" cellspacing="1" bordercolor="orange"> <tbody> <tr> <td>**** <img src="image/***.gif"></td> <BR> <tr> <td align="left"> <table style=" border:1px;solid #ffa000; cellpadding: 3px;width: 320px;height: 63px ;color:black; font-size:12px;"> <tr> <td>****</td> </tr> </tbody> </table>    ・    ・    ・ テーブルタグを閉じても文字がテーブルの中に入ってしまうんです・・・。 何が間違っているのか分かりません・・・。閉じるタブは閉じてます・・・よね? 教えてください!

    • ベストアンサー
    • HTML
  • css heightについて

    wordpressのテーマのCocoonというのを使用しています。 そのページにだけ適用できるカスタムCSSに下記のようにtextareaの高さを指定したのですが、まったく変わりません。他に何か指定しないといけないものがあるのでしょうか? textarea{ height:50px; }

    • ベストアンサー
    • CSS
  • table要素のwidthの解釈

    tableタグを使って次のようなことをしたいと考えています。 ・table要素の親はdiv要素 ・div要素にはサイズ(width/height)が指定されており、overflow:hiddenとしてある。 ・table要素にはサイズを指定しない ・td要素にはサイズを指定する →つまり、tableのサイズはtdのサイズで決定する HTML/CSSは次の通りです。 ----------------------------------------------------- div { width: 300px; overflow: hidden; } table { table-layout: fixed; } td { width: 170px; } <div> <table><tr> <td>a</td><td>b</td><td>c</td> </tr></table> </div> ----------------------------------------------------- このコードを「DOCTYPE宣言を書かずに」IE8で開くと、想定通りの表示になりますが、 <!DOCTYPE html>と記述すると、tableの横幅が300pxに詰められてしまいます。 td要素のwidth指定が働かず、親のdiv要素のwidthに無理やり押し込められてしまうようです。 また、FirefoxではDOCTYPE宣言無しでも同様の問題が起きてしまいます。 table内の列数は固定ではないので、tableに対してwidth指定はしたくありません。 何か書き方が間違っているのでしょうか。 あるいは、標準準拠モードの仕様では、そもそもできないことをやろうとしているのでしょうか。

  • tbody要素に削除出来ないマージンが入る

    table要素の thead要素及びtbody要素についてですが この2つの要素は内部的に margin: 2px; が指定されたような感じになっています。(firebugなどで確認) つまり、上下左右にマージンが2px自動的に入ってます。 もちろん、table要素とtbody要素には、margin及びpadding及びborderは0を設定しています。 このマージンのようなものを取り去りたいのですが margin : 0px;などとしてもこのマージンのようなものを取り去ることは出来ませんでした。(ツールでみると、マージン及びパッディングは0なので当たり前ですが) table要素を使う限り、この2pxというものは自動的に挿入され、CSSでは取り去ることは無理なのでしょうか? 回避策としては、margin: -2px;で回避することは可能みたいなのですが そもそもどうしても2pxが入ってしまうのか、またそれがなぜCSSで設定出来ないようになっているのか 疑問に思っています。 これは、firefox3.6(firebug) 及び ie8(開発ツール)で確認しました。 分かりにくい説明かもしれませんが宜しくお願いします。

    • ベストアンサー
    • HTML
  • block要素を使ったものに対してのセンタリング

    CSSにて、メニューボタンなどに文字をのせて表示するときに、 1行だとpaddingで制御した結果、センタリングされるのですが、2行以上になる1行を基準にした位置から下に配置されてしまいます。 vertical-aglinを使ってみようとしましたが、block要素を使っている場合、利用できないようです。 #aaa #test1 li a { display:block; height:40px; padding:14px 5px 0 48px; } 何かアドバイスがありましたら、お教えいただければ幸いです。 よろしくお願いします。

    • 締切済み
    • CSS