VIDEO LESSON
CSSのflex-shrinkの使い方:指定値・実例・効かない原因とブラウザー互換性の解説動画
再生時間 7:25動画を別のタブで開く ↗
動画の字幕・文字起こしを読む
再生中の字幕を濃い黒で表示し、一番上に追従します。字幕の行を選ぶと、その位置から再生できます。
- 0:00こんにちは。
- 0:00シーエスエス、リファレンス解説です。
- 0:03今回のテーマは、フレックス・シュリンクです。
- 0:07これはフレックスボックスの項目が、親の幅に収まりきらないときに、どれくらい縮むかを決めるプロパティです。
- 0:15幅が足りない場面でだけ働くのが大きな特徴で、親に余裕があるときには何も変わりません。
- 0:21この動画では、ゼロとイチという二つの値を比べて、対象の項目が縮むか、縮まずにはみ出してしまうかを確認します。
- 0:30たとえばナビゲーションの横並びや、ボタンの並びが狭い画面でつぶれてしまう場面を思い浮かべると、
- 0:35イメージがつかみやすいはずです。
- 0:40基本の書き方、縮む仕組み、実例、効かないときの確認まで順番に見ていきましょう。
- 0:46まず基本の書き方です。
- 0:47セレクターのあとに、フレックス・シュリンク、コロン、値、セミコロンを書きます。
- 0:53スライドの例では、デモというクラスを持つ項目にゼロを指定しています。
- 0:58ここで大切なのは書く場所です。
- 1:00フレックス・シュリンクは横並びにしたい親ではなく、並べられる子、つまりフレックスアイテム自身に書きます。
- 1:08親にはあらかじめディスプレイ、フレックスを指定しておく必要があります。
- 1:13親が並べ方の土台を用意し、子が自分の縮み方を決める、という役割分担をまず覚えてください。
- 1:20縮む仕組みを整理します。
- 1:22フレックス・シュリンクが働くのは、項目の基準サイズの合計が親の幅を超えたときだけです。
- 1:29たとえば基準が12レムの項目が三つ並び、親の幅がそれより狭いと、あふれた分をどこかが引き受けなければ収まりません。
- 1:39その不足分を、シュリンクの係数と基準サイズに応じて分け合い、各項目が少しずつ小さくなります。
- 1:46ですから実際の縮小量は、係数だけで決まるのではなく、もとの基準サイズであるフレックス・ベイシスの大きさにも依存します。
- 1:56係数が同じでも、もとが大きい項目ほど多く縮むと考えてください。
- 2:01逆に、親にまだ空きがあるときは、シュリンクではなくグロウの方が関係するので、
- 2:06混同しないようにしましょう。
- 2:10指定できる値を見ていきます。
- 2:12値はゼロ以上の数値で、単位は付けません。
- 2:15ゼロは縮まないという指定で、ロゴやアイコンのように形を保ちたい項目によく使われます。
- 2:22ただし縮まない分、親からはみ出す場合があるので注意が必要です。
- 2:26イチは初期値で、幅が足りなければ状況に応じて縮みます。
- 2:31ニやサンなど大きな数ほど、ほかの項目より多く縮む割合が増えます。
- 2:36マイナスの値は無効です。
- 2:37まずはゼロとイチの違い、つまり縮むか縮まないかから押さえ、比率の調整はそのあとで試すのがおすすめです。
- 2:45初期値と継承を確認します。
- 2:47フレックス・シュリンクの初期値はイチで、通常の継承はしません。
- 2:52親に書いても子へ自動で受け継がれないので、フレックスアイテムごとに指定します。
- 2:57一括指定フレックスとの関係も重要です。
- 3:00フレックス、ゼロ、イチ、6レムと書いたとき、二番目のイチがまさにこのシュリンクです。
- 3:05あとから縮み方だけを変えたいときは、フレックス・シュリンクを単体で書くのが安全です。
- 3:11一括指定で書き直すと、伸びる係数や基準サイズまで一緒に変わってしまうからです。
- 3:17インヘリットやイニシャルなどの共通キーワードの考え方は、ほかのプロパティと同じです。
- 3:22実例を見ていきます。
- 3:24まずエイチティーエムエルの用意です。
- 3:27ステージという親の箱の中に、項目が三つ入っています。
- 3:32一つ目と三つ目は通常の項目、二つ目だけが対象で、アイテムとデモ、二つのクラスを持っています。
- 3:40頭の部分、ヘッドにはスタイルシートを読み込むリンクを置いてください。
- 3:46親と子の構造そのものが例の一部です。
- 3:50この例では親の幅をあえて狭く用意し、二番目の対象だけ縮み方を変えて、ほかの項目とどう違うかを見比べます。
- 3:59対象の幅とはみ出し方に注目してください。
- 4:03次に、スタイルズ・ドット・シーエスエスに書くシーエスエスです。
- 4:07ステージはディスプレイ、フレックスで項目が横に並びますが、最大幅が24レムに絞られていて、
- 4:12基準12レムの項目三つはそのままでは収まりません。
- 4:17そして主役は最後の行で、デモだけにフレックス・シュリンク、ゼロを指定し、
- 4:21縮小を止めています。
- 4:24すると対象は基準の大きさを保とうとし、親からはみ出すか、スクロールで見る形になります。
- 4:30土台の指定は共通なので、最後の一行だけに注目してください。
- 4:35対象だけ枠線が太く背景が付いているので、ブラウザーで開いたときにどれが縮んでいないか、
- 4:39一目で分かるようになっています。
- 4:43値を変えて比べてみましょう。
- 4:45最後のフレックス・シュリンクの値だけを、ゼロからイチへ置き換えます。
- 4:50ファイルを保存してブラウザーを再読み込みすると、二番目の対象もほかの項目と同じように縮むようになり、
- 4:55狭い横並びの中に収まります。
- 4:59エイチティーエムエルは一切変えていません。
- 5:03たった一つの係数を変えるだけで、はみ出していた項目が並びの中に収まるわけです。
- 5:08ただし縮む量は基準サイズにも左右されるので、親の幅を変えたときの結果もあわせて観察すると理解が深まります。
- 5:16比較のコツは、変える値を一つだけにすることです。
- 5:19間違えやすい点を整理します。
- 5:22まず、ゼロで縮小を止めると、項目が親からはみ出す場合があります。
- 5:26縮まない指定は便利ですが、スマホのような狭い画面では見切れや横スクロールの原因になるので、
- 5:31使いどころを選んでください。
- 5:36次に、親がフレックスになっていないと、子にシュリンクを書いても効きません。
- 5:41親への指定と子への指定を混同しないでください。
- 5:45さらに、親の幅に余裕がある場面では、そもそも縮む必要がないため、値を変えても見た目が変わりません。
- 5:52効いていないのではなく、発動する条件がそろっていないだけ、という場合も多いのです。
- 5:59効かないときの確認手順です。
- 6:01まずネットワークで、スタイルズ・ドット・シーエスエスが正常に取得できているかを確認します。
- 6:08次にエレメンツで、対象のクラスとセレクターが一致しているかを見てください。
- 6:13スタイルズで宣言が無効になっていないか、フレックスの一括指定など別の宣言に上書きされていないかも重要です。
- 6:22コンピューテッドでフレックス・シュリンクの最終的な値を確認し、親の表示方式がフレックスになっているか、
- 6:28親の幅と項目の合計を比べて縮む条件がそろっているかも調べましょう。
- 6:35最後に三百二十ピクセル程度の画面幅や文字の拡大でも、内容が利用できるかを確かめてください。
- 6:42最後に互換性とまとめです。
- 6:43フレックス・シュリンクは、クローム、エッジ、ファイアフォックス、サファリなど、
- 6:48現在の主要ブラウザーで広く対応しています。
- 6:52記事では、クロームは29以降、エッジは12以降、ファイアフォックスは20以降、
- 6:56サファリは9以降などの記録が紹介されています。
- 7:00練習は、まずゼロとイチの違いを自分の言葉で説明し、次に文章量や親の幅だけを変えて、
- 7:05結果がどう変わるかを比べることです。
- 7:09まとめます。
- 7:10フレックス・シュリンクは、幅が足りないときに項目が縮む割合を決める係数で、
- 7:13初期値はイチ、継承はしません。
- 7:17関連するフレックス、フレックス・グロウ、フレックス・ベイシスもあわせて確認すると理解が深まります。
- 7:24お疲れさまでした。
この動画で学べること
flex-shrinkの役割と主な指定値を解説。狭い横並びで対象項目が縮むかを比較します。初期値・継承・ブラウザー互換性、効かないときの確認方法も整理します。
解説記事・サンプルコードを読む:CSSのflex-shrinkの使い方:指定値・実例・効かない原因とブラウザー互換性 →