本文へスキップ

意味の通るフレーム構造

HTML をフレームに。ページも画面サイズも、それぞれ Figma のフレームへ

最上位のフレームにはページと画面サイズの名前が付き、その中の入れ子のフレームは DOM に沿って並びます。オートレイアウト(Auto Layout)は検証を通ったものだけが適用されます。

  • フレームの幅は実際のデザインから実測
  • 入れ子のフレームがページ構造をそのまま反映
  • デスクトップ・タブレット・モバイルのフレームを 1 回で(Pro)

Figma Community で近日公開

HTML を Figma に変換した結果:オートレイアウト、カラーバリアブル、テキストスタイル、コンポーネント

「HTML をフレームに」とは、デザイナーがインポートに本当に求めている出力のことです。1 枚の画像ではなく、ページと画面サイズごとに Figma のフレーム(Frame)があり、レイヤーパネルを開いたときに筋の通った入れ子の階層になっていること。EUREKA! が開発した Figma プラグイン HTML to Frames は、すべてのインポートをこの形で組み立てます。

取得した画面は、それぞれ example.com/pricing — Desktop (1920) のようなわかりやすい名前の最上位フレームになります。プロトコルと www は省かれ、名前は 60 文字以内に収まるので、複数ページを取り込んでもひと目で見分けられます。中を見ると、ページ上のコンテナがフレームになっていて、そのフレームは DOM に沿っています。ヘッダーのフレームの中にナビゲーションのフレームがあり、さらにその中にリンクのフレームがある、という具合に、元のマークアップとほぼ同じ構造です。

フレームの幅は推測ではありません。プラグインはインポート時に、ページ本来のデザイン幅を実測します。全幅のデザインならコンテンツのボックスを中央に置いた 1920 のフレーム、ボックス型のサイトなら 1200、1280、1440 といったそのボックスの幅、可変幅のサイトなら 1440 です。複数ページを取り込むときは、同じサイトのすべてのページに同じ幅を使うので、フレームがきれいに並びます。

レイアウトが許す箇所では、フレームはオートレイアウトのフレームになります。ブラウザが実測した位置とサイズから、方向、間隔、パディング、配置、折り返しを推定して適用し、すべての子要素が 2 px 以内に収まっているかを確認します。収まらないフレームは制約付きの絶対配置のまま残るので、何かが勝手に動くことはありません。

このエンジンの詳細は HTML to Frames のオートレイアウト解説 をお読みください。変換全体については HTML を Figma に変換、複数ページをまとめて取り込むなら Web サイトを Figma に取り込む をご覧ください。

ページがフレームになるまで

  1. 01

    サイト幅を実測する

    デザインが全幅、ボックス型、可変幅のどれかを判定し、それに合わせてデスクトップのフレーム幅を決めます。

  2. 02

    ピクセル単位で正確なフレームを作る

    すべてのコンテナを、実測した位置にフレームとして配置し、DOM の階層をそのまま再現します。

  3. 03

    内側からオートレイアウトを推定する

    いちばん内側のフレームから順に、並び、折り返し、間隔、パディング、配置を推定して適用します。

  4. 04

    検証し、だめなら元に戻す

    各子要素を 2 px 以内で確認します。収まらないフレームは、よりシンプルな構成を試すか、制約付きの絶対配置のまま残ります。

後片付けの時間を減らす、フレームまわりの工夫

実測したサイト幅

デスクトップのフレームはデザイン本来の幅を使います。全幅なら 1920、ボックス型ならそのボックス幅、可変幅なら 1440 です。

DOM に沿った階層

入れ子のフレームがページ構造に沿っているので、セクション、カード、ボタンをレイヤーパネルですぐに見つけられます。

オートレイアウトのフレーム

横・縦の並び、折り返しのある行、間隔、パディングを、子要素ごとに検証して設定します。

レスポンシブの意図を再現

中央寄せの要素は中央のまま、同じ幅のカードは拡大、ロゴとメニューのあいだの余白は「拡大」の要素になります。

レスポンシブセット

1 ページのデスクトップ、タブレット 768、モバイル 390 のフレームを並行して取得し、1 回のインポートとして数えます(Pro)。

フレームの再インポート

各フレームには取得元の URL と幅が保存されているので、ワンクリックで最新の状態に更新できます。

フレームの名前とサイト幅

10 ページを 3 つの画面サイズで取り込むと、フレームの名前が重要になります。HTML to Frames は、いつも同じ形式で名前を付けます。

domain/path?query — Screen (width)

たとえば shop.example.com/products?sort=new — Mobile (390) です。プロトコルと www は付かず、名前は 60 文字までに収められるので、キャンバス上でも読みやすいままです。

デスクトップの幅の決め方

デスクトップの画面は、推測ではなく実測するため Site width と呼んでいます。

サイトの種類デスクトップのフレーム幅
全幅のデザイン1920(コンテンツのボックスは中央)
ボックス型のサイトそのボックスの幅(例:1200、1280、1440)
可変幅のレイアウト1440

複数ページを取り込むときは 1 つのサイトに 1 つの幅を使うので、デスクトップのフレームがすべて 1 列にそろいます。その他の画面は固定幅で、ラップトップ 1280、タブレット 768、モバイル 390 です。Pro では、特定のブレイクポイントが必要なときに任意の幅(Custom width)も入力できます。

各フレームには取得元の URL と幅も保存されており、これがあとでワンクリックの再インポートを可能にしています。

一貫した名前は、Figma の外でも役立ちます。フレームへのリンクを共有したり書き出したりしたとき、名前を見ればエンジニアはどのページのどのブレイクポイントかがすぐにわかります。

入れ子のフレームと、検証済みのオートレイアウト

最上位の各フレームの中では、階層が DOM をそのまま反映しています。そのため、マークアップを知っている人ならレイヤーパネルも見慣れたものに感じられますし、オートレイアウトを設定するための本物のコンテナもそろいます。

エンジンは、決まった順序で処理します。

  1. 絶対配置で、ページをピクセル単位で正確に組み立てる。
  2. フレームを内側から順にたどり、実測した位置とサイズから、縦・横の並び、折り返しのある行、間隔、パディング、配置を推定する。
  3. レスポンシブの意味を置き換える。中央寄せの要素は「中央」に、最大幅のボックスは中央のまま、同じ幅のカードや flex-grow の要素は「拡大」に、ロゴとメニューのあいだの余白は「拡大」の要素にする。
  4. 構成を適用し、すべての子要素の位置が 2 px 以内に収まっているかを検証する。
  5. 収まらなければよりシンプルな構成を試し、それでもだめなら絶対配置のまま残す。

絶対配置のまま残ったフレームには、Stretch、Scale、Center、Min、Max などの制約が付くので、リサイズしても自然に振る舞います。結果画面には、それぞれが絶対配置のまま残った理由が一覧で表示されます。

実在のサイトで行ったテストでは、およそ 86〜97% のフレームでオートレイアウトが推定されました。大切なのは数字そのものではなく、その裏にある保証、つまりデザインが決して崩れないことです。CSS がフレームにどう対応するかは、CSS の Flexbox と Grid をオートレイアウトに変換する で詳しく解説しています。

1 ページを複数の画面サイズで:レスポンシブセット

1 つのフレームが表すのは 1 つのブレイクポイントだけです。実際のデザイン作業では、少なくとも 3 つは必要になります。Responsive set オプションを使えば、HTML to Frames は同じページのデスクトップ、タブレット、モバイルをワンクリックで取得します。

実用面でのポイントは次のとおりです。

  • 1 ページの各画面は、順番にではなく並行して取得されます。
  • 1 ページとその全画面は、3 回ではなく 1 回のインポートとして数えます。
  • Pro と Team では 1 回のインポートで最大 4 画面、無料プランでは 1 画面を取得できます。
  • 各画面はそれぞれ独立した最上位フレームになり、画面サイズと幅が名前に入るので、ひと目で見分けられます。

各画面はその本来の幅で取得されるので、デスクトップのフレームを細く縮めたものではなく、サイトの実際のモバイルレイアウトが手に入ります。メニューボタンにまとまるナビゲーション、4 列から 1 列になるグリッド、小さくなる文字も、その幅でサイトが描画するとおりに再現されます。そのため、レスポンシブデザインをレビューする際の信頼できる出発点になります。

レスポンシブセットを 複数ページの一括インポート と組み合わせれば、複数のページを複数のブレイクポイントで取得できます。上限は 料金ページ でご確認ください。

Web ページとその画面サイズごとに Figma のフレームができ、その中にページの DOM 構造を反映した入れ子のフレームが並ぶ、という意味です。HTML to Frames はページと画面サイズごとに最上位フレームを 1 つ作り、結果を検証できる箇所では内側のフレームをオートレイアウトに変換します。

最上位のフレームは「domain/path?query — Screen (width)」の形式で、たとえば example.com/pricing — Desktop (1920) となります。プロトコルと www は省かれ、名前は 60 文字以内に収められるので、大量のページを取り込んでもキャンバスやレイヤーパネルで見分けやすいままです。

デスクトップの幅は、実際のデザインから実測しているからです。全幅のデザインはコンテンツのボックスを中央に置いた 1920、ボックス型のサイトは 1200 や 1440 などのボックス幅、可変幅のサイトは 1440 になります。複数ページを取り込む場合も、1 つのサイトでは同じ幅に統一されます。

必ずしもそうではありません。オートレイアウトは、すべての子要素が元の位置から 2 px 以内に収まる場合にだけ適用されます。そうでなければよりシンプルな構成を試し、それも合わなければ制約付きの絶対配置のまま残します。各フレームが絶対配置のまま残った理由は結果画面で確認できます。

無料プランでは 1 回のインポートで 1 画面です。Pro と Team では 1 回のインポートで最大 4 画面まで取得でき、デスクトップ・タブレット・モバイルをワンクリックで取得するレスポンシブセットも使えます。1 ページの全画面は 1 回のインポートとして数えられ、順番にではなく並行して取得されます。

はい。取り込んだフレームにはそれぞれ取得元の URL と幅が保存されているので、公開中のページが変わったらワンクリックで再インポートできます。新しいインポートを一から始めたり、フレームの名前を付け直したりすることなく、デザインファイルを本番環境と同じ状態に保てます。

Web ページを手で描き直すのは、もうやめましょう。

リンクを貼れば、数秒で編集できるレスポンシブな Figma レイヤーが手に入ります。無料プランでも毎月 10 回インポートできます。

クレジットカードの登録は不要です。Pro プランは Figma の中から購入できます。

Figma Community で近日公開