Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
モバイルファーストデザインの爆速実装を考える Details Tech Session Vol.2 2022/05/25
Slide 2
Slide 2 text
私はだれ
Slide 3
Slide 3 text
名前: 田辺 雄樹 (たなべ ゆうき) 所属: 職業: 営業・ディレクター職(1年) → フロントエンドエンジニア(4年) 出身: 1993年北海道札幌市生まれ 好きなもの: 乃木坂46, Jリーグ(北海道コンサドーレ札幌), F1 よろしければTwitterフォローお願いします! → @tanabee_8 顔面ピーク時の写真
Slide 4
Slide 4 text
こういう話を真剣にできる仲間を募集しています。
Slide 5
Slide 5 text
今日話すこと
Slide 6
Slide 6 text
モバイルファーストデザイン の爆速実装を考える
Slide 7
Slide 7 text
何すか? モバイルファーストデザインって
Slide 8
Slide 8 text
引用元: モバイルファーストデザインは、いつ、なぜ、どのように使うべきか? | アドビUX道場 #UXDojo
Slide 9
Slide 9 text
“ モバイルファーストデザインとは、 モバイルデバイスを優先してデザインプロセスを開始することにより、 優れたユーザー体験をつくり出そうとする考え⽅ "
Slide 10
Slide 10 text
なるほど
Slide 11
Slide 11 text
私が意図しているのは、 最近よく見るこういうサイト
Slide 12
Slide 12 text
デスクトップがこう! HondaHeart
Slide 13
Slide 13 text
モバイルがこう!
Slide 14
Slide 14 text
他社さまの素晴らしき参考: 「ほろよい」 https://www.suntory.co.jp/rtd/horoyoi/ 「思い出をおしゃれに彩る〈Beams mini〉でつくる夏 の7DAYSコーデ」 https://www.beams.co.jp/special/beams mini/kids_7days/
Slide 15
Slide 15 text
デスクトップも、”ほぼ”モバイルの見え方
Slide 16
Slide 16 text
さて
Slide 17
Slide 17 text
エンジニアとしての心情を考えると..
Slide 18
Slide 18 text
理想は…
Slide 19
Slide 19 text
「モバイルの実装したら、 デスクトップも終わってた🥰」
Slide 20
Slide 20 text
だって、LP案件って…
Slide 21
Slide 21 text
99.99%の確率で超・短納期だから (自分調べ) なんかそういうデータとかあるんですか…? それってあなたの感想ですよね?
Slide 22
Slide 22 text
納期に間に合ってみんな幸せ!! LOVE!!!
Slide 23
Slide 23 text
ということで
Slide 24
Slide 24 text
LT後、 こんな気分に なって頂けたら嬉しいです
Slide 25
Slide 25 text
「心の余裕を持って、LP実装ができそう!!」
Slide 26
Slide 26 text
ここから実装の話
Slide 27
Slide 27 text
☆仕様の前提 • モバイルはvw(ウインドウサイズで可変)で実装 • コンテンツの最大幅は750pxで、それ以上は広がらない • 説明の便宜上、よくあるデザイン幅の750pxとします • デザイン750pxだけどコンテンツ幅は別にしたい、みたいなケースは 後で解説します
Slide 28
Slide 28 text
☆仕様の前提 750px window size
Slide 29
Slide 29 text
爆速実装への戦略
Slide 30
Slide 30 text
「Media Queryを使わない!!」
Slide 31
Slide 31 text
これは面倒!
Slide 32
Slide 32 text
二つの神器を使う
Slide 33
Slide 33 text
「rem」 と 「min()」
Slide 34
Slide 34 text
「rem」の復習
Slide 35
Slide 35 text
ルート要素(htmlタグ)のfont-size を基準にした値 これ
Slide 36
Slide 36 text
font-size: 10px; なら、 1rem = 10px font-size: 1vw; なら、 1rem = 1vw (= windowWidth / 100 px)
Slide 37
Slide 37 text
☆remは、pxにもなるしvwにもなる
Slide 38
Slide 38 text
「min()」の復習
Slide 39
Slide 39 text
min(A, B)のうち、小さい方が選択される
Slide 40
Slide 40 text
Q: font-size: min(2px, 6億vw); なら?
Slide 41
Slide 41 text
Q: font-size: min(2px, 6億vw); なら? A: 小さい方の2px
Slide 42
Slide 42 text
☆最大値を設定できる =「vw」に最大値を与えられる
Slide 43
Slide 43 text
ここから応用問題!
Slide 44
Slide 44 text
このCSSが意味するものとは?
Slide 45
Slide 45 text
これ • デザイン幅750pxのときに16pxになるvw を求める • (min関数の中はcalcなしで計算可能) ※なぜ16px? → ブラウザのデフォルト値だから ※10pxのほうが計算しやすいじゃん! → CSSに計算させるので大丈夫!
Slide 46
Slide 46 text
これ • 最大値が16px • 750pxのときに16pxになるので… • w < 750pxならvw可変、w > 750pxなら16px固定
Slide 47
Slide 47 text
• 1rem = ? • ウインドウサイズによって変わるはず
Slide 48
Slide 48 text
• 750pxちょうどのとき、1rem = 16px; • 750pxより大きいとき、1rem = 16px; • 750pxより小さいとき、1rem = 2.1333..vw;
Slide 49
Slide 49 text
以降、CSSすべての単位をremで揃える
Slide 50
Slide 50 text
例題
Slide 51
Slide 51 text
例えば、とある文字のフォントサイズが 750pxのデザインデータで22pxだった
Slide 52
Slide 52 text
これでOK
Slide 53
Slide 53 text
例えば、とある要素の上マージンが 750pxのデザインデータで50pxだった
Slide 54
Slide 54 text
これでOK
Slide 55
Slide 55 text
デザインデータは750pxなんだけど、 コンテンツの最大幅は540pxに 変更したい
Slide 56
Slide 56 text
最大値を540pxのときのpx単位に変更 これ
Slide 57
Slide 57 text
「Media Queryいらない!!」
Slide 58
Slide 58 text
サンプルつくってみた
Slide 59
Slide 59 text
URL: https://codesandbox.io/s/details- tech-session-20220525- gx8gvi?file=/index.html
Slide 60
Slide 60 text
注意事項
Slide 61
Slide 61 text
min()はIE11不可😢 ※「モバイルファーストって言ってんだろ!!」
Slide 62
Slide 62 text
node-sassでmin()はエラーになる😢 → ハック的な解決方法はあるが.. → 2022年10月でサポート終了だし! → dart-sassへアップデートしよう
Slide 63
Slide 63 text
stylusでもmin()はエラーになる😢 @css{}で囲む ※referenceはこちら
Slide 64
Slide 64 text
おまけ
Slide 65
Slide 65 text
もっと服部さんとサッカー見て
Slide 66
Slide 66 text
ご清聴ありがとうございました。