LoginSignup
21
23

More than 5 years have passed since last update.

レスポンシブデザインにするためにやったこと

Last updated at Posted at 2015-09-15

初めてのモバイル対応でやったことをまとめてみます。

やったこと

最新機種のサイズの確認

こちらのサイトを参考にしました。
http://mydevice.io/devices/
最新機種が出るたびに解像度は大きくなる傾向にあるので、随時気にしていかなければならないようです。

viewportの設定

こちらのエントリで色々検証されてますが…→もう逃げない。HTMLのviewportをちゃんと理解する
自分も色々試した結果、結局のところ下記の記述に落ち着きました。

<meta name="viewport" content="width=device-width,initial-scale=1.0">

失敗1: 縮小されたままになってしまった例

この設定はだめでした。

<meta name=”viewport” content=”width=device-width,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no”>

失敗2: iPhoneのsafariでうまく表示されなかった例

<meta name="viewport" content="width=device-width, initial-scale=1.0">

成功例との差がわかるでしょうか?
このコードではiphoneのsafariでうまく表示されませんでした。
正解はなんとwidth=device-width, initial-scale=1.0"と半角スペースが入っているということでした。
原因がなかなか突き止められずにすごい時間を食ってしまいました……。スペースにも気をつけましょう。

メディアクエリの設定をmixinにした

メディアクエリの記述はどうしても色々な箇所ででてきました。
その時に何度も同じ記述を書いているとタイプミスがあったり、あとで更新した場合にも面倒だったので以下のようにmixinにしました。

@mixin pc($width: 769px) {
  @media screen and (min-width: $width) {
    @content;
  }
}
@mixin smartphone($width: 768px) {
  @media screen and (max-width: $width) {
    @content;
  }
}

この方法はできなかった!sassの書き方で気をつけたいこと

メディアクエリで変数の分岐はできない

こんな感じでメディアクエリを使って変数の更新をしようと思いました。

$header-height: 70px;
$footer-height: 100px;
@media screen and (max-width: 768px) {
    $header-height: 50px;
    $footer-height: 80px;
}

しかしこの方法だとスクリーンのサイズに関わらず、あとに書いた内容で変数が設定されていました。mixinを使っても同じです。
スクリーンサイズによって変数を変えることはできませんので、別の書き方をする必要があります。

参考:http://foundation.zurb.com/forum/posts/16411-sass-variables-not-working-in-media-queries

21
23
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
21
23