remとvwを利用した文字サイズの変更方法、vwを使ってレイアウトをほぼ完全に保つ。

※以下の方法は、効率的で生産性の高い方法を考えた方法で、ベストではありません。

いろいろレスポンシブなサイトを作ってきて、効率的で生産性の高いほうほうをさぐっていくうちに、以下のよううなレスポンシブの作りを良くします。(私はフロントエンド係)

  • PCファースト(どうしてもデザインがPC先行とか)
  • PXは基本pxで組む。
  • 文字サイズはhtmlに10pxを指定、bodyに14px、その他はremにて指定。
  • Tabletは基本PCと全く同じレイアウトでiPad縦まで引きずる(文字サイズ14pxまでならなんとか読める)
  • SmartPhoneはレイアウト変更して組む。

PCファースト

まずPCは何も考えずに基本pxで組んでいきます。注意する点は以下の2点だけ。

  • 文字サイズはhtmlに10pxを指定、bodyに14px、その他はremにて指定 >> 後々重要
  • スマホのレイアウトが実現可能なタグづけをする。

とそのままマークアップ、スタイリングします。

Tabletのレイアウト(基本PCと同じレイアウトにする)

まずどのように同じレイアウトを保つかというとvwの単位をうまく使います。
ブレークポイントを設定して単位のpxをvwに置換していくわけですが、まずPCのコンテンツの幅を1024pxだとした場合の値の求め方は、

vw = PCでの幅(px) / 1024 * 100

となります。これをすべて手動で計算は無いので、以下のようなfunctionを使います。

@function px2vwTablet($num){
    @return ($num/$breakPointTablet*100)vw
}

sassのコードは

.wrapper{
    width :  500px;
    @media screen and (max-width: 1024px) {
        width : px2vwTablet(500)
    }
}

とすると、PC〜Tabletのレイアウトを同一に保持できます。
次は文字サイズを基本PCではpx、タブレットではvwにする方法は以下の通り

html{
    font-size: 10px;
    @media screen and (max-width: 1024px) {
        font-size: px2vwTablet(10)
    }
}
body{
    font-size: 1.4rem;
}

このすべてpx > vwに置換していけばPCのレイアウトがそのままタブレットに引き継切できます。
SPについてはPCのレイアウトをそのままで引き継ぐわけには行かないので、通常のレスポンシブの組み方で組んで行ってます。(これでいいのか。。悩