• ベストアンサー

スタイルシート

スタイルシートでtable全体のスタイルを指定した場合 1つのtableだけインラインで指定しても効果がありません。 たとえば 全体に枠をつけるうようになっても 1個所だけ <table border="0"> にしても枠が付きます。 こうい場合どうしたらよいのでしょうか? tableの指定をなくし、個別で最初から対処すれば よかったのですが、膨大な量でいまさら個別に classを 付けるのは面倒なので。

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

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

コメントを読んで気がついたので ≫TABLE,TD,TR { background-color: #ffffff; border-collapse: collapse; margin-left: 30px; font-size: 14px; border: solid 1px #666699; } tableには、border-collapse: collapse; はありません。tr,tdにはmargin-left: 30px; はありまん。  無視するように決まってはいますが 【引用】____________ここから 利用者エージェントは,妥当でない特性名又は妥当でない値をもつ宣言を無視しなければならない。すべてのCSS2の特性は,それが受け入れる値に対して,固有の構文上の制限及び意味上の制限をもつ。  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ここまで[CSS2 syntax and basic data types( http://www.y-adagio.com/public/standards/tr_css2/syndata.html#declaration )]より TABLE{background-color: #ffffff; border-collapse: collapse; margin-left: 30px; font-size: 14px; border: solid 1px #666699; } TD,TR {border: solid 1px #666699; } と分けて書く癖をつけましょう。  

kurobon619
質問者

お礼

ORUKA1951さん わかりました。ありがとうございます。

その他の回答 (2)

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

 カスケーディングスタイルシート(CSS)には、文字通りカスケードしますから、その優先度を規定する詳細度があります。  <table border="0">の詳細度は、 【引用】____________ここから 6.4.4 非CSSの表示上ヒントの優先 UAは,スタイルシート以外の他のソースからの表示上のヒントを優先することを選択 してもよい。例えば,HTMLのFONT要素又は"align"属性である。 その場合,非CSSの表示上のヒントは,対応する固有性が0に等しいCSS規則に変換され なければならない。規則は,文書作成者のスタイルシートの冒頭に あると仮定され,連続するスタイルシート規則によって上書きされてもよい。  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ここまで[Assigning property values, Cascading, and Inheritance( http://www.y-adagio.com/public/standards/tr_css2/cascade.html#q12 )]より 【引用】____________ここから 6.4.3 選択子の固有性の計算 選択子の固有性の計算を次に示す。 * 選択子のID属性の数を数える。 (= a) * 選択子のその他の属性及び擬似クラスの数を数える。(= b) * 選択子の要素名の数を数える。 (= c) * 擬似要素を無視する。 三つの数a-b-cを基数が大きい数値システムで連結することにより,固有性を提供する。  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ここまで[Assigning property values, Cascading, and Inheritance( http://www.y-adagio.com/public/standards/tr_css2/cascade.html#specificity )]より  よって、 <選択子の要素名の数を数える。> から、スタイルシートに table{} なら値は1. <table border="0">は0ですから・・・ <table style="border-width:0px;"> こうすればよい・・・・・・・・・・・・  それでダメにら、!important 規則もある。 まあ、HTMLを作成するときにきちんとsummary(書くべきとされている)を書いていたり、目的が違うtableは無意識にclassをつけるとかは必要。  今回も、body直下のtableと、<div class="note">内のtableという風に、親要素が違えば、スタイルシートをちょっと手を加えれば、継承の仕組みを使ってすんだことです。(body table{}詳細度(2)とbody div table{}詳細度(3))  なんで、マニュアルを読まずに聞くのかなぁ??? ★特に、この継承や優先順はCSSの【命】なので、プロパティより先に覚えなきゃ・・・。もし詳しく説明されてないなら、その参考書は失格だね。

noname#100277
noname#100277
回答No.1

該当するCSSと、適応されたのと適応されないtable要素全体の記述を示して下さい。 一応CSSは全て出した方が回答は確実なモノに成るでしょう。

kurobon619
質問者

補足

aidesさんありがとうございます。 TABLE,TD,TR { background-color: #ffffff; border-collapse: collapse; margin-left: 30px; font-size: 14px; border: solid 1px #666699; } 外部CSSに上のように記述してあります。 1か所のtableに <table border="0">としてborderを消そうとしましたが、外部CSSが優先されるようです。 最初に書きましたとおりtableの指定をなくし、個別で最初から対処すればよかったのですが、膨大な量でいまさら個別に classを 付けるのは大変な作業なので、何か良い方法はないでしょうか?

関連するQ&A