
ie7でうまく表示しているソースで、先日ie8にアップグレードし表示を確認しましたら、セルの幅の設定がうまくいかず、すべてのセルの幅が同じ長さ(省略値?)になっていました。
いろいろと確認して行くと、どうもcol要素のcssのwidthが無視されているようでした。
cssはまだ勉強し始めたばかりで詳しくありません。cell11,cell12の中にwidthを指定すればwidthは有効のようです。
どなたか、どこを修正すれば直るか教えてください。ソースは以下の通りです。
-------------------------------------------
htmlのソース
<table class="table2">
<col class="col41">
<col class="col42">
<col class="col51">
<col class="col52">
<col class="col41">
<col class="col42">
<col class="col51">
<col class="col52">
<tr>
<th class="cell12" colspan="2" align="center" nowrap>3月</th>
<th class="cell12" colspan="2" align="center" nowrap>4月</th>
<th class="cell12" colspan="2" align="center" nowrap>5月</th>
<th class="cell12" colspan="2" align="center" nowrap>6月</th>
</tr>
<tr>
<th class="cell11" nowrap>点数</th>
<th class="cell11" nowrap>金額</th>
<th class="cell11" nowrap>点数</th>
<th class="cell11" nowrap>金額</th>
<th class="cell11" nowrap>点数</th>
<th class="cell11" nowrap>金額</th>
<th class="cell11" nowrap>点数</th>
<th class="cell11" nowrap>金額</th>
</tr>
<tr>
<td class="cell12" nowrap>100</td>
<td class="cell12" nowrap>200,000</td>
<td class="cell12" nowrap>50</td>
<td class="cell12" nowrap>100,000</td>
<td class="cell12" nowrap></td>
<td class="cell12" nowrap></td>
<td class="cell12" nowrap></td>
<td class="cell12" nowrap></td>
</tr>
</table>
-----------------------------------------
cssのソース
.table2 {
border : 0px solid black ;
border-collapse: collapse ;
margin: 0px;
padding: 0px;
}
.col41 { /* 緑 各月 点数 */
text-align: right;
width: 50px;
background-color: #e0ffff ;
}
.col42 { /* 緑 各月 金額 */
text-align: right;
width: 80px;
background-color: #e0ffff ;
}
.col51 { /* 白 各月 点数 */
text-align: right;
width: 50px;
background-color: #ffffff ;
}
.col52 { /* 白 各月 金額 */
text-align: right;
width: 80px;
background-color: #ffffff ;
}
.cell11 {
border-right : 1px solid silver ;
border-bottom: 1px solid black ;
}
.cell12 {
border-right : 1px solid silver ;
border-bottom: 1px solid silver ;
}
よろしくお願いします。
No.1ベストアンサー
- 回答日時:
私の環境で色々と試してみたところ問題を理解できました。
(最初、早とちりして変な回答をしてしまうところでした(汗)
今回の問題の原因は以下にあります。
1、IE7からIE8にかけて変化した部分
2、col要素(colgroup要素)へのwidthスタイル指定の意味
まずは後者から解説します。
本来、col要素へのwidthスタイル指定の意味は、
『列の最小幅の指定』であります。
『列の厳密な幅の指定』ではありません。(情報元:Web標準の教科書)
すなわち、
・セルの内容物がwidthで指定した幅を超えている
・テーブル全体の幅がブラウザ表示域に比べて小さい(つまりテーブルが横に広がるだけのスペースが残っている)
この2つの条件が同時に満たされた時、列の幅はcol要素のwidthで指定した幅よりも大きくなります。
ただし、これはcssの仕様書に沿ってきちんと作られたWebブラウザでの場合です。
IEではcssの仕様を守っていない箇所がいくつもあります。cssを勉強し始めたばかりだと言えど、もしかしたらご存知ではないでしょうか。
ここで前者の問題点が関係してきます。
IE7ではcol要素にwidthを指定した場合、きちんと厳密に列がその幅になりました(私の環境でも確認しました)。
しかし、IE8では内容物に対し柔軟に幅が変わるようになっています(つまり上に挙げたcssの仕様に即した挙動をしています)。
すなわち、IE7からIE8にかけて、どちらかと言えばcssの仕様に従うようにソフトウェアが改善されたということになります。
以上を踏まえて問題の核心である『全ての列が同じ幅になる』点を考察しますと、
恐らく、
・質問内容に載っていない部分のcssにより、セル内の文字の横幅が80px以上になっていて、IE8では全ての列の幅が最小幅(50px,80px)に収まらず、80px以上になっている
のではないかと思われます。
修正手段としては、やはり一つ一つのセルにクラス指定をするほかないかと考えます。
table要素のスタイル指定に関しましては、今回の問題のようににっちもさっちもいかない場合があり、大変に難しいです。
特に幅を綺麗に指定したいのに面倒くさい方法しかないというのは、cssの問題の一つだと考えます。
このあたりの問題はHTML5で解決されていると良いのですが……
また、col要素について記述されたサイトを参考サイトとして挙げておきます。サイトで言われているとおり、col要素は子要素を持たないゆえの制限が幾つかあります。
参考URL:http://blog.btmup.com/xhtml/col-colgroup-css.html
詳しい解説ありがとうございました。やはりセル1つ1つについてclassを設定するしかないのですね。
セル幅に関しては大きな幅を指定しても表示は変わらず、参考URL内で解説してあるように、「colでは、width,backgroud-*のみ有効」というようには行かなかった(私の解釈が悪い?)のです。
ただ、この参考URLではcol,colgroupについての解説しっかりしてありよくわかりました。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- HTML・CSS テーブルタグのセルの幅の一部だけを指定 1 2023/03/12 12:02
- HTML・CSS CSSがなぜかfont-sizeだけ効かない...記述がまちがっているんでしょうか 5 2022/04/09 17:52
- Visual Basic(VBA) Selenium.ChromeDriverの使い方について 7 2022/09/22 06:43
- JavaScript jQueryで同じクラス名のものを別物として扱いたい 1 2022/06/17 14:14
- HTML・CSS ヘッダーの画像にメインエリアがかぶってしまいます 1 2022/11/28 14:06
- JavaScript jQueryでのドラッグアンドドロップについて 1 2022/07/30 09:10
- JavaScript vertical sliderをautoplayしたい 2 2022/08/25 14:47
- JavaScript htmlとcssで分数を表示後、分数の右側に文書を書きたい 1 2022/04/28 10:09
- HTML・CSS CSSが効かずどのように指定すれば良いか分からないのでアドバイスお願い致します 2 2023/06/07 12:25
- PHP style.cssのjQuery条件付きcssが機能しない 4 2022/07/17 18:27
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
cssでコンテンツと背景の間に影...
-
メールフォームについて質問です。
-
テーブルの一部分のセルだけに...
-
htmlのボタンを左寄席にしたい
-
IEとFirefoxでリンクの「hover...
-
html5の表の行をくっつけたい。
-
【IE】表示が全てセルの指定に...
-
インラインフレーム内へのリンク
-
tableの内側の線を表示したい
-
tableタグとformタグの組み合わせ
-
画像拡大で不具合発生
-
テーブル内の画像を上寄りにしたい
-
CSSを使ったformの組み方
-
テーブルの作成で
-
携帯サイトの表示について
-
テーブル内のスクロール
-
cssでテーブルで細い線 その2
-
tableを使用した際の余白
-
固定ヘッダーがある時のページ...
-
タグの記述について教えて下さい!
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
tableタグとformタグの組み合わせ
-
html でのテキスト結合について
-
テーブルの一部分のセルだけに...
-
同じクラス名はつけないほうが...
-
cssで、テーブルのtdの中の文字...
-
htmlのボタンを左寄席にしたい
-
td要素内のdiv要素をセンタリン...
-
XHTMLに関する質問 順序が逆に...
-
Tableタグ内のspan styleが適応...
-
divで囲んだ文字が消える
-
<img>タグにCSSのclass設定可能?
-
vbscriptで時計を作りたい
-
Firefoxを使ってるのですがズー...
-
tableがbodyにはみ出る。。
-
Visual Studio で CLR 開発でデ...
-
Dreamweaver デザインビューの...
-
リストの記号を括弧付きの文字...
-
表とリスト(ulとtable)の違い...
-
Tableタグで作成した表の縮小
-
デーブルが延びる
おすすめ情報