- 締切済み
Cssで
次のようなHTMLとCssを作成し、見出しを表示しようとしています。 1つ目の見出しと2つ目の見出しは全く違うものにしたいので、2つ目の見出しにはh2にクラス名を指定しています。 しかし2つ目の見出しは1つ目の見出しの属性を引き継いでいるようで、 border-left: 5px solid #0086b9;などは有効になり2つ目の見出しでも左側に線が表示されてしまいます。 1つ目のcssの情報を完全に消した後、2つ目の見出しを表示する方法をご教授下さい。 ▼HTML <h2>見出し2</h2> <h2 class="sample1">見出し2</h2> ■Css h2 { font-size: 145%; margin-top: 10px; margin-bottom: 10px; padding-left: 10px; border-left: 5px solid #0086b9; border-right: 1px solid #0086b9; border-top: 1px solid #0086b9; border-bottom: 1px solid #0086b9; line-height: 1.4; background-color:#F7F7EF; } h2.sample1{ border-right:solid 2px #808080; border-bottom:solid 2px #808080; background-color:#c0c0c0; padding-top:3px;padding-left:3px; width:300px; }
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- goldfox
- ベストアンサー率49% (123/249)
>h2のプロパティを消去するということはできないのでしょうか? 「消去したいプロパティ」を上書きする。 h2 { border-left: 5px solid #0086b9; } h2.sample1{ ←こちらでもleftを指定する border-left: none; } class名などを付けたほうがより優先して反映されます。 class="sample1"が付いている<h2>は「<h2>」だから「h2 {~で指定されたborder-left」が反映されているわけです。 >上書きしていくしか方法はないのでしょうか? 「すべてのセレクタに指定したいもの」を要素名だけのセレクタに指定し、 「一部のセレクタにのみ指定したいもの」をidやclass名をつけて指定しましょう。
#2です 消去や上書きというのが何を指すのかつかめなかったのですが、上書きについてたとえばh2をセレクタとしたスタイルの記述が2つあると h2 { text-align:center background:#0000ff; font-size:200%; } h2{ background:#ffffff; font-size:50%; border:solid 2px #000000; } すべてのh2について「テキスト中央寄せで背景は白、solidボーダー文字サイズ50%」となります。 一方にしかないプロパティはそのまま引き継がれ同じプロパティがあった場合より下にあるほうが優先されてしまうわけです。%は掛け算されたりもしません。 katana0514さんのやろうとしたようにcssを記述した場合、それが「すべての<h2>」に作用してしまいそこまでのスタイルが全て無意味となります。 要するにこれを回避するためにIDやクラスを設定するのだと思ってください。 強引にまとめると「不安だったらタグではなくクラスやIDでスタイルをかけましょう」ということですね。
<h2 class="sample">要素は「h2でありh2 class="sample1"」です。<h2>との区別はされていません。つまりこのcssでは、h2のプロパティを受けた上でさらにh2 class="sample1"のプロパティを受けるのは普通の挙動となります。 主な対策は以下の通り。 1:上の<h2>にもclassを設定する 2:どちらかの<h2>を変更する 3:cssのセレクタを「h2.sampla1」ではなく「.sample1」にする 下に行くほど簡単かつ後の汎用性や互換性の高い方法となります。
1つ目の見出しにクラス名を指定する。 <h2 class="sample">見出し2</h2> h2.sample { ...
お礼
hiro_gtさん返信ありがとうございます。 cssでは、h2のプロパティを受けた上でさらにh2 class="sample1"のプロパティを受けるということはよく分かりました。 また対応策も良く分かりました。ありがとうございます。 もし良ろしければ、後学のために教えていただきたいのですが、h2のプロパティを消去するということはできないのでしょうか? h2 { font-size: 100%; margin-top: 0px; margin-bottom: 0px; : : } みたいな感じで上書きしていくしか方法はないのでしょうか?