html/CSSでBOX内にBOXを作り、その両方に異なる<h2>タグを設定したい。
具体的には、
--------------------------------------------
#box1{・・・・・・}
#box1 h2{
font-size:14px;
border: solid red 1px;
width: 800px;
}
#box2{・・・・・・}
#box2 h2{
font-size:10px;
border: solid blue 1px;
width: 400px;
}
--------------------------------------------
というCSSがあり、html上ではbox1の中にbox2が入っています。
--------------------------------------------
<div class="box1">
<h2>あああああ</h2>
<div class="box2">
<h2>いいいいい</h2>
</div>
</div>
--------------------------------------------
このとき、CSSの「box1のh2タグの設定」がbox2内のh2タグにおいても反映されてしまいます。
box2内では「box2のh2タグの設定」を反映させたいのですが、どうすればできるのか
教えていただけますでしょうか。
よろしくお願いします。
No.1ベストアンサー
- 回答日時:
リンク先でもないのになぜ無駄なidを指定するのかわかりません。
classはともかく、スタイルシートのためだけのidなんて上書きもしにくいし、あとあとメンテナンスで泣くことになるよ。
詳細度や子孫、兄弟関係をうまく使おう。
下記は子孫セレクタをつかって二つのdivを見分けている。pについては隣接セレクタを使ってる。
idはむろん、classも一切使ってない。
参考書がまずいみたいですね。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html lang="ja">
<head>
<title>Untitled</title>
<meta http-equiv="Content-Style-Type" content="text/css">
<style type="text/css">
<!--
p{text-indent:1em;margin:0ex 1em;line-height:3ex}
h2{ font-size:2em; border-style:solid;border-width:0px 0px 2px 0px;}
body div h2{color:red;border-color:red;}
body div div h2{color:blue;border-color:blue;}
p+p{background-color:rgb(200,200,200);}
-->
</style>
</head>
<body>
<div>
<h2>あああああ</h2>
<p>ここはbody直下の汎用ブロック<p>
<p>ここは二つ目以降の段落<p>
<p>ここは二つ目以降の段落<p>
<div>
<h2>いいいいい</h2>
<p>ここはdiv内のdiv内のブロック</p>
</div>
</div>
</body>
なるほど。
セレクタの親子関係がうまくいってなかったんですね。
てか、body div div h2{}というふうな使い方は初めて知りました。
ありがとうございます。
No.3
- 回答日時:
>body div div h2{}というふうな使い方は初めて知りました。
これは子孫セレクタと言って、この場合は、単純セレクタ(要素名)の配下にある単純セレクタを次々に指定しています。単純セレクタは詳細度が1ですから、この指定では詳細度が4となり、body div h2{}の詳細度が3ですから、それを上書きします。
これはCSSの最も重要な部分と言ってもよいでしょう。カスケーディングとは継承という意味。もし、#を使って個別に指定していたら、ちょっと規模の大きいHTMLだと膨大なスタイルを書き連ねばなりません。#はひとつあたり詳細度100ですからね。
もちろんCSSだけでなく、HTMLも複雑・煩雑になってしまいます。
セレクタ 詳細度はプロパティを覚えるより先にきちんと覚えておかなきゃ・・・
セレクタ ( http://www.swlab.it.okayama-u.ac.jp/man/rec-css2 … )
値の割り当て、カスケード処理、継承 ( http://www.swlab.it.okayama-u.ac.jp/man/rec-css2 … )
は仕様書( http://www.swlab.it.okayama-u.ac.jp/man/rec-css2 … )でも、プロパティより先に説明してある。
No.2
- 回答日時:
それが、反映されにのは、
CSS側が # ←これはID指定なのに、
HTML側で class になっているから何も効かないはず。
# = ID . = class (ここだけの単なるミスかな?)
-----------------------------------
但し、それを修正しても個別に反映こそするが、
box1でbox2に無い要素を指定したらbox2にも反映される。
例えば、CSSで #box1 h2{color:red;} を入れたら両方反映してしまう。
新旧のブラウザで、これを回避するには、
h2に個別の id や class を振る。
知っていると思いますが、
例
<h2 class="box1h2">box1のh2</h2>
<h2 class="box2h2">box2のh2</h2>
h2{ h2共通の指定 }
.box1h2{ box1のh2の個別の指定 }
.box2h2{ box2のh2の個別の指定 }
--------------------------
NO.1さんの方法は綺麗でお手本となりますが、
初心者が使うと修正が大変なので、最初は個別指定が良いと思います。
最後に、
共通するCSSは共通させて、
纏めれる要素は纏めて最適化する。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- HTML・CSS CSS のみのタブ切り替えについて 1 2023/01/11 16:47
- HTML・CSS <!DOCTYPE html> <html> <head> <meta charset="utf-8 2 2023/01/05 01:04
- JavaScript 【Javascript】ボタンクリックで2つのclassに対し、それぞれ別のclassを追加したい 1 2022/07/29 20:52
- HTML・CSS CSSがなぜかfont-sizeだけ効かない...記述がまちがっているんでしょうか 5 2022/04/09 17:52
- HTML・CSS アコーディオンメニューが思うように動作しません。 1 2023/08/20 16:48
- HTML・CSS スクロールすると追従する画像のコードを書いているのですが、追従する画像の大きさの調節が上手くいきませ 2 2022/04/18 12:52
- HTML・CSS HTML、cssのatomつぅーやつで 課題Ex1ってやつを表示させたいのですが、 私は課題Ex1が 2 2022/12/15 16:56
- HTML・CSS ヘッダーの画像にメインエリアがかぶってしまいます 1 2022/11/28 14:06
- JavaScript jQueryでのドラッグアンドドロップについて 1 2022/07/07 21:04
- JavaScript vertical sliderをautoplayしたい 2 2022/08/25 14:47
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
liリストタグの背景色に色がつ...
-
個別にリンクの色を変える方法
-
一部のリンクの下線を消す
-
サイトにjQueryが使用されてい...
-
CSSでid名やclass名に「_」や「...
-
最近、HTMLのヘッダーをIDで定...
-
外部css定義したclassをht...
-
idの中のid指定
-
ページの左右の余白(枠外)に...
-
<span>で2重にかけているものを...
-
webサイト印刷時に特定の画像を...
-
リンク文字の 一部だけ色を変...
-
印刷曜CSSがどこかおかしい・・...
-
FC2掲示板をトピック一覧表示型...
-
htmlの文字が縦書きになる
-
「諸要素」とはどういう意味で...
-
中点「・」の改行について
-
番号付きリスト(<Ol><Li>・・...
-
画像の横に文字をうまく配置で...
-
htmlのolやulなどlistにtitleや...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
個別にリンクの色を変える方法
-
htmlのid属性って必要なの?
-
最近、HTMLのヘッダーをIDで定...
-
HTML要素のid/class名の長さに...
-
CSSに同じclass名がいっぱい‥。...
-
liリストタグの背景色に色がつ...
-
CSSのクラス名・ID名の指定でワ...
-
サイトにjQueryが使用されてい...
-
ページの左右の余白(枠外)に...
-
CSS, リンクの色を一部変えるに...
-
透過背景を解除するにはどうす...
-
<span>で2重にかけているものを...
-
idの中のid指定
-
display:table-cell内でこんな...
-
CSSが効かずどのように指定すれ...
-
スタイルシートで、id属性の中...
-
【VBA/HTML】IE画面内のページT...
-
brにクラスをつけてcssでdispla...
-
外部css定義したclassをht...
-
CSS内で使われる山括弧の意味が...
おすすめ情報