スマホサイトで要素が画面に収まらない問題
レスポンシブサイトを構築していると、スマホサイトで要素が画面に収まらないという問題に一度や二度はぶつかるものです。私も、制作の過程で必ず1回はスマホの画面に要素が収まらず、横スクロールが表示されてしまい、毎回閉口していました。
以前は、どこが原因で要素が画面に収まらないのかすぐに分からず、問題を解決するまでに長い時間を費やしたものです。そんな経験を何度もしているうち、今ではすぐに原因の箇所を突き止め、修正できる様になりました。
今回は、スマホサイトで要素が画面に収まらない主な原因と解決策をまとめてみました。
以下の内容を読めば、きっとあなたのサイトも要素が画面に収まるようになります!
原因1:要素の幅がデバイスの幅を超えている
解決策:スマホ表示の場合、要素の幅をpxではなく%で指定するようにする。
要素の幅がデバイスの幅を超える値になっている時、当然ですが要素は画面内に収まりません。
例えば、デバイスの横幅が【480px】、要素の横幅が【500px】であれば、オーバーしている【20px】だけ要素が画面からはみ出してしまいます。つまり、要素が画面に収まらなくなるわけです。
この解決策は、要素の横幅がデバイスの横幅を超えないようにすること。
具体的には、横幅の値を【px】で指定するのではなく【%】で指定してやることです。
そうしてやれば、要素の横幅がデバイスの横幅を超えることはありません。
原因2:margin、padding、borderが考慮されていない
解決策:要素のCSSに【box-sizing: border-box;】を加えてやる。
例えば、要素の横幅を【width:100%】と指定している場合で、その要素にmargin、padding、border(要素の横に対して)が設定されていると、その数値の分だけ画面からはみ出してしまいます。
例えば、margin-rightが10px、padding-rightが10px、border-rightが10pxだとした場合、3つの合計である30pxだけ画面から要素がはみ出すことになります。
【width:100%】と指定した場合でも、margin、padding、borderの値は【width:100%】に含まれませんので、要素が画面に収まらなくなるわけです。
この解決策としては、該当する要素に【box-sizing: border-box;】を加えてやることです。
これを加えることで、margin、padding、borderの値を含めて【width:100%】にすることができます。
原因3:画像のサイズがデバイスの横幅を超えている
解決策:画像タグに対してmax-widthを100%で指定してやる。
【原因1:要素の幅がデバイスの幅を超えている】と同じですね。
画像の横幅がデバイスの横幅を超えていると、その超えている分だけ画面からはみ出します。
この解決策は、PCとスマホで画像を切り替える、画像タグに対してwidthを100%で指定してやる、などいくつかの解決策が考えられますが、今回は【画像タグに対してmax-widthを100%で指定してやる】をお勧めいたします。
例えば、スマホ表示の画像タグに対して以下の様なCSSを設定してやります。
img{
max-width: 100%;
height: auto;
width /***/:auto;
}
このCSSを設定してやると、画像がデバイスの横幅より大きい場合、デバイスの横幅に合わせて縮小されます。画像がデバイスの横幅より小さい場合は、元のサイズで表示されます。
こうしてやれば、画像のサイズが原因で【素が画面に収まらない】を回避することができます。
原因4:英文字やURLが改行されていない
解決策:要素のCSSに【word-wrap:break-word】を加えてやる。
ページ内に長い英文字やURLなどを記載していると、それらが改行されず、画面外にはみ出している場合があります。これが原因で、要素が画面に収まらないのです。
解決策としては、改行されていない英文字やURLの要素に対して、CSSで【word-wrap:break-word】を設定してやりましょう。これを設定する事で、長い英文字やURLが画面に収まるように改行されます。
まとめ
スマホサイトで要素が画面に収まらない主な原因4つと解決策をまとめてみました。
レスポンシブサイトの制作などで、頭を悩ませる問題かと思います。
今回紹介した原因と解決策を知るだけでも、問題解決に役立つかと思います。
ぜひ、参考にしてください。
コメントを残す