文字列の表示位置がずれる
概要
文字列の表示位置が上下左右にずれて表示されたり、プルダウンメニュー等の表示領域をはみ出して表示したりすることがあります。 その場合、横スクロールが行えないことを想定したモバイル向けウェブページで横スクロールが可能となってしまいます。
表示画面
要因
複数の要因が考えられますが、代表例として以下があります。
-
ブラウザー間でのデフォルト値の差異 ブラウザー毎でデフォルト値を持っています。 line-height: normal; 等で指定するとデフォルト値で表示されます。 しかし、ブラウザーによってはデフォルト値が異なるため、同じように normal で指定してもブラウザー比較すると異なる表示となってしまうことがあります。
css.recommended { text-decoration: none; display: inline; width: auto; height: auto; line-height: normal; vertical-align: baseline; }
-
ベンダープレフィックス 他のブラウザーで正しく表示出来ているが、Firefox で表示が崩れている場合は、ベンダープレフィックスの指定が入っていることが考えられます。 -webkit-box-sizing プロパティ等で指定している場合、Firefox では認識できないため、表示崩れが発生します。
css#button-06 { display: table; width: 99.9%; -webkit-box-sizing: border-box; }
-
ブラウザー間での px 指定の差異 様々なアイコン上の文字列を CSS のpaddingプロパティ等を使用して、配置を指定している場合、ブラウザー間で表示がずれてしまう場合があります。 これは、ブラウザー間で px 指定の差異があるために発生しています。
css.gender-type { padding-top: 3px; }
解決策
各要因の解決策の代表例として以下があります。
-
ブラウザー間でのデフォルト値の差異 デフォルト値で設定するとそれぞれのブラウザーで解釈の差異が生まれてしまう可能性があるため、 明示的に値を指定することで正しく表示できます。
css.recommended { text-decoration: none; display: inline; width: auto; height: auto; line-height: 1; vertical-align: baseline; }
-
ベンダープレフィックス webkit 指定が入っている場合は、他のブラウザーとの互換用に別途指定を行う必要があります。 -webkit-box-sizing プロパティの場合は、box-sizingプロパティを追記することで Firefox でも指定を行うことができます。
css#button-06 { display: table; width: 99.9%; -webkit-box-sizing: border-box; box-sizing: border-box; }
-
ブラウザー間での px 指定の差異 指定に差異が出てしまっているものに関しては、個々の要素にpaddingプロパティ指定を追記し、 それぞれで調整を行うことで、想定の表示を行うことが可能となります。
css.gender-type.blc-hdr-rgt { float: right; padding: 1.5px; }
メリット
- デフォルト値ではなく、明示的に値を指定することで、他のブラウザーで差異があった場合にも対応できます。