• 締切済み

子<DIV>で定義したのに、親<DIV>の定義が優先表示

CSS の 子<DIV>で定義したのに、親<DIV>の定義が優先表示されてしまう。 CSSファイルで #oya {font-size: 1em;} .kodomo {font-size: 20pt;} と定義。 HTMLファイルで <body> <div id="oya"> AAAAA <div class="kodomo"> BBBBB </div> </div> </body> としても、AAAAA と BBBBB は同じ文字サイズです。 BBBBBは、#kodomo 定義の文字サイズで表示したいのですが、 どうすればよいですか?

みんなの回答

  • ORUKA1951
  • ベストアンサー率45% (5062/11036)
回答No.3

 これは指定どおりに表示できますが、場合に寄ったら指定できない場合があります。  ご利用のCSSのマニュアルには詳細度の記述がないのではないかと思います。具体的に言うと、この子供要素のdivは、スタイルシートのためだけのclassだと思いますが、その場合はclass名自体不要なのです。  詳細度の説明がないCSSのマニュアルなんて、無意味です。  CSSでの#は一意セレクタ、.はクラスセレクタですから、前者は詳細度が100,後者は詳細度が10ですから、たとえば  <div class="Note" id="Important"> というHTMLに対して、  .Note{}の指定と、#Important{}の指定では、後者が適用されるということです。  提示されたHTMLでも、CSSで div#oya {font-size: 1em;} div#oya div.kodomo {font-size: 20pt;} と指定していれば、上の詳細度は 101,下の詳細度は 112となりますから、どのようにスタイルシートを置こうと、必ず子要素の指定は適用されます。  言い換えると、HTMLは <div id="oya">  <div>   <p>文章</p>  </div> </div> という記述で済ませて、CSSを div#oya {font-size: 1em;} /* 詳細度101 */ div#oya div {font-size: 20pt;} /* 詳細度 102 */ で、適用されるわけです。  よく使う技法で、初心者の方のページを見ていると、やったらめったらclassやらidやら使われているページを見かけますが、次のようなシンプルなHTMLであっても、CSSでデザインできるということです。 <body>  <h1>見出し</h1>  <div class="content">   <h2>見出し(レベル2)</h2>   <p>本文</p>   <div id="siteMap">    <h2>見出し(レベル2)</h2>    <p>・・・<strong>強調文字</strong>・・</p>    <p>文章</p>   </div>   <div id="footNote">    <h2>見出し(レベル2)</h2>    <p>・・・<strong>強調文字</strong>・・</p>    <p>文章</p>   </div>  </div> </body>  このような場合でも、  body div.content{} /*内容すべてに適用 */  body div.content div#siteMap strong{}  body div.content div#footNote strong{}  strong{font-dize:1.2em;}  div strong{} ・・・これですべて個別に指定できる。絶対後々のメンテナンスも含めて簡単になるはずでしょ。もちろん省略して  .content{} /*内容すべてに適用 */  #siteMap strong{}  .content #footNote strong{}  strong{font-dize:1.2em;} としても良いです。私は要素名は省略しないようにしてます。先でCSSの記述を追加したときに、想定外のところに適用されないために・・  div strong{}

KPY
質問者

お礼

ORUKA1951さん 詳しい、ご説明ありがとうございました。 詳細度に対する対応が、まずかったのかな?と薄々 思っていましたが、なかなか分りやすい説明ページを みつけることができずにいました。 ORUKA1951さんの説明は、ベストです。 これからも参照させて貰います。

  • kirin_55
  • ベストアンサー率16% (1/6)
回答No.2

下記を参考にして1emが何ptにあたるのか調べてみました。 16px=12pt=1em となります。 > AAAAA と BBBBB は同じ文字サイズ 指定する文字サイズが間違っているのではないかと思います。 px > em へ変換 http://riddle.pl/emcalc/ pt,pxについて http://www.geocities.jp/gakaibon/tips/others/pt2px.html

  • askaaska
  • ベストアンサー率35% (1455/4149)
回答No.1

<html> <head> <style> #oya {font-size: 1em;} .kodomo {font-size: 20pt;} </style> </head> <body> <div id="oya"> AAAAA <div class="kodomo"> BBBBB </div> </div> </body> </html> ちゃんと表示されたわよ。 質問に記述していない 何かもっと別のところに原因があるんじゃない?

KPY
質問者

お礼

CSSファイルを別にしたときに、間違った記述を していたようです。 ありがとうございました。

関連するQ&A