cssの編集で、テーブルすべてに反映されてしまって困っています。
下記は書籍のサンプルを抜粋したものですが、
/*---------------------------
▼テーブル
-------------------------- */
table { background-color:#000033;}
th { background-color:#005890;
color:#ffffff;
}
td { background-color:#ffffff;
color:#333333;
}
/*---------------------------
▲テーブル
-------------------------- */
という設定にしたら、すべてのテーブルに反映されました。
このテーブルだけ、という風にしたいのですが、スタイルシート側を
どうしたらいいのでしょうか?
ちなみに反映したいhtmlファイルのテーブルのソースは下記の感じなのですが、
div とか postとかをtableの前に持っていけばいい?みたいなところまで
調べてわかっているのですが、まったくの初心者でなかなかうまくいきません。
<div class="post">
<table width="400" border="0" cellspacing="1">
・・・略・・・
</table>
</div>
No.4ベストアンサー
- 回答日時:
>下記は書籍のサンプルを抜粋したものですが、
その参考書にCSSの最も重要なCascadingについての説明がないのかな???
・・・本当に大事な部分ですからそれについて詳しい説明がないものはゴミ箱行き
スタイルシートはCascading(継承)されますが、その際にどのスタイルを適用するかは詳細度や優先順位に従います。
ユーザースタイルシート>要素内スタイルシート>HTMLヘッド内>外部スタイルシート
と詳細度
一意セレクタ(100),クラスセレクタ(10),要素セレクタ(1)
たとえばあるHTMLにおいて
外部スタイルシートなどで決められていても、HTML内の要素内に指定があれば、同じ詳細度であれば後者が優先されます。
たとえば、あるtable要素が、price-listクラスに所属する場合、そのクラスに所属するtableだけ文字を青くする場合
<table class="price-list">
なら
table.price-list{color:blue;}/* 詳細度 11ですね。*/
としますし、それが一意--idをもつものなら
<table id="price-list">
table#price-list{color:blue;}/* 詳細度 101ですね。*/
また、tableですからsummary属性を持つべきですから<
<table summary="price-listt">
でしたら
table[summary=price-list]{color:blue;}/* 詳細度 2ですね */
したがって、その前後に関わらず
table{color:black;} /* 詳細度1は上書きされます。*/
たとえば外部スタイルシートだけで、特定のtable要素のスタイルを変更したい場合に変わった例として
<html>
|-- <body>
| |--<table><!-- 1 -->
| |--<table><!-- 2 -->
| | |--<tr>
| | | |--<td>
| | | | |--<table><!-- 3 -->
| |--<table><!-- 4 -->
という樹構造である場合、しかも【一切のクラス指定がない】ばあいであっても、この4個のtableは別個のスタイルシートを適用できます。
table{ color:red;}
table + table{ color:blue;}
table>table{color:green:}
という方法もある。
スタイルシートのためにHTMLを書きかえるのではなく、HTMLがきちんと書けていたら、スタイルシート側で区別できるはずです。
たぶんその参考書にはその重要なことの説明がないのでは???
No.3
- 回答日時:
テーブル云々は一度忘れて、「特定のPタグの文字色を変更する」を考えてみると分かりやすいかもしれません。
CSSには全てのタグ、グループに属するタグ、特定のタグなどいろんな指定方法があります。望まれているのは答えそのものかもしれませんし、ここでその答えを書くのはとても簡単なことですが、初心者の方でクリアすべき最初の課題は、まず検索の方法を身につけることかもしれません。
それなりに調べられた結果、わからなかったということと思いますが、おそらく「検索結果の内容が難しかった」のではなく、「検索の方法が適切でなかった」ということが想像されます。
たとえば今回の場合だと「css id class」でもう一度検索されてはいかがでしょうか。どういったレベルでCSSを学ばれたいかは分かりませんが、「検索力を上げること」は、確実にスキルアップにつながるので、ぜひともおすすめします。
No.2
- 回答日時:
>div とか postとかをtableの前に持っていけばいい?みたいなところまで
>調べてわかっているのですが
は誤解です。それでもできないことはないですが、divはtableなどの適した要素がない場合につけるボックス要素です。tableにdivは過重包装です。また、postでなくてもtrb777でもなんでもいいので後から見ても分かるように、どういう意図でのclassなのか分かるようにつけてください。また、今は1つですが、classは何回でも使えますので、将来同じスタイルにしたい表が出てきたときhtml側に同じclass名をつければ、cssは増やす必要はなくなります。
-----
<div class="post">
<table width="400" border="0" cellspacing="1">
・・・略・・・
</table>
</div>
-----
の<div>は止めて、<table>にクラスをつけてください。
-----
<table class="post" width="400" border="0" cellspacing="1">
・・・略・・・
</table>
-----
htmlのclassに対応するのは、cssでは「.」ピリオドです。ですからclass="post"のついたテーブルは
table.post{}
と指定し、class="post"の子要素の指定であるtdやthは「の中の」という意味で半角スペースを.postにつけ
.post th{}
.post td{}
と指定します。つまり、
/*---------------------------
▼テーブル
-------------------------- */
table.post { background-color:#000033;}
.post th { background-color:#005890;
color:#ffffff;
}
.post td { background-color:#ffffff;
color:#333333;
}
/*---------------------------
▲テーブル
-------------------------- */
となります。
No.1
- 回答日時:
classというのが, まさにこのテーブルにだけ, という指示をするものです。
cssでdivなどの要素にclassを指定する場合,
html要素名とclass名を"."で連結します。
div.post {
....
}
のように。
すると, class="post"と指定されたdivにだけ, div.postのcssが適用されます。
次に,
div.post table {
...
}
と書くと, class="post"が指定されたdivの中のtableにだけ, 指定されたcssが適用されます。
そうすると, この場合, 一番簡単なのはcssをこうすることかと思います。
-------------------------------------------
div.post {}
div.post table { background-color:#000033;}
div.post th { background-color:#005890;
color:#ffffff;
}
div.post td { background-color:#ffffff;
color:#333333;
}
-------------------------------------------
こうすることで, postというclassのdivの中のtable, th, tdにだけ
cssが適用されるようになります。
もっと詳しいcssの文法等は書籍等におまかせします...
遅くなってすいません。
ありがとうございました!
そうそう、そういうイメージがあったんですが、
なかなかぴんときませんでした。
ようやく理解できました!
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- HTML・CSS cssが効かなくて困ってます 1 2023/01/01 23:57
- HTML・CSS html/cssで要素が出てこなくて困ってます 1 2022/12/31 16:59
- HTML・CSS テーブルタグのセルの幅の一部だけを指定 1 2023/03/12 12:02
- HTML・CSS img と p を縦中央に配置したいのですがうまくいきません。 2 2023/01/12 14:38
- CGI perlで書いたcgiでsqliteの使い方を教えてください 2 2023/05/08 21:29
- HTML・CSS <!DOCTYPE html> <html> <head> <meta charset="utf-8 2 2023/01/05 01:04
- HTML・CSS (Javascript)印刷するファイルに応じて印刷プレビュー画面で用紙を自動的に切り替えたい!! 2 2022/04/11 12:04
- HTML・CSS HTML & CSS 縦ボックス内の文字の左右センタリング 3 2023/03/25 04:23
- HTML・CSS 書籍を見つつサイト造りの練習をしているのですが、見た目が一致しません 2 2022/11/28 15:00
- HTML・CSS アコーディオンメニューが思うように動作しません。 1 2023/08/20 16:48
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
TABLEのセルの中の文字を行単位...
-
<th>タグを使っても太字にしな...
-
テーブルとテーブルの間隔について
-
HTML tableのセルにtextareaを...
-
HTML5で、テーブル内tdタグの高...
-
table表を横に並べる際の間隔指定
-
tableの位置がIEとその他ブラウ...
-
同じ幅指定のつもりなのに、ブ...
-
<table>のclass指定が継承されない
-
スタイルの無効化
-
HTMLのテーブルをExcelにCopy&P...
-
親要素のwidthは子要素のwidth...
-
table 幅固定で、端までいった...
-
tableタグの枠線について
-
パソコンで見るとレイアウトが...
-
テーブル内セルの大きさが途中...
-
html table の中のボーダーが二...
-
CSSで特定のテーブルだけに...
-
html でのテキスト結合について
-
tableタグとformタグの組み合わせ
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
テーブルとテーブルの間隔について
-
TABLEのセルの中の文字を行単位...
-
<th>タグを使っても太字にしな...
-
CSSで特定のテーブルだけに...
-
HTML5で、テーブル内tdタグの高...
-
同じ幅指定のつもりなのに、ブ...
-
table表を横に並べる際の間隔指定
-
テーブル内のセル間にスペース...
-
textareaの外側の文字が下付き...
-
HTML tableのセルにtextareaを...
-
テーブルデータを折り返して表...
-
tableの位置がIEとその他ブラウ...
-
<fieldset>タグについて
-
正規表現で「より前」と「より後」
-
スタイルシートで左側だけ色を...
-
tableのcellpadding="0" cellsp...
-
tableを縦に続けるとtable間の...
-
HTMLのテーブルをExcelにCopy&P...
-
html5のテーブル内でdivのタブ...
-
スタイルの無効化
おすすめ情報