スクロールに合わせてアニメーション【AOS.js】

スクロールに合わせて要素がフワっと現れたり、横からスライドしてきたりするアニメーションエフェクト。
「AOS.js」というスクリプトが簡単に設置できるので、こちらの使い方をまとめます。

まずはサンプルから。


サンプルページ

基本的なつかい方

準備する

必要ファイルの読み込み

AOS.jsを使用するのに必要なファイル(aos.cssとaos.js)を読み込みます。AOSのサイトからダウンロードしても良いし、CDNで読み込んでもOK。

ファイルのダウンロードリンクはAOSのサイトの最下部あたりにあります。CDNの最新版もそのあたりに。
今回は必要ファイルをCDNで読み込んでいこうと思います。

まず、cssを<head>~</head>内で読み込みます。

<link href="https://unpkg.com/aos@next/dist/aos.css" rel="stylesheet"> 

スクリプトファイルは </body> タグ直前あたりで読み込みます。

<script src="https://unpkg.com/aos@next/dist/aos.js"></script>
または
<script src="https://unpkg.com/aos@2.3.1/dist/aos.js"></script>
(※こっちはたまに動作が不安定になる) 

読み込んだjsファイルを実行する

単純に実行(初期化)させるだけの場合は以下の記述でOK。上で読み込んだaos.jsファイルの下に記述します。
この場合アニメーションの動作設定はデフォルトのまま。細かく設定する方法はのちほど。

<script>
  AOS.init();
</script> 

動かす

動かしたい要素のタグ内に「data-aos="****"」のかたちでエフェクトをつけるコードを追加します。

以下のサンプルページ内から実際の動きを見ることができます。


サンプルページ

たとえば、div要素をフェードさせたい場合は以下のように書きます。(エフェクト一覧

<div data-aos="fade">動かしたい要素</div> 

ざっくりした書き方は以上となります。

カスタマイズする

まとめて制御する

jsファイルを実行させるコードに追記することで、デフォルトの設定を変えることができます。
以下にデフォルトの設定が書いてありますが、変更したい項目のみ記述して数値などを変更すれば大丈夫。うしろのカンマ「,」を忘れないように。
基本的には「Effect Settings」の調整だけでほぼ事足りるかと思います。

<script>
AOS.init({
    // Global settings:
	disable: false,
	startEvent:'DOMContentLoaded',
	initClassName: 'aos-init',
	animatedClassName: 'aos-animate',
	useClassNames: false,
	disableMutationObserver: false,
	debounceDelay: 50,
	throttleDelay: 99,
    // Effect settings:
	offset: 120,
	delay: 0,
	duration: 400,
	easing: 'ease',
	once: false,
	mirror: false,
	anchorPlacement: 'top-bottom',
});
</script> 

Effect Settings 説明

offset 元のトリガーポイントからのオフセット(ピクセル単位)
delay アニメーションが始まるまでの遅延時間(0-3000の間で指定。50ms毎)
duration アニメーション開始から終了までの時間(0-3000の間で指定。50ms毎)
easing AOSアニメーションのイージング イージング種類
once スクロール中にアニメーションを1回だけ実行するか
mirror スクロール中にアニメーションするか
anchorPlacement トリガーポイントの設定。要素のどの位置がウィンドウのどの位置にきたら実行させるか

(’要素位置-ウィンドウ位置’)位置は「top」「center」「bottom」でそれぞれ指定。

Global Settings 説明

disable AOSを無効にする場合に設定。「true」で無効。

「’phone’」「 ‘tablet’」「 ‘mobile’」 でそれぞれの時に無効。

startEvent AOSが初期化されるイベント名を設定。
initClassName 初期化後に適用されるクラス名
animatedClassName アニメーションに適用されるクラス
useClassNames trueの場合、スクロール時に「data-aos」のクラス名を追加します
disableMutationObserver 自動変異の検出を無効にします
debounceDelay ウィンドウのサイズ変更中に使用されるデバウンスの遅延
throttleDelay ページのスクロール中に使用されるスロットルの遅延

MEMO

・よく使う設定
offset: 80,
duration: 600,
anchorPlacement: ‘center-bottom’,

・おすすめいーじんぐ
fade → data-aos-easing=”ease-in”
fade-up/fade-down/fade-right/fade-left → data-aos-easing=”ease-in-out”
zoom-in → data-aos-easing=”ease-out”

個別に制御する

上記ではエフェクトの動きをまとめて変更しましたが、 data-aos-***="値" のかたちで要素タグ内に記述することで、要素ごとにエフェクトの動きを設定できます。

<div
    data-aos="fade-up"
    data-aos-offset="200"
    data-aos-delay="50"
    data-aos-duration="1000"
    data-aos-easing="ease-in-out"
    data-aos-mirror="true"
    data-aos-once="false"
    data-aos-anchor-placement="top-center"
    data-aos-anchor=".other-element"
>
</div> 
data-aos-anchor 要素に直接指定した場合にのみ有効。指定した要素をトリガーポイントにできる。

固定要素をアニメーション化させる場合に使える。

Animation Effects

  • FADE
    • fade
    • fade-up
    • fade-down
    • fade-left
    • fade-right
    • fade-up-right
    • fade-up-left
    • fade-down-right
    • fade-down-left
  • FLIP
    • flip-up
    • flip-down
    • flip-left
    • flip-right
  • SLIDE
    • slide-up
    • slide-down
    • slide-left
    • slide-right
  • ZOOM
    • zoom-in
    • zoom-in-up
    • zoom-in-down
    • zoom-in-left
    • zoom-in-right
    • zoom-out
    • zoom-out-up
    • zoom-out-down
    • zoom-out-left
    • zoom-out-right

Animation Option

  • EASING
    • linear
    • ease
    • ease-in
    • ease-out
    • ease-in-out
    • ease-in-back
    • ease-out-back
    • ease-in-out-back
    • ease-in-sine
    • ease-out-sine
    • ease-in-out-sine
    • ease-in-quad
    • ease-out-quad
    • ease-in-out-quad
    • ease-in-cubic
    • ease-out-cubic
    • ease-in-out-cubic
    • ease-in-quart
    • ease-out-quart
    • ease-in-out-quart
  • ANCHOR PLACEMENTS
    • top-bottom
    • top-center
    • top-top
    • center-bottom
    • center-center
    • center-top
    • bottom-bottom
    • bottom-center
    • bottom-top

動きの幅をcssで変更する

「slide-left」などデフォルトでは100px右にずれた位置からアニメーションが開始するようになっていますが、200px,300pxと変更すると画面枠外から勢いよくスライドしてくる感じになります。

以下はデフォルトの設定なのでちょうど良い数値に直してください。
<head>~</head>内、読み込んだaos.cssより下に<style type="text/css">~</style>タグで囲って記述してください。

[data-aos=fade-up] {
    transform: translate3d(0,100px,0);
}
[data-aos=fade-down] {
    transform: translate3d(0,-100px,0);
}
[data-aos=fade-left] {
    -webkit-transform: translate3d(100px,0,0);
    transform: translate3d(100px,0,0);
}
[data-aos=fade-right] {
    transform: translate3d(-100px,0,0);
}
[data-aos=fade-up-right] {
    transform: translate3d(-100px,100px,0);
}
[data-aos=fade-up-left] {
    transform: translate3d(100px,100px,0);
}
[data-aos=fade-down-right] {
    transform: translate3d(-100px,-100px,0);
}
[data-aos=fade-down-left] {
    transform: translate3d(100px,-100px,0);
}
[data-aos=zoom-in] {
    transform: scale(.6);
}
[data-aos=zoom-in-up] {
    transform: translate3d(0,100px,0) scale(.6);
}
[data-aos=zoom-in-down] {
    transform: translate3d(0,-100px,0) scale(.6);
}
[data-aos=zoom-in-left] {
    transform: translate3d(100px,0,0) scale(.6);
}
[data-aos=zoom-in-right] {
    transform: translate3d(-100px,0,0) scale(.6);
}
[data-aos=zoom-out] {
    transform: scale(1.2);
}
[data-aos=zoom-out-up] {
    transform: translate3d(0,100px,0) scale(1.2);
}
[data-aos=zoom-out-down] {
    transform: translate3d(0,-100px,0) scale(1.2);
}
[data-aos=zoom-out-left] {
    transform: translate3d(100px,0,0) scale(1.2);
}
[data-aos=zoom-out-right] {
    transform: translate3d(-100px,0,0) scale(1.2);
} 

独自アニメーションを追加する

AOSにない動きを追加したい!というときは、javascriptを書かなくてもcssとhtmlのみで独自のアニメーションを追加することができます。もちろんレスポンシブで挙動を変えることも可能。

まずはcssを書きます。
ポイントはcssでセレクタを [data-aos="好きな名前"] にすること。今回は data-aos="custom-anime" としてサンプルを作成してみます。

[data-aos="custom-anime"] {
    opacity: 0;
    transition-property: transform, opacity;
}
[data-aos="custom-anime"].aos-animate {
    opacity: 1;
}
@media screen and (min-width: 768px) {
    [data-aos="custom-anime"]{
        transform: translateX(100px);
    }
    [data-aos="custom-anime"].aos-animate {
        transform: translateX(0);
    } 
} 

トリガーポイント外のスタイルは [data-aos="custom-anime"] セレクタに記述し、トリガーポイントに入った際のスタイルを[data-aos="custom-anime"].aos-animate セレクタに書いていきます。

そして、通常のAOSと同様にアニメーションをつけたいhtml要素に記述します。

<div data-aos="custom-anime">動かしたい要素</div> 

外部のcssアニメーションライブラリと統合する

有名なcssアニメーションライブラリanimate.cssと統合させることもできます。他サイトのライブラリでも同様の手順で統合可能です。

まずはanimate.cssを利用するためにanimate.cssのサイトからcssをダウンロードし、<head>~</head>内で読み込みます。

参考サイト

色辞典 カラーサンプル

配色に悩んだとき用。「Color List」はカラーコードをクリックでコピー。「Color Block」は色の部分をそのままクリックすればカラーコードをコピーできます。

  • Tab Title 1
  • Tab Title 2
  • Tab Title 3

Lorem ipsum dolor sit amet, consectetur adipisicing elit. Optio, neque qui velit. Magni dolorum quidem ipsam eligendi, totam, facilis laudantium cum accusamus ullam voluptatibus commodi numquam, error, est. Ea, consequatur.
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Optio, neque qui velit. Magni dolorum quidem ipsam eligendi, totam, facilis laudantium cum accusamus ullam voluptatibus commodi numquam, error, est. Ea, consequatur.
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Optio, neque qui velit. Magni dolorum quidem ipsam eligendi, totam, facilis laudantium cum accusamus ullam voluptatibus commodi numquam, error, est. Ea, consequatur.

  • Color List
  • Color Block

Pale Tone Ⅰ

P-1 ORCHID PINK 薄紅(うすくれない) #F67599
P-2 CORAL PINK 珊瑚色(さんごいろ) #F890A5
P-3 SHELL PINK 桜貝(さくらがい) #FFA38B
P-4 NARCISSUS 水仙(すいせん) #F6EB61
P-5 LETTUCE GREEN 若菜色(わかないろ) #6CC24A
P-6 ICE GREEN 薄浅葱(うすあさぎ) #49C5B1
P-7 AQUA アクア #5BC2E7
P-8 FORGET ME NOT BLUE 忘れな草色 #6CACE4
P-9 LILAC ライラック #A77BCA
P-10 PIGEON GRAY 鳩羽色(はとばいろ) #888B8D

Vivid Tone Ⅰ

V-1 CHERRY RED チェリー #C8102E
V-2 TANGERINE ORANGE 蜜柑色(みかんいろ) #FF671F
V-3 DANDELION 蒲公英(たんぽぽ) #FFD100
V-4 SHARTREUSE GREEN シャルトルーズグリーン #C4D600
V-5 PARROT GREEN パロットグリーン #009639
V-6 PEACOCK BLUE ピーコックブルー #006272
V-7 KING FISHER 川蝉色(かわせみいろ) #004B87
V-8 LAPIS LAZULI ラピスラズリ #06038D
V-9 IRIS VIOLET 菖蒲色(あやめいろ) #440099
V-10 IVORY BLACK #2D2926

Deep Tone Ⅰ

D-1 CRIMSON 臙脂色(えんじいろ) #8F3237
D-2 CHESTNUT BROWN 栗色(くりいろ) #6B3529
D-3 AUTUMN LEAF 枯葉色(かれはいろ) #91450B
D-4 MAPLE SUGER 銀煤竹(ぎんすすたけ) #A07400
D-5 OLIVE YELLOW オリーブイエロー #9A9500
D-6 ELM GREEN 鶯色(うぐいすいろ) #56621D
D-7 FOREST GREEN 千歳緑(ちとせみどり) #275D38
D-8 MIDNIGHT BLUE 青褐(あおかち) #003B5C
D-9 MULBERRY 紫紺(しこん) #221C35
D-10 TAUPE 土龍色(もぐらいろ) #63666A

Pale Tone Ⅱ

P-11 ROSE PINK 撫子色(なでしこいろ) #F8A3BC
P-12 APRICOT 杏色(あんずいろ) #FFC27B
P-13 GAMBOGE 梔子色(くちなしいろ) #FFC56E
P-14 STRAW YELLOW 麦藁色(むぎわらいろ) #FAE053
P-15 SPRING GREEN 萌葱色(もえぎいろ) #A4D65E
P-16 MINT GREEN 薄荷色(はっかいろ) #71CC98
P-17 TURQUOISE ターコイズ #2AD2C9
P-18 CELESTE BLUE 天色(あまいろ) #62B5E5
P-19 HYACINTH ヒアシンス #5C88DA
P-20 CROCUS クロッカス #AD96DC

Deep Tone Ⅱ

D-11 PLUM 李色(すももいろ) #80276C
D-12 MAROON 蘇芳色(すおういろ) #782F40
D-13 TERRA COTTA 土器色(かわらけいろ) #963821
D-14 BAMBOO 枯竹色(かれたけいろ) #D57800
D-15 MUSTARD 芥子色(からしいろ) #AC8400
D-16 MOSS GREEN 苔色(こけいろ) #8F993F
D-17 CACTUS GREEN 仙人掌(さぼてん) #67823A
D-18 SPRUCE 針樅色(はりもみいろ) #004E42
D-19 TEAL BLUE 真鴨色(まがもいろ) #004F59
D-20 INDIGO 濃藍(こいあい) #001E60

Light Grayish Tone Ⅰ

LG-1 FAWN 子鹿色(こじかいろ) #C48490
LG-2 CORK 渋紙色(しぶかみいろ) #B58150
LG-3 SALLOW 猫柳色(ねこやなぎいろ) #B3A369
LG-4 WAX YELLOW 蜜蝋色(みつろういろ) #DECD63
LG-5 WILLOW 柳葉色(やなぎばいろ) #A2A569
LG-6 MIST GREEN 抹茶色(まっちゃいろ) #9ABB91
LG-7 QUARTZ GREEN 水晶色(すいしょういろ) #6FA287
LG-8 PORCELAIN BLUE 呉須色(ごすいろ) #4F868E
LG-9 CAMPANULA BLUE 釣鐘草(つりがねそう) #8D89A5
LG-10 SEA FOG 鳩羽紫(はとばむらさき) #86647A

Fluorescence

F-1 PLASTIC PINK プラスチックピンク #FF3EB5
F-2 SUPRISE RED サプライズレッド #FF5FA2
F-3 EQUATORIAL ORANGE エクアトリアルオレンジ #FF8F6C
F-4 SUNSET ORANGE サンセットオレンジ #FFAA4D
F-5 DAZZLING SUN ダズリングサン #FFD635
F-6 FIREFLY YELLOW ファイアフライイエロー #FCE300
F-7 LIGHTNING YELLOW ライトニングイエロー #EDE939
F-8 NEON GREEN ネオングリーン #C5E86C
F-9 FLASH GREEN フラッシュグリーン #97D700
F-10 VIGOROUS GREEN ビガラスグリーン #44D62C

Very Pale Tone

VP-1 CAMEO PINK 桜色(さくらいろ) #F7CED7
VP-2 ALMOND BLOSSOM 一斤染(いっこんぞめ) #FABBCB
VP-3 ECRU 砥粉色(とのこいろ) #ECC3B2
VP-4 EGGSHELL 鳥の子色(とりのこいろ) #F1EB9C
VP-5 ASPARAGUS アスパラガス #D4EB8E
VP-6 OPAL GREEN 白緑(びゃくろく) #A2E4B8
VP-7 CASCADE 秘色(ひそく) #71DBD4
VP-8 HORIZON BLUE 瓶覗(かめのぞき) #99D6EA
VP-9 LUPINE ルピナス #CBD3EB
VP-10 VERBENA 美女桜(びじょざくら) #A7A4E0

Dull Tone

DL-1 CEDAR WOOD 雀茶(すずめちゃ) #9A3324
DL-2 CINNAMON 肉桂色(にっけいいろ) #A65523
DL-3 OIL YELLOW 菜種油色(なたねゆいろ) #B9975B
DL-4 SAGE GREEN 麹塵(きくじん) #8A8D4A
DL-5 VERDIGRIS 緑青(ろくしょう) #789D4A
DL-6 HUMMINGBIRD 山藍摺(やまあいずり) #006F62
DL-7 JAY BLUE 熨斗目色(のしめいろ) #4F758B
DL-8 HYDRANGEA BLUE 二藍(ふたあい) #1B365D
DL-9 HEATHER 古代紫(こだいむらさき) #693C5E
DL-10 TYRIAN PURPLE 梅紫(うめむらさき) #9B3259

Other

EX-1 SCARLET 緋色(ひいろ) #DF4661
EX-2 YOLK YELLOW 卵色(たまごいろ) #FFA300
EX-3 SCOURING RUSH 木賊色(とくさいろ) #5C7F71
EX-4 DEEP SEA 深海(しんかい) #425563
EX-5 WILD GRAPE 山葡萄(やまぶどう) #615E9B
EX-6 ANEMONE PINK アネモネ #AC4FC6
EX-7 PEONY PINK 牡丹色(ぼたんいろ) #C5299B
EX-8 RUSSET BROWN 小豆色(あずきいろ) #9C6169
EX-9 SEPIA 烏賊の墨色(いかのすみいろ #796E65
EX-10 SILVER GRAY 銀鼠(ぎんねず) #BBBCBC



CSSハック

IEでの表示だけ崩れてわりと悩まされることが多いので、表示されるブラウザごとにcssを適用させるCSSハックという小技っぽいものをまとめました。

以下のサンプルでは、表示しているブラウザに該当するボックスの色が変わるようにしています。

See the Pen CSSハック by uta (@utamaro) on CodePen.

IE11

				
					_:-ms-lang(x)::-ms-backdrop, #hoge {
    /* スタイル (color:red;など) */
}
				

Edge (chromium:新エンジン) & Chrome

Google Chromeと同じchromiumエンジンのEdge用になります。そのため、こちらを設定するとGoogle Chromeブラウザにもスタイルが反映されるので注意が必要です。

				
					_:lang(x)::-ms-, #hoge {
    /* スタイル (color:red;など) */
}
				

Edge (EdgeHTML:旧エンジン)

				
					_:-ms-lang(x)::backdrop, #hoge {
    /* スタイル (color:red;など) */
}
				

Chrome

こっちはグーグルクロームのみ反映されます。

				
					_:lang(x)::-internal-media-controls-overlay-cast-button, #hoge {
    /* スタイル (color:red;など) */
}
				

FireFox

				
					_:lang(x)::-moz-placeholder, #hoge {
    /* スタイル (color:red;など) */
}
				

Safari(iOS)

				
					_:lang(x)+_:-webkit-full-screen-document, #hoge {
    /* スタイル (color:red;など) */
}
				

Edge(EdgeHTML) & IE11 & IE10

				
					_:-ms-lang(x), #hoge {
    /* スタイル (color:red;など) */
}
				

Edge(Chromium) & Chrome & Safari & Firefox

				
					_:lang(x)::-webkit-, #hoge {
    /* スタイル (color:red;など) */
}
				

ブレイクポイントまとめ

ブレイクポイントまとめ

毎回ブレイクポイントがぶれるので、使いやすそうなサイズでまとめてみました。
また、デザインによっては細かく区切る必要がなかったりするので何パターンか作成してみました。

ちなみに、max-widthで分けたときにキリが良いようにpxを設定しているので、min-width(モバイルファースト)で作成するときは多少ずらします。

どうやってこの数字が出てきたかは下のほうで説明しています

1ヶ所でざっくり区切る

2ヶ所で区切る

3ヶ所で区切る

4ヶ所で区切る

tailwandCSSを参考にしたやつ(モバイルファースト)

Bootstrapを参考にしたやつ(モバイルファースト)

各デバイス毎の画面幅(画面解像度)

ブレイクポイントを決めるうえで、[PC(デスクトップ)]⇔[タブレット]⇔[スマホ]それぞれの画面幅を調べます。デバイス毎にシェア上位の画面幅の最小~最大を出し、各デバイスのブレイクポイントを考えたいと思います。

以下のサイトで直近12ヶ月の画面解像度のシェアを調べることができます。
[blogcard url=”https://gs.statcounter.com/”]

この記事に載せているシェア率は2021年2月時点(国内)のものなので、なるべく最新のものをオススメします。

デスクトップ

デスクトップの画面解像度シェアグラフ(2021年2月版)

まずはデスクトップ。

1位は1920x1080px。モニターに使われているサイズ。
2位は1366x768px。ノートPCの一般的なサイズ。
次いで1536×864px、1440×900px、1280×720px、2,560×1,440px、1280×800pxといった感じになってます。

[PC]⇔[タブレット]で分ける場合は上記の最小幅の1280pxが目安になりそうです。
ただし、タブレットのシェア上位に1280x800pxのものが含まれているので、1280px以上をPCと定義すると一部のタブレットがPCと同じ表示になってしまいます。

個人的には、見た目がガラっと変わる訳ではないのと1280pxタブレットのシェア率がかなり低いのであまり気にしなくて大丈夫だと思っていますが、hoverで色が変わるボタンなど設置している場合、カーソルのないタブレットだと分かりづらかったりします。そのため、1281px以上をPC、1280px以下をタブレットと定義したほうが一部のタブレットユーザーにも優しい表示が作れそうです。

タブレット

タブレットの画面解像度シェアグラフ(2021年2月版)

タブレットは768x1024pxが6割ほどのシェアで圧倒的です。
次いで1280x800px、800x1280px、834x1112px、600x960px、601x962pxと続いていきます。

タブレットの場合は縦向きで見る場合もありますが横向きにして見る場合もあります。1280x800pxと800x1280pxがランク入りしているのはそういった意味かと思われます。

タブレットを横向きとして考えた場合(PCの見え方に近い)、横幅は960~1280pxになり、縦向きとして考えた場合(スマホ・モバイルの見え方に近い)、横幅は600~834pxになります。

「タブレット横向き・縦向き」で分ける場合は縦横比がガラっと変わりますので、この間あたり(834~960px)でブレイクポイントをとるのが良さそうです。他サイトでよく見られるブレイクポイントは960px、900px、840pxあたりでしょうか。いつもこの数字どっから出てきたんだと思ってましたが、こうやってみると納得です。

モバイル(スマホ)

次はモバイルをみていきます。
1位は375x667px。これはiPhone 6,6s,7,8,SE(2世代)の大きさですね。
2位は414x896px。こちらはiPhone XR,XS Max,11,11 Pro Maxの大きさ。
3位は375x812px。こちらはiPhone X,XS,11 Pro,12 miniの大きさ。
4位は360x640px。ここでAndroidのXPERIAサイズが登場です。
次いで414x736px、320x568pxと続きます。

感想としては、iPhoneサイズのシェア率高いなって感じです。
また、上位シェア画面幅の最小~最大としては、320~414pxとなります。

タブレット縦向きの最小が600pxだったので、[タブレット]⇔[モバイル]間のブレイクポイントは414~600pxの間で設定するのが良さそうです。幅が広いですね。

他サイトを見ると600pxをブレイクポイントにしているところが多いので600px以下をモバイルにしたほうが無難そうです。600px以下をモバイルにするとタブレット(縦)の最小も含んでしまいますが、シェア率としてはかなり低いのでキリよくモバイルに含める感じなんでしょうか。

もしくは、大画面のandroidも考慮しつつレスポンシブにしたときデザイン崩れの少ない480pxでも良さそうです。こちらであれば600pxタブレット問題も大丈夫そうです。

全てのデバイスとまとめ

全デバイスの画面解像度シェアグラフ(2021年2月版)

横幅統計とは関係ないですが、全てのデバイス(スクリーン)サイズでのシェアも出せるようだったので出してみました。

トップから順に1920x1080px(PC)、375x667px(モバイル)、1366x768px(PC)、360x640px(モバイル)、414x896px(モバイル)とのこと。ただし、3位以降は割と変動が激しいので目安として考えたほうが良さそうです。こうやってみるとタブレットのシェアは低いんですね…。

ということで、ブレイクポイントのまとめとしては以下のようになりました。

なお、以下のブレイクポイントの数値はmax-widthで作成する場合の数値なので、min-widthでブレイクポイントを作るときは数値に注意してください。

[モバイル] ⇔ [PC]の1ヶ所

1ヶ所でざっくり分ける場合、ブレイクポイントは768pxが良さそうです。

これはタブレットのシェアが圧倒的1位の「768x1024px」から出した数値です。大きさは違えどタブレット縦向きの見え方はモバイルに近いので、768px以下をモバイルとして分けてみました。
840pxでも良さそうですが、あまりモバイルサイズと乖離しすぎるとレスポンシブにした場合デザインが崩れるおそれがあります。シンプルなデザインであれば840でも良いのかなと思います。

[モバイル] ⇔ [タブレット(縦)] ⇔ [タブレット(横)] ⇔ [PC]の3ヶ所

3ヶ所で細かく分ける場合は、600px(480px)、900px、1280pxといったところでしょうか。600px(480px)以下はモバイル、900px以下がタブレット(縦)、1280px以下がタブレット(横)、1281px~はPCといった具合です。なるべくキリの良い数値にしてみました。

[モバイル] ⇔ [タブレット(縦)] ⇔ [タブレット(横)&PC]の2ヶ所

タブレット横とPCの見え方はほとんど同じなので、このように2ヶ所のブレイクポイントをとっているサイトも多かったです。その場合はタブレット間の区切りをPC寄りにし、600px(480px)、960pxをブレイクポイントにするのが良いかと思います。600px(480px)以下をモバイル、960px以下をタブレット(縦)、961px以上をタブレット(横)&PCみたいな感じですね。

[モバイル] ⇔ [タブレット(縦/小)] ⇔ [タブレット(縦)] ⇔ [タブレット(横)] ⇔ [PC]の4ヶ所

数値だけだとイメージしづらいですがレスポンシブにした場合、モバイルサイズの横幅を最大600pxにすると、実際のモバイルサイズよりだいぶ大きいので500px以上くらいからモバイルの表示とイメージが変わってきます。

表示できるデバイスがほとんどないので気にしなくても大丈夫ですが、ここもキレイに表示させたい!という場合、「モバイル」と「タブレット(縦)」の間に「タブレット(縦/小)」という枠を作ってあげても良いかもしれません。

上記の枠を含め4ヶ所をブレイクポイントにする場合、480px、600px、900px、1280pxが目安になりそうです。480px以下はモバイル、600px以下はタブレット(縦/小)、900px以下はタブレット(縦)、1280px以下がタブレット(横)、1281px~はPCといった具合です。

iPhoneの解像度まとめ

いつも迷うiPhoneの画面解像度(デバイスピクセル)と実質解像度(CSSピクセル?)をまとめてみます。

デバイス名画面解像度実質解像度画面サイズ
 iPhone XS Max / 11 Pro Max1242 x 2688414 x 896 6.5 inch
 iPhone 11 Pro1125 x 2436375 x 812 5.8 inch
 iPhone XR/11828 x 1792414 x 896 6.1 inch
 iPhone X / XS1125 x 2436375 x 812 5.8 inch
 iPhone 8 Plus/ 7 Plus/ 6s Plus/ 6 Plus/1080 x 1920414 x 736 5.5 inch
 iPhone 8 / 7 /6s / 6750 x 1334375 x 667  4.7 inch
 iPhone5/5S/5c/SE 640 x 1136320 x 568 4 inch
pc-11920 x 1080
pc-21336 x 768

あと、レスポンシブなどで実質解像度を使う場合は以下のmetaタグをhtmlのhead内に入れます。

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

これを入れないと画面解像度で横幅計算されるのでブレイクポイントに引っかからず、PCの見た目がそのままキュッと縮まった感じでスマホに表示されることになります。

あとはユーザーエージェントでスマホとPCを判別して、スマホはスマホ用のコーディングに統一するとかかなあ。

BootstrapをCDNで読み込む

Bootstrapを使いたいと思って調べてたらCDNで読み込めることが分かったのでメモ。

v4.3.0 BootstrapCDNより

<head>~</head>内に以下を配置してcssを読み込む。

<link href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.0/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-PDle/QlgIONtM1aqA2Qemk5gPOE7wFq8+Em+G/hmo5Iq0CCmYZLv3fVRDJ4MMwEA" crossorigin="anonymous">

</body>タグの直前に以下を配置してjQueryとjsを読み込む(下記のリンクは”Popper.js”も含まれたbundleバージョン)

<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.0/js/bootstrap.bundle.min.js" integrity="sha384-VoPFvGr9GxhDT3n8vqqZ46twP5lgex+raTCfICQy73NLhN7ZqSfCtfSn4mLA2EFA" crossorigin="anonymous"></script>

ちなみに”Popper.js”が含まれていないバージョンはこちら

<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.0/js/bootstrap.min.js" integrity="sha384-7aThvCh9TypR7fIc2HV4O/nFMVCBwyIUKL8XCtKE+8xgCgl/PQGuFsvShjr74PBp" crossorigin="anonymous"></script>

これで準備完了。

FontAwesomeをちゃんと使う

アイコン入れたい時によくお世話になっているFont Awesomeさん。
Font Awesomeがバージョン5になってから「SVG?設置方法違うん?」てよく調べもせずこれまでどおり4を使っていたので、これを機にちゃんと使いたいと思う。

Font Awesome








準備する

HTMLの<head>~</head>内にいずれかを埋め込む

CDN(css)で使う※cssで使うならこっちのほうが使いやすい

<head>
    <link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.6.3/css/all.css" integrity="sha384-UHRtZLI+pbxtHCWp1t77Bi1L4ZtiqrqD80Kn4Z8NTSRyMA2Fd33n5dQ8lWUE00s/" crossorigin="anonymous">
</head>

CDN(svg)で使う※アイコンでアイコンをマスクしたり便利なことができる

<head>
    <script defer src="https://use.fontawesome.com/releases/v5.6.3/js/all.js" integrity="sha384-EIHISlAOj4zgYieurP0SdoiBYfGJKkgWedPHH4jCzpCXLmzVsw1ouK59MuUtP4a1" crossorigin="anonymous"></script>
</head>

ダウンロードして使う (ver 5.6.3)

ここ↓からダウンロード。webのほう。(Proは有料版なのでライセンスをもってなければFreeのほう)
Font Awesomeダウンロードページ

zipファイルの中に色々入っているが、CSSとwebフォントによる描写は「webfonts」フォルダ一式と、cssフォルダ内にある「all.min.css」があれば大丈夫。

「all.min.css」は「webfonts」フォルダ内のフォントを参照しているので、それぞれのファイルの位置関係(相対パス)が変わらないようにする。

こんなかんじ。

そして、cssを読み込む。

<head>
<script defer src="任意のパス/css/all.min.css"></script>
</head>

これで準備おっけー。

使う

CSSの疑似要素として使う

いっつもフォントファミリー忘れるんや。

まずはここから使いたいアイコンを探す。見つかったらアイコンをクリックしてアイコン単独のページへ移動。

Unicodeを探してコピペ。2019/3時点ではここにあった。