• 締切済み

セルを結合してもCSSで設定した一つ分の幅で表示されます

tableタグを使用して表を作成しており、幅や罫線などの装飾はすべてCSSを使用しています。 質問は、WindowsのIEのみで発生する事象についてです。 colspanで結合しているthタグやtdタグがいくつかあるのですが、それらがCSSのwidthで設定した幅の一つ分で表示されてしまうのです。 FirefoxやSafari、Mac版IEでは発生しません。結合したセルの幅で表示されます(例:widthで100pxを設定し、colspan="3"なら、300pxで表示)。 これはWindows IEのバグでしょうか? ネット上でかなり探してみましたが、情報は得られませんでした。 解決策・回避策をご存じの方、ご教示ください。

noname#137843
noname#137843
  • HTML
  • 回答数4
  • ありがとう数4

みんなの回答

  • k0021
  • ベストアンサー率26% (32/120)
回答No.4

no3です。 >このcolタグというものを私は使ったことがなく 使用しないで出来ないことは、 質問しないで下さい 回答に対してたらてトライすることが必要と思います >ネット上でかなり探してみましたが、情報は得られませんでした たしか同一質問に回答していますがどのていどの検索ですか >やはり一つ一つのセルにclassを設定することに変わりはなく 一つのセルにclassを設定することにとは、なにゆうのですか 各罫線などの装飾はすべてCSSセル設定しますが回答内容を教えて下さい >表組みがこんなものなのかも tableタグを使用しない場合、no2さんの回答が指摘内容と正しい思います 実際私もtableタグを使用しない場合、使用しています(てにきで使用しています)

  • k0021
  • ベストアンサー率26% (32/120)
回答No.3

私も使用していますが問題なく表示しています 使用例 <table class="bc_c> <col span="1" class="w7"><col span="4" class="w2"><col span="1" class="w4"><col span="6" class="w2"><col span="1" class="w4"><tbody> <td class="dd1 f2" colspan="6"> </td> <td class="dd1 f2" colspan="3">(前回丑1)</td> .bc_c {border-collapse:collapse;} .w2 {width:36px;vertical-align:top;} .w4 {width:72px;vertical-align:top;} .w7 {width:126px;vertical-align:top;} .dd1 {border-bottom:solid black 1px;padding:0 8px 0;} .f2 {font:14px/120% serif,Times;} 17pxで指定しています maxの場合は、文字数x17px です ieとmaxを同一に表示する場合osによりCSSを切り替えて下さい

noname#137843
質問者

お礼

ご回答ありがとうございます。 このcolタグというものを私は使ったことがなく、 書籍や雑誌などでも今まで見たことがありません。 (あるかも知れませんが、記憶にありません) そのため、この方法がどの程度有効なのかすぐには分からないのですが、 やはり一つ一つのセルにclassを設定することに変わりはなく、 後々のメンテを考えると使いづらいというのが実際のところです。 そもそもHTMLでの表組みがこんなものなのかも知れませんね……。 せっかくご提案いただいたのに申し訳ありません。

noname#56882
noname#56882
回答No.2

#1です。 簡単な例で作成してみましたところ、同様の事象が再現されました。 やはりCSSでwidthをひとつひとつ指定しないといけないようです。 (IEでは崩れてしまいましたが、Firefoxでは崩れなかったです) 下記のように指定すると崩れることはないようです。 CSS記述例 .box1{ width: 100px; background: #cccccc;/*色はわかりやすいようにつけてあります*/ padding: 0.5em; } .box2{ width: 300px; background: #ffff80;/*色はわかりやすいようにつけてあります*/ padding: 0.5em; } HTML記述例(テーブル部分のみ) <table border="0" cellpadding="0" cellspacing="0"> <tr> <td class="box1">テキスト</td> <td class="box1">テキスト</td> <td class="box1">テキスト</td> </tr> <tr> <td colspan="3" class="box2">テキスト</td> </tr> </table> 推測で申し訳ないのですか(専門家ではないので)IEの仕様なのかもしれません。

noname#137843
質問者

お礼

わざわざサンプルまで作っていただいてすみません……。 やはり一つずつ設定していくしかないんでしょうか。 そうなると、今後修正するときにはかなりの手間がかかりますし、 その分ミスも増えそうですから、 ひとまず「widthを0pxで上書き」で進めておきたいと思います。

noname#56882
noname#56882
回答No.1

念のためにCSSのテーブル部分とHTMLのテーブルタグ表記を書いていただけませんか? 普通にtableだけでcolspan="3"指定するとIEでもきちんと表示されているため CSS部分に何かあるように思われますので。 もっと詳しい方の回答があるかもしれませんが。

noname#137843
質問者

お礼

早速の回答、ありがとうございます。 ただ、ソースについてはなるべく控えたく思っています。 (業務で使用しているということもあり……) 投稿してからも色々と調べてみたのですが、 どうやらwidthを設定した場合にのみ発生する事象のようです。 CSSで設定したその他のプロパティを変更しても、結果には関係ありませんでした。 NymphLuna様の環境でwidthを設定しても、結合したセルの幅で表示されますでしょうか? widthを設定しなければ発生しないため、現在は結合したセル(th, td)にclassを設定し、widthを0pxに上書きすることで対応しています。 今のところうまくいっているようですが、やはり何か釈然としません。 将来的なトラブルを回避するためにも、引き続き回答をお待ちしています。

関連するQ&A

  • CSS、ブラウザの幅が狭まったときの表示

    CSS学習中です。 ブラウザの幅が狭まったときの表示について教えてください。 現在、CSSファイルで以下のように書いています。 【test.css】 #alpha, #beta, #gamma { position: relative;  display: inline;  float: left; } #alpha {  width: 300px;  background: #f00; } #beta {  width: 100px;  background: #0f0; } #gamma {  width: 100px;  background: #00f; } このCSSを使い、 <body>  <div id="alpha"> Alpha </div>  <div id="beta"> Beta </div>  <div id="gamma"> Gamma </div> </body> と表示させています。 ブラウザの表示幅が広いときは同じ行に  Alpha Beta Gamma と並ぶのですが、ブラウザの表示幅を狭めると、入りきらないGammaが下の行に表示されます。 そうではなく、入りきらない部分は表示されない(表示が欠ける)様にしたいのですが、どのようにすればよいのでしょうか? ブラウザはIE6を使用しています。

    • ベストアンサー
    • HTML
  • tableでcolspanを使うと次行以下のセルの幅が均等に?

    tableでcolspanを使うと、colspanで結合した行の次行以下のセルの幅が均等になってしまいます。 どうすれば、colspanで結合した行の次行以下のセルの幅が均等になるのを防げるでしょうか?IE6,IE7 意図的にスタイルシートは、使用しないでください。 例: <table width="300" border="1" cellspacing="1" cellpadding="5"> <tr> <td colspan="2" width="284" align="center"> タイトルセル </td> </tr> <tr align="left" valign="top"> <td width="100"> セル左 <td> <td width="171"> セル右 <td> </tr> <table> 上記の場合、本来ならば、左のセルの幅(100px)が右のセルの幅(171px)より狭いはずなのに、左のセルの幅と右のセルの幅が均等になっていしまいます。 下記コード部分を上記のコードから削除すると、本来の比率で左のセルと右のセルの幅が表示されます。 <tr> <td colspan="2" width="284" align="center"> タイトルセル </td> </tr> よろしくお願いします。

    • ベストアンサー
    • HTML
  • ウィンドウの大きさに左右されない、CSSを使ったセル幅の設定は??

    HPのトップ画面を作る際に、テーブルを入れ子にして使っています。 ---------------------------------- teble1 [ セル1 ] [*****] [*****] [*****] ---------------------------------- table2 [ セル2 ] [######] [######] [######] [######] [######] ----------------------------------/table2 ----------------------------------/table1 まず、テーブル1のセル1の幅をcssで設定しました。 しかし、テーブル2内のセル2の幅を設定するとセル1の幅が乱れ、 ウィンドウを横に広げるとセル1も延々横に伸びてしまいます。 セル1をメニューボタンとして使うために画像と組み合わせていますので、 幅を固定にしたいのです。 全体の幅は<width="100%">設定しています。 セル幅が狂わないようにするため、 それぞれの列の右端に幅を設定していないセルをおいています。 (苦肉の策だったのですが、テーブル1だけのときはそれでうまく見えていました。) 設定したセル幅のトータルはテーブル2のほうがはるかに大きいのですが、 右端にあまっているセルで調節はきかないのでしょうか? わかりにくい説明で申し訳ございません。 どうかご教授ください。よろしくお願いします。

    • ベストアンサー
    • HTML
  • テーブルのセルの幅

    質問1 今時のテーブルのセルの幅をしてする方法を教えてください タグ打ちできます。CSSできます ie7、8対応しているほうが望ましいです 質問2 colで設定する方法とthにcssで設定する方法どちらがいいのですか?

    • ベストアンサー
    • HTML
  • cssを使った枠線の表示について

    css初心者です。宜しくお願いします。 タグ打ちしたHTMLファイルとcssファイルがあります。 cssファイルに「.waku {BORDER-WIDTH:5px;BORDER-COLOR:#FFFFFF;BORDER-STYLE:SOLID}」と記述し、 HTMLに「<P CLASS=waku>適当な文字列</P>」としました。 この、「適当な文字列」の周りに5pxの白い枠線が表示されたところまではうまくいったのですが、画面の左右いっぱいまで枠線が延びています。 (1)文字列の幅に合わせて、自動的に枠の幅を変えるにはどうすればいいのでしょうか? (2)この枠の幅を「画面の50%」あるいは「500px」などと指定することは可能でしょうか? (3)文字列と枠線との間隔を調整することは可能でしょうか? 余談ですが、cssの記述の際、スペースを多様している例をよく見かけます。 冒頭での私の書き方でも正常に動作しているようですが、「.waku { BORDER-WIDTH : 5px ; BORDER-COLOR : #FFFFFF ; BORDER-STYLE : SOLID }」このように (4)各文字列や値の前後にスペースを入れる理由を教えてください。

  • CSSでの背景色設定とIE6.0での表示について

    お世話になります。 全くの初心者ですが、Golive7.0の体験版を使ってHP作りに挑戦しています。 過去ログで調べてもわからなかったので教えて下さい。 使用OS : Windows XP (1) HTMLで表示する文章を作り、CSSファイルで、divブロック(class=contents)内の背景や文字色などは設定できましたが、ページ全体のbodyに適用させる背景色は反映されません。   body { background-color: #E7FAEE; } HTMLソースの方に直接上記の設定を指定すると反映されました。 参考にしている入門書にはCSS内で記述するように書かれていますが、何か忘れていることなどがありますでしょうか? CSSファイルのリンク設定はちゃんと反映されています。 (2) divブロック(contents)を画面の真ん中に配置するよう、  .contents { text-align: center; width: 600px; margin:auto; } と設定しましたが、IE6.0では画面の左端に寄っています。 ネットスケープ7.1ではきちんと中央に表示されます。 入門書には、『HTMLソースに<div class="contents">を入れないとIE5.xでは幅が固定されません』とあり、そこも記述してあります。 サーバーに上げてもプレビューと同じく反映されていませんでした。 5.xバージョンではないのに反映されないのはなぜでしょうか? 以上、どうぞよろしくお願いします。

  • 【IE6】テーブルにcolspanが入ると幅指定がずれる?

    閲覧いただきありがとうございます。 <Html>にて、<table>を入れているのですが <colspan>すると幅指定がずれてしまいます。 タグ記述のミスなのか、仕様なのかはっきりと分からない為 質問させていただきます。 下記のようなテーブルを作っています。 【テーブル】 テーブル幅 500px 2行 5列:(各列100pxの5等分) 【列内容】 1行目 ├5列全て colspan 2行目 ├1列目:100px ├2-3列目:100+100=200px (colspan=2) ├4-5列目:100+100=200px (colspan=2) ここで、2-3列目に幅200pxに指定した <select>タグを入れると、意図しない幅になってしまいます。 意図している動きは 2-3列目の幅ぴったりに<select>が入ってほしいのですが 4-5列目の4列部分がえぐれてしまい、4-5列目が200pxではなく 100pxぐらいの描画になってしまいます。 そして<select>タグは2-3列目にぴったりと入らず、 後ろに100pxの空きがでてしまいます。 http://kikky.net/pc/css_bug020.html このサイトではIE6ではcolspanがあると幅指定がずれると なっていますが、同一の現象なのでしょうか? 示唆いただければ幸いです。 宜しくお願いします。 --------------記述html--------------- <html> <head> <title> ColSpanテスト </title> </head> <body> <table width="500" border="1" cellspacing="0" cellpadding="0" bordercolor="#000000" style="border-collapse: collapse;" > <colgroup> <col width="100" /> <col width="100" /> <col width="100" /> <col width="100" /> <col width="100" /> </colgroup> <!-- 1行目 --> <tr> <td colspan="5"> span5 </td> </tr> <!-- 2行目 --> <tr> <!-- 1列目 --> <td> </td> <!-- 2-3列目 --> <td nowrap colspan="2" > <select style="width:200px;" size="1" name="sl" id="sl"> <option value="99999">2列にしたい</option> </select> </td> <!-- 4-5列目 --> <td colspan="2" > 200pxなのに・・・ </td> </tr> </table> </body> </html>

  • CSSのbackground-imageが表示されません

    CSSのbackground-imageが表示されません 恐れ入ります。現在CSSを勉強しつつサイトを作成しているのですが 2カラムの枠組みにて containerボックスの中にsidewrapとmainwrapを配置し、 サイトを表示してみるとcontainerボックス中にて設定をしたbackground-imageが表示されません。 確認は以下のブラウザにて確認してみました。 ○background-image表示されない  ・firefox(最新ver)  ・IE8 ○background-imageが表示される  ・IE6 いろいろ試してみた所mainwrap中のfloat: rightをコメントアウトしたら IE8等でもbackground-imageが表示されるみたいなのですが・・・ 解決法などご存知の方がいらっしゃいましたらお教えいただけませんでしょうか。 CSSの設定は以下のようになってます。 #header{ width:800px; background-color:#ffffff; } #container{ width:800px; background-image: url(img/back.jpg); background-repeat: repeat-y; } #sidewrap { width: 190px; float: left; margin: 0px auto; text-align: left; } #mainwrap { width: 600px; float: right; text-align: left; } #footer{ clear:both; width:800px; text-align: center; border-top: 3px solid; border-bottom: 1px solid; } 以上 よろしくお願いします。

    • ベストアンサー
    • HTML
  • html { } CSS設定の解釈を教えて下さい

    お世話になります。 あるサイトのCSS設定が↓のようになっていました。 +------------------------------------------------------------------ html { margin: 0; padding: 0; min-width: 700px; } body { margin: 0; padding: 0; min-width: 800px; } +------------------------------------------------------------------ bodyの指定はわかるのですが、htmlにCSSをするのは 初耳です。また、min-widthの値が、bodyの同値より 少ないのですが、これは、どういった解釈になるのか、 教えて下さい。 よろしくお願いします。

    • ベストアンサー
    • HTML
  • IMGタグごとにCSSを設定する方法

    自分でGoogleやYahoo検索をしても見つけられなかったので、どなたかお教えください。 現在、HTML内に以下のようにIMGタグで画像添付しています。 -------- <img src="***" width="160" height="140" /><br /> <img src="***" width="32" height="30" /> <img src="***" width="32" height="30" /> <img src="***" width="32" height="30" /> -------- 最初に大きな画像を表示し、その下に並列するかたちで小さいサムネイルを並べています。 普段はCSSでレイアウトをして、画像それぞれにstyle属性やclass、ID属性などを付けています。それが、今回は上述のHTMLを外部サイトのPHPから出力しているもので、一切触れない(編集できない)状態にあります。 このような状態の場合でも、画像それぞれにCSSを設定することは可能なのでしょうか?最低限の希望は、大きい画像(160px*140px)をひとかたまり、サムネイル画像(32px*30px)をひとかたまりとして、それぞれのかたまりにCSSを設定できれば良いと思っています。 可能であればHTML+JavaScript+CSSで実現できる方法を希望します。 どなたかお教えください。よろしくお願いいたします。

専門家に質問してみよう