FigmaのAuto Layout入門|繰り返しのレイアウトやコンテンツに応じて横幅可変するボタンをラクに作る

FigmaにはAuto Layoutという機能があります。
このAuto Layoutを利用すると、コンテンツに合わせて変化するフレーム(アートボード)が作れます。
Auto Layoutとは
「Auto Layout」とは、コンテンツに応じて変化するフレームの作成ができます。
「Layout」と名前が付いているので、配置だけかと思ってしまいますが「テキスト量に応じての変化」や、「メニューやリストの順番をすぐ変えられる」「隣り合わせに並んでいるレイアウトをうまく補正してくれる」など柔軟なデザインを作るために必要不可欠です。
- CSSのFlexboxを意識したレイアウトができる
- テキスト量に合わせて自動でサイズが変わるボタンを作れる
- ボタンごとに細かいサイズ調整をしなくてよくなる
Auto Layoutの設定
Auto Layoutはどの要素にも好きに設定できます。
設定したい要素を選択したらプロパティパネルにある「Auto layout」の右にある「+」をクリックします(もしくは右クリックして[Add Auto Layout(shift + A)で設定追加])。
![]()
Auto LayoutはCSSのFlexboxをデザインツール上で再現する機能と考えると分かりやすく、選択した要素をグループ化する形でFrame(フレーム)が親要素として追加され、フレーム直下は子要素として扱われます。
設定項目
Auto Layoutを追加するとパネル上にいろんなアイコンが表示されます。

「↓」と「→」はレイアウトの並びを指定します。
「→」アイコンをクリックすると子要素が縦並びになります。

「↓」アイコンをクリックすると子要素が横並びになります。

その横の2つのアイコンは、子要素間の幅と、親要素周りのパディングの指定です。
1番右端のアイコンをクリックすると上下左右のどこを起点にリサイズするか指定できます。

上下の場合はCSSのalign-items、左右の場合はjustify-contentの指定がされます。
セレクトボックスの「Packed」を「Space between」にすると子要素間の幅がAutoになり、親要素の横幅いっぱいに広がるようになります。

これはCSSのjustify-content: space-between;と全く同じ挙動ですね。
子要素の並び変え
子要素を並び変えたい場合は、子要素を選択して、入れ替えたい場所にドラッグアンドドロップをするか、レイヤー位置を入れ替えます。


レイヤーを入れ替える場合は、横並びの場合は「レイヤーで上にいくほど右に並べられる」のと、縦並びの場合は「レイヤーで上にいくほど下に並べられる」ようになっています。
縦並びの場合にレイヤーの並びと実際にレイアウトされる並びが反対になるので注意が必要です。
コンテンツ量に応じて横幅を可変する
テキストに対してAuto Layoutを設定して、Frameに対して背景色を設定するとコンテンツ量に応じて横幅が変化するボタンを作れます。

ボタン1つ1つの横幅を指定して回る必要がなくなりますね。
設定もAuto Layoutを指定するだけなので非常に簡単です。
ルールを決めてコーディングしやすいレイアウトができる
このようにFigmaのAuto Layoutでは、Flexboxをそのまま指定するような作りになるので、コーディングをかなり意識したデザインになります。
ただ、デザインでAuto Layoutを指定されてあるからといって、コーディングでFlexboxを指定するのが最適とは限りません。
そこはコーダー側が意識してなにが最適か考える必要はありますが、コーディングしにくいデザインになることは減らせるでしょう。

Sketchの整列をショートカットキーを使ってすばやく行えるようにする方法
Figmaのフォント選択時に分かりやすくプレビューしてくれるプラグイン
Illustratorで文字をオブジェクトの上下中央揃えにする2つの方法
個人ブログにコメント欄は必要なのかどうか
Sketchの画像周りの基本操作|画像の追加方法や色補正、切り抜き方法まで
Figmaで様々なグラフ・チャートが作れて、詳細な見た目の設定もできるプラグイン「Chart」
Figmaの図形周りの基本操作|図形の作成方法から細かい設定項目まで
Photoshopでファイルを開いたとき「予期せずにファイルの末尾に達しました。」と表示される場合の対処法
Figmaの画像書き出し方法
記事内の画像にマウスホバーした時に画像が半透明になる意味はあるのか?
iTerm2で「Use System Window Restoration Setting」を設定しているとアラートが表示されて機能しない
Google Chromeのサイト内検索(カスタム検索)機能を別のプロファイルに移行する方法
iPadで入力モードを切り替えずに数字や記号をすばやく入力する方法
iPhoneやiPadでYouTubeの再生速度を3倍速や4倍速にする方法
Keynoteで有効にしているはずのフォントが表示されない現象
MacのKeynoteにハイライトされた状態でコードを貼り付ける方法
AirPodsで片耳を外しても再生が止まらないようにする方法
iTerm2でマウスやトラックパッドの操作を設定できる環境設定の「Pointer」タブ
DeepLで「インターネット接続に問題があります」と表示されて翻訳できないときに確認すること
Ulyssesの「第2のエディタ」表示を使って2つのシートを横並びに表示する
操作に没頭できる!Firefox版 Arcのようなブラウザ「Zen Browser」
chezmoi(シェモア)で始めるdotfiles管理
GitHubの通知を見逃さない!通知に特化したアプリ「Gitify」
Keyboard Maestroの変数基礎
Neovimを使い始める最初の一歩として便利な「LazyVim」
ウェブサイトをmacOSアプリとしてラッピングする「Unite Pro」
Keyboard Maestroの「Macro Debugger」で複雑なマクロのデバッグを行う方法
無料版でも高機能なランチャーアプリ「Raycast」の基本機能と環境設定
OnyXでターミナルを使わずにmacOSの詳細設定を行う
軽量で高速なターミナルエミュレーター「Ghostty」の設定方法