迷い人

日々勉強。勉強の先に何か見つかるといいなぁ

【回答】リセットCSSについて

問題

ブラウザによって異なるデフォルトのCSS、特にpaddingとmarginを打ち消すためにリセットCSSを導入しました。

 

すると元々文字の色が赤かったものが黒く変わってしまいました。

 

原因と対処策について教えて下さい。

 

前提:Ruby on Railshamlを使用

 

html.haml

%html %head 省略 %body .content 文字を赤くする

 

testscss.scss

html { color: red; } .content { padding: 50px; }

 

application.scss

@import "testscss"; @import "reset";

 

表示結果

f:id:oyaoya1123:20191209022830p:plain

 

回答

リセットCSSを読み込んでから、自作のCSSを読み込ませるようにする。

 

application.scss

@import "reset"; // まずリセットCSSを読み込ませる
@import "testscss";

 

 

理由はCSSは後から記述した内容で上書きされるからです。

 

 

今回の例で言えば、自作のCSSでは以下のような記述しています。

html {
  color: red;
}

 

一方リセットCSSでは以下のような記述があります。

html {
  color: black;
  background: white;
}

 

つまり、自作CSS→リセットCSSの順番でCSSを適用すると「文字の色を赤くする」→「文字の色を黒くする」となってしまうわけです。

 

リセットCSSの適用する順番には気をつけましょう。

 

少し補足

今回は自作CSSでpaddingを設定していますが、こちらはリセットCSSで上書きされませんでした。

 

理由はcontentクラスを指定しているからです。

 

クラスを指定せずに自作CSSでhtmlにpaddingを設定しているとこちらも上書きされてしまいまう。