文字列の表示位置がずれる

概要

文字列の表示位置が上下左右にずれて表示されたり、プルダウンメニュー等の表示領域をはみ出して表示したりすることがあります。 その場合、横スクロールが行えないことを想定したモバイル向けウェブページで横スクロールが可能となってしまいます。

表示画面

要因

複数の要因が考えられますが、代表例として以下があります。

  1. ブラウザー間でのデフォルト値の差異 ブラウザー毎でデフォルト値を持っています。 line-height: normal; 等で指定するとデフォルト値で表示されます。 しかし、ブラウザーによってはデフォルト値が異なるため、同じように normal で指定してもブラウザー比較すると異なる表示となってしまうことがあります。

    css
    .recommended {
      text-decoration: none;
      display: inline;
      width: auto;
      height: auto;
      line-height: normal;
      vertical-align: baseline;
    }
    
  2. ベンダープレフィックス 他のブラウザーで正しく表示出来ているが、Firefox で表示が崩れている場合は、ベンダープレフィックスの指定が入っていることが考えられます。 -webkit-box-sizing プロパティ等で指定している場合、Firefox では認識できないため、表示崩れが発生します。

    css
    #button-06 {
      display: table;
      width: 99.9%;
      -webkit-box-sizing: border-box;
    }
    
  3. ブラウザー間での px 指定の差異 様々なアイコン上の文字列を CSS のpaddingプロパティ等を使用して、配置を指定している場合、ブラウザー間で表示がずれてしまう場合があります。 これは、ブラウザー間で px 指定の差異があるために発生しています。

    css
    .gender-type {
      padding-top: 3px;
    }
    

解決策

各要因の解決策の代表例として以下があります。

  1. ブラウザー間でのデフォルト値の差異 デフォルト値で設定するとそれぞれのブラウザーで解釈の差異が生まれてしまう可能性があるため、 明示的に値を指定することで正しく表示できます。

    css
    .recommended {
      text-decoration: none; display: inline;
      width: auto;
      height: auto;
      line-height: 1;
      vertical-align: baseline;
    }
    
  2. ベンダープレフィックス webkit 指定が入っている場合は、他のブラウザーとの互換用に別途指定を行う必要があります。 -webkit-box-sizing プロパティの場合は、box-sizingプロパティを追記することで Firefox でも指定を行うことができます。

    css
    #button-06 {
      display: table;
      width: 99.9%;
      -webkit-box-sizing: border-box;
      box-sizing: border-box;
    }
    
  3. ブラウザー間での px 指定の差異 指定に差異が出てしまっているものに関しては、個々の要素にpaddingプロパティ指定を追記し、 それぞれで調整を行うことで、想定の表示を行うことが可能となります。

    css
    .gender-type.blc-hdr-rgt {
      float: right;
      padding: 1.5px;
    }
    

メリット

  • デフォルト値ではなく、明示的に値を指定することで、他のブラウザーで差異があった場合にも対応できます。

戻る