スマホサイトをつくっていたところ、横幅がぐらつくというあり得ない事態に・・・
どうやら内部の幅が100%を超えるときにこの現象が起きてしまうようです。
Contents
対策1 コンテンツの幅が100%を超えている部分がないか
100%の幅を超過しているような部分がないか調べましょう。
具体的には下記のような点を注意しましょう。
- 幅を指定しておらず内部のコンテンツに依存するようになっている。
- 画像のcssにwidthの指定がされていない
- 非改行の文字列などを使っている
対策その2 border-size:border-boxingを使う
上記のチェック点が問題なくとものちに説明しますが、CSSの仕様上幅が自然にくんでいて100%を超えてしまうことはおこりえます。
その場合、全称セレクタ(before,afterは個別に設定)にborder-size:border-boxigで解決します。
1 2 3 4 5 6 7 8 |
* { box-sizing: border-box; } *:before, *:after { box-sizing: border-box; /* 擬似要素にも同様のプロパティを指定 */ } |
border-size:border-boxigについて
通常cssでは幅をとるときpaddingとborderはwidthとは別物になります。
これをボックスモデルというようです。例えばある領域に関してwidth:100pxとやってpaddingやborderをとった場合、paddingやborderも含めるとその領域は100pxを超えてしまいます。
そこでpaddingやborderまで含めた領域をとるときにborder-size:border-boxingをつかうことで含めて100pxになります。
CSS3 の box-sizing が便利すぎる!! padding や border に依存しない width, height 指定