
<table>に指定したclass指定が、その下の<td>や<tr>に継承されずに困っています。
HTMLを
<table class="sample">
<tr>
<td>1-1</td>
<td>1-2</td>
</tr>
<tr>
<td>2-1</td>
<td>2-2</td>
</tr>
</table>
とし、
cssを
table, td {
border: 2px #2b2b2b solid;
}
とした場合、新しくhtmlとcssを作ると表自体と全セルに囲み線が作られます。
ですが、今運営しているHPに記述すると、<table>のborderのみしか表示されません。
試しに、<td>にclassを指定しなおしてみると、そのセルにも囲み線が表示されました。
全<td>にclassを指定すれば問題ないのかもしれませんが、それではあまりにも使い勝手が悪いため、何とかhtmlは<table>のみにclassを指定することで全セルに反映させたいと思っています。
考えられる原因としてはどのようなものがありますでしょうか…?
No.3ベストアンサー
- 回答日時:
>borderが継承されないと言う点は理解しているのですが、<table>に対して指定したclassがその下に位置する<td>に継承されないという点で困っております。
それは「継承」ではありません。
★それは、tdに指定したスタイルが適用されないという事です。
カスケード処理の順序( http://momdo.s35.xrea.com/web-html-test/spec/CSS … )
table.sample td{}
は、
・class属性の空白で仕切られた値リストの一つにsampleを持つtable要素の子孫であるtd要素という意味です。詳細度は[0 0 1 2]=12です。
これが適用されないと言う事は、
・より高い詳細度の指定がある。
一意セレクタ[0100]とか、スタイル属性[1000]
より詳細な記述がある。body div.section table td [0 0 1 4]、
・同じ詳細度で後述の指定がある。
・HTMLの文書構造かセレクタの記述に誤りがある。
の何れかでしょう。
Web開発されているなら、開発者ツールが豊富なfirefoxお使いだと思いますがそのアドオンにFirebug( https://addons.mozilla.jp/firefox/details/1843 )があります。それでスタイルが適用されない要素を選択すると、カスケードの順番に従ってスタイルが明示されます。
それを使うのが、最もよくわかる。
回答ありがとうございます。
まだ原因は究明できてないのですが、tableとtrを同時に指定する事で解決しましたので、とりあえず問題自体は解決したという事で、閉め切らせて頂きます。
今後、しっかり原因を究明していきたいと思います。
ありがとうございました。
No.2
- 回答日時:
borderは継承されないプロパティです。
継承されたらまずいです。[例]
<div class="sample">
<h1>見出し</h1>
<p>記事</p>
で、div.sample{border:solid 1px red;}と書いて継承されたら<h1>にも<p>にもborderが引かれてしまう。
'border-style'
値: <border-style>{1,4} | inherit
初期値: 個々のプロパティを参照
適用対象: すべての要素
継承: no ★継承されない
パーセンテージ: 利用不可
メディア: visual
算出値: 個々のプロパティを参照
⇒Box model - CSS 2.1 spec (ja)( http://momdo.s35.xrea.com/web-html-test/spec/CSS … )
table.sample{
border: solid 2px gray;
}
table.sample th,table.sample td{
border:1px gray solid;
}
と、borderは個別に指定します。
逆に言うと、上下左右のborderを変更した利することも簡単にできます。
cellpadding - HTML - 教えて!goo( http://oshiete.goo.ne.jp/qa/8788064.html )
の回答が参考になるでしょう。
★なお、tableの場合はsummary属性が必須ですのでそれを使うと
table[summary="コーヒーの種類"]{*************}
のように、属性セレクタで書くほうが楽です。
また、本文中の表をすべてしたら
div.section table{}
div.section table th,div.section td{}
とするなど
5 セレクタ( http://momdo.s35.xrea.com/web-html-test/spec/CSS … )
6 プロパティ値とカスケーディング、継承の割り当て( http://momdo.s35.xrea.com/web-html-test/spec/CSS … )
をしっかり活用しましょう。CSSの命ともいえる重要な部分ですから・・
この回答への補足
質問の記述内容に誤りがありました。ご迷惑をおかけしすみません。
CSSは、No1様が記述されているように、classを限定した表記の
table.sample td {
border: 2px #2b2b2b solid;
}
で記述した場合の話です。
borderが継承されないと言う点は理解しているのですが、<table>に対して指定したclassがその下に位置する<td>に継承されないという点で困っております。
新しく作り直したhtmlとcssでは問題なく継承されますので、何か原因があるのだろうとは思っているのですが…
No.1
- 回答日時:
今運営されているホームページには、質問者さんがcssの記述をしか箇所以外にtdのスタイルを指定している箇所があるのではないでしょうか。
また、tableにclassをつけているのであれば
table.sample td {
border: 2px #2b2b2b solid;
}
とすれば、sampleクラスのテーブル内のtdにスタイルが適用されます。
この回答への補足
質問の記述内容に誤りがありました。ご迷惑をおかけしすみません。
CSSは、No1様が記述されているように、classを限定した表記の
table.sample td {
border: 2px #2b2b2b solid;
}
で記述した場合の話です。
同じようにID指定で記述しているtdが一つあるのですが、そちらを削除してもclass指定が継承されませんでした。。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
テーブル内のセル間にスペース...
-
テーブルとテーブルの間隔について
-
<th>タグを使っても太字にしな...
-
TABLEのセルの中の文字を行単位...
-
tableでページを分割したときの...
-
CSSで特定のテーブルだけに...
-
ブラウザに表示される実際のウ...
-
同じ幅指定のつもりなのに、ブ...
-
HTML tableのセルにtextareaを...
-
テーブルタグ
-
textareaの外側の文字が下付き...
-
<table>のclass指定が継承されない
-
▲▲HTML・CSS TABLEから文字が...
-
html5のテーブル内でdivのタブ...
-
HTMLのテーブルをExcelにCopy&P...
-
枠の幅が次のようにすると
-
HTML の TABLE の大きさ
-
HTMLで<HR>以外で線を引く方法...
-
CSS スタイルを子要素の子要素...
-
cssで、1行2段のtableを記述す...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
TABLEのセルの中の文字を行単位...
-
CSSで特定のテーブルだけに...
-
テーブル内のセル間にスペース...
-
<th>タグを使っても太字にしな...
-
テーブルとテーブルの間隔について
-
HTML tableのセルにtextareaを...
-
同じ幅指定のつもりなのに、ブ...
-
ホームページのテキストを折り...
-
table表を横に並べる際の間隔指定
-
HTML5で、テーブル内tdタグの高...
-
画面幅に合わせてテーブルのカ...
-
<fieldset>タグについて
-
HTMLのテーブルをExcelにCopy&P...
-
html5のテーブル内でdivのタブ...
-
HTML フォントの指定
-
tableを縦に続けるとtable間の...
-
スタイルシートで左側だけ色を...
-
テーブルデータを折り返して表...
-
TR タグの表示・非表示を一括で...
-
テーブルからはみ出します
おすすめ情報