次のような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;
}
A 回答 (4件)
- 最新から表示
- 回答順に表示
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」にする
下に行くほど簡単かつ後の汎用性や互換性の高い方法となります。
hiro_gtさん返信ありがとうございます。
cssでは、h2のプロパティを受けた上でさらにh2 class="sample1"のプロパティを受けるということはよく分かりました。
また対応策も良く分かりました。ありがとうございます。
もし良ろしければ、後学のために教えていただきたいのですが、h2のプロパティを消去するということはできないのでしょうか?
h2 {
font-size: 100%;
margin-top: 0px;
margin-bottom: 0px;
:
:
}
みたいな感じで上書きしていくしか方法はないのでしょうか?
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でスタイルをかけましょう」ということですね。
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名をつけて指定しましょう。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- HTML・CSS 吹き出し 下記の吹き出しのスタイルシートについて 下記のスタイルシートは左側にアイコンがでる使用にな 1 2022/11/12 17:55
- HTML・CSS ヘッダーの画像にメインエリアがかぶってしまいます 1 2022/11/28 14:06
- HTML・CSS HTML & CSS 縦ボックス内の文字の左右センタリング 3 2023/03/25 04:23
- JavaScript jQueryでのドラッグアンドドロップについて 1 2022/07/30 09:10
- PHP style.cssのjQuery条件付きcssが機能しない 4 2022/07/17 18:27
- JavaScript スマフォではボタンを表示させたくない 2 2023/01/20 14:26
- HTML・CSS CSS のみのタブ切り替えについて 1 2023/01/11 16:47
- JavaScript 画面に表示したらアニメーションを開始したい 3 2023/01/13 15:38
- HTML・CSS CSSがなぜかfont-sizeだけ効かない...記述がまちがっているんでしょうか 5 2022/04/09 17:52
- JavaScript htmlとcssで分数を表示後、分数の右側に文書を書きたい 1 2022/04/28 10:09
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
htmlの文字が縦書きになる
-
CSSでボックスのheightが0になる
-
widthやheightの数値に単位(px...
-
css初心者 フレックスボックス...
-
CSSで3分割した背景画像を配置...
-
Media Queries 4 で 非推奨とな...
-
HTMLのiframeの入れ子について
-
中点「・」の改行について
-
div内に外部のurlを表示させたい
-
CSS上での計算を行うためのルー...
-
W3Cのソースコードの検証サービ...
-
画像リンクの下に文字を付けた...
-
border-style:solidで文字がずれる
-
テキストボックスの高さを可変...
-
CSSと<dl><dd>で間隔をあけて1...
-
<li>の黒い点を消したい。
-
【CSS】ヘッダーの高さが不明の...
-
CSSでborderの指定を解除する記...
-
CSSだけで、テーブルにスクロー...
-
divで囲まれたpaddingの指定を...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
htmlの文字が縦書きになる
-
widthやheightの数値に単位(px...
-
css初心者 フレックスボックス...
-
form input テキストを上下中央...
-
<div>と<div>の間の10px程の...
-
CSSがなぜかfont-sizeだけ効か...
-
divで囲まれたpaddingの指定を...
-
表示倍率を変えるとレイアウト...
-
画像イメージの上下左右、欲し...
-
CSS、width100%でもできる余白
-
cssで中央寄せ
-
CSS:animation開始位置の設定
-
スクロールボックスを中央に配...
-
CSSで背景画像を一番下にもって...
-
【CSS】ヘッダーの高さが不明の...
-
初心者html・CSS ウィンドウを...
-
footer を横幅いっぱいに広げる...
-
CSSで指定した背景画像にリンク...
-
div領域をウインドウサイズに合...
-
W3Cのソースコードの検証サービ...
おすすめ情報