コーディングの基礎 cssのリセット

コーディングの基礎 cssのリセット

2024年10月24日 /最終更新:2024年10月24日

ブレウザ独自のcssのせいで起こってしまうレイアウト崩れ。cssリセットでイアウト崩れを予防しましょう。

コーディングの基礎 cssのリセット

cssリセット

レイアウト崩れはブラウザ独自のcssが原因であることが多い。

以前、ブラウザによるhtmlとcssの解釈の違いがあり、
それが原因でレイアウト崩れを起こしたり、使えない機能があると話しました。

これは、Google ChromeやEdgeなどのブラウザが、独自のcss(以下:ブラウザcss)をすでにブラウザに設定しており、
自分が書いたcssの設定が、そのブラウザcssに影響を受けてしまうことが原因です。

そのため制作時に自分がテストしていたブラウザ以外では期待通りの表示がされず、
レイアウトが崩れたり、動画が再生されなかったり、アニメーションが動かなかったりしてしまうんです。

レイアウト崩れの代表的な例・・・marginとpaddingの余白

代表的なものを例に挙げます。

コーディング経験の浅いデザイナーがだいたい最初に困るのが、
要素の内側と外側の幅、そして外枠線のサイズ計算の解釈の違いです。

cssで頻繁に使うプロパティで、

「指定要素と周りの要素との間の距離であるmargin」、
「指定要素の内側の余白の距離であるpadding」、
「指定要素の外側の枠線であるborder

というものがあります。
「h1」タグを使って説明します。

htmlファイル

<html>
  <h1>ウェブデザインA</h1>
</html>

次にcssで以下を記述し指定を行います。

cssファイル

h1 {
  width: 200px; /* width・・・ボックスの幅 */
  height: 200px; /* height・・・ボックスの高さ */
  margin: 20px; /* margin・・・ボックスから周りの要素までの上下左右距離 */
  padding: 20px; /* padding・・・ボックスの内側の上下左右の余白の距離 */
  background-color: yellow; /* background-color・・・ボックスの背景色 */
  border: 1px solid red; /* border・・・ボックスの外枠線の太さや形状や色 */
}

このように記述すると、Google ChromeやFirefox、Safariなどのモダンブラウザ(Web標準の技術を採用したブラウザ)ではこう表示されます。

lesson07_1

逆にレガシーブラウザ(Web標準の技術をサポートしきれていないブラウザ)で見るとこう表示されます。

lesson07_2

Internet Explorerだと指定した200pxにpaddingとborderの値が足されてしまい、
ボックスのサイズが大きくなってしまっています。

lesson07_3

これにより、実際にcssで指定したサイズよりも幅や高さが大きくなり、レイアウトが崩れてしまうことがあります。代表的なもので「カラム落ち」というものがあります。下の画像をみてください。

lesson07_4

2カラム(横並び2列)の標準的なレイアウトを行った場合に、モダンブラウザで見ると横並びしてくれるのに、
レガシーブラウザで見ると右側のカラムが下に落ちてる!ということになってしまったりします・・・ダルい。

cssを使ってブラウザ独自のcssをリセットする。

そこで、「それならブラウザのcssで設定されている内容を初期化(リセット)してしまおう」というのがcssリセットの考え方。
ブラウザ独自のcss上書き無効化してリセットすることで、
レイアウト崩れなどのブラウザ間の表示の違いを最小限にとどめるのが狙いです。

あらかじめ最初の段階でリセットしておくことで表示の崩れは最小限にとどめることができます。

また、リセットしてもなお表示崩れを起こしていたとしても、
リセットされていない箇所に崩れの原因があるはずなので、
原因を見つけ出しやすく修正作業も簡単です。

結論:授業で使用しているcssリセット

前置きが長くなりましたが、授業で使用しているcssリセットのコードは以下です。

See the Pen reset.css by 脇坂基徳 (@rvyolqet-the-vuer) on CodePen.