• 締切済み

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; }

みんなの回答

  • goldfox
  • ベストアンサー率49% (123/249)
回答No.4

>h2のプロパティを消去するということはできないのでしょうか? 「消去したいプロパティ」を上書きする。 h2 { border-left: 5px solid #0086b9; } h2.sample1{ ←こちらでもleftを指定する border-left: none; } class名などを付けたほうがより優先して反映されます。 class="sample1"が付いている<h2>は「<h2>」だから「h2 {~で指定されたborder-left」が反映されているわけです。 >上書きしていくしか方法はないのでしょうか? 「すべてのセレクタに指定したいもの」を要素名だけのセレクタに指定し、 「一部のセレクタにのみ指定したいもの」をidやclass名をつけて指定しましょう。

noname#49614
noname#49614
回答No.3

#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でスタイルをかけましょう」ということですね。

noname#49614
noname#49614
回答No.2

<h2 class="sample">要素は「h2でありh2 class="sample1"」です。<h2>との区別はされていません。つまりこのcssでは、h2のプロパティを受けた上でさらにh2 class="sample1"のプロパティを受けるのは普通の挙動となります。 主な対策は以下の通り。 1:上の<h2>にもclassを設定する 2:どちらかの<h2>を変更する 3:cssのセレクタを「h2.sampla1」ではなく「.sample1」にする 下に行くほど簡単かつ後の汎用性や互換性の高い方法となります。

katana0514
質問者

お礼

hiro_gtさん返信ありがとうございます。 cssでは、h2のプロパティを受けた上でさらにh2 class="sample1"のプロパティを受けるということはよく分かりました。 また対応策も良く分かりました。ありがとうございます。 もし良ろしければ、後学のために教えていただきたいのですが、h2のプロパティを消去するということはできないのでしょうか? h2 { font-size: 100%; margin-top: 0px; margin-bottom: 0px; : : } みたいな感じで上書きしていくしか方法はないのでしょうか?

noname#49428
noname#49428
回答No.1

1つ目の見出しにクラス名を指定する。 <h2 class="sample">見出し2</h2> h2.sample { ...

関連するQ&A

専門家に質問してみよう