ピクセルとレイヤーの違い
HTML to canvas:Figmaキャンバス上で編集できるレイヤーとして配置
ビットマップのスクリーンショットライブラリが返すのはピクセルです。HTML to Framesは、ページを変更可能なベクター、テキスト、フレームとしてFigmaキャンバスに配置します。
- ラスター画像ではなく、編集可能なテキストとSVGベクター
- 本物のcanvasやWebGLのボックスは、そのボックスの画像として保持
- アニメーションを停止して、きれいで一貫したフレームに
Figma Communityで近日公開
「HTML to canvas」には2つの異なる意味があり、ツールを選ぶ前に区別しておくと役立ちます。開発者が指すのは多くの場合html2canvasです。これはDOMをたどってページの近似を<canvas>要素に描画するJavaScriptライブラリ、あるいは表示されているピクセルを撮るブラウザのスクリーンショットのことです。一方、デザイナーが指すのはたいてい別のもの、つまりWebページをFigmaキャンバスに取り込んで作業できるようにすることです。
どちらもページのように見えるものを作りますが、作業に使えるのは一方だけです。ビットマップは、どれほど鮮明でも色付きピクセルの格子にすぎません。誤字を直すことも、フォントサイズを変えることも、ボタンの色を変えることも、カードを新しいレイアウトに移すこともできません。できるのは切り抜き、拡大縮小、上から塗ることだけです。
EUREKA!が開発したFigmaプラグイン、HTML to Framesは、2つ目の意味を文字どおりに実現します。実際のブラウザでページをレンダリングし、すべての要素の算出済みジオメトリとスタイルを読み取り、ネイティブなレイヤーとしてFigmaキャンバス上にページを再現します。ページ構造を反映したフレーム、元のスタイルを保った編集可能なテキスト、ベクターに変換されたSVG、元のフィットで配置された画像です。レイアウトは検証できる箇所でAuto Layout(オートレイアウト)に変換されるため、サイズを変えても結果が追従します。
ピクセルが正解となるケースが1つあり、プラグインはそれを意図的に扱います。本物の<canvas>要素やWebGLシーンには再構築すべきDOMが内部にないため、そのボックスはスクリーンショット画像として取り込まれ、ページの残りは編集可能なままです。
この比較の詳しい解説はHTML to canvasと編集可能なレイヤーの比較をお読みください。基本の変換についてはHTML to Figmaから、変換される内容は機能ページでご覧いただけます。
ページをFigmaキャンバスに配置する
- 01
ページの取り込み元を選ぶ
URL、ローカルのファイルやフォルダー、貼り付けたHTMLとCSS、Chromeのタブ、またはMCP経由のAIツールから選びます。
- 02
ブラウザにレンダリングさせる
ページは隔離されたブラウザで読み込まれ、アニメーションは停止され、WebGLは数フレーム後に固定されます。
- 03
キャンバスにレイヤーを取得
フレーム、テキスト、ベクター、画像が現在のFigmaページに配置され、すぐに編集できます。
キャンバス上でレイヤーがビットマップに勝る理由
テキストはテキストのまま
見出しと本文は、文字間隔、行の高さ、混在するスタイルを保った編集可能なテキストとして届きます。
SVGはベクターに
アイコンとロゴは編集可能なベクターレイヤーに変換され、ぼやけることなく色やサイズを変更できます。
選択できる構造
ネストされたフレームがページ構造に沿っているため、画像を切り抜く代わりにカードを1枚だけ選べます。
ピクセルは必要な箇所だけ
iframe、ポスター画像のない動画、WebGLや3Dのcanvasボックスは、そのボックスのスクリーンショット画像として取り込まれます。
停止した、きれいなキャプチャ
アニメーションを一時停止して一貫したフレームを得るため、半分フェードした要素が写り込みません。
参照レイヤー
Proでは、非表示・ロック済みのスクリーンショットレイヤーで、再構築結果を元のピクセルと比較できます。
html2canvasやスクリーンショットと編集可能なレイヤーの比較
スクリーンショット方式とHTML to Framesは、同じレンダリング済みのページから出発しますが、たどり着く場所は大きく異なります。
| html2canvas / ブラウザのスクリーンショット | Figmaキャンバス上のHTML to Frames | |
|---|---|---|
| 出力 | 1枚のラスター画像 | フレーム、テキスト、ベクター、画像 |
| テキストの編集 | 不可 | その場で編集 |
| 拡大縮小 | 1倍を超えるとぼやける | ベクターは鮮明なまま |
| レイアウト | 固定ピクセル | 検証できた箇所はAuto Layout、それ以外は制約 |
| 1つの要素を選択 | 手作業で切り抜き | フレームをクリック |
| 主な用途 | バグ報告、サムネイル、プレビュー | リデザイン、監査、ハンドオフ、デザインシステム |
また、html2canvasはCSSのレンダリングをJavaScriptで再実装しているため、ブラウザがサポートする機能を取りこぼすことがあります。HTML to Framesは、実際のChromiumベースのブラウザがレンダリングを終えたあとに値を読み取り、Figmaのプロパティに対応付けます。円錐グラデーションや繰り返しグラデーションを含むグラデーション、影、ブレンドモード、ぼかしと背景のぼかし、clip-path、mask-imageなどです。
スクリーンショットにも役割はあります。手早く見た目を記録したいだけならビットマップで十分です。何かを変更するつもりなら、レイヤーがあればページを描き直す手間が省けます。
目安として、次のステップがコメントやチケットならスクリーンショットで十分です。次のステップがFigmaを開いて何かを変更することなら、レイヤーとしてインポートしましょう。
本物の<canvas>やWebGL要素はどうなるか
ページ上には、もともとピクセルであるコンテンツもあります。<canvas>要素はJavaScriptで描画し、WebGLシーンはGPUで3Dグラフィックスをレンダリングします。これらのボックスの内部には読み取れるDOMがないため、どのツールでも意味のあるベクターレイヤーに変換することはできません。
HTML to Framesは、黙って失敗するのではなく、これらを明示的に扱います。
- ボックスは正確な位置とサイズでスクリーンショット画像としてキャプチャされます。
- WebGLシーンは数フレーム後に固定されるため、空白や遷移途中のフレームではなく安定した画像が得られます。
- ボックスの周囲にあるもの、たとえば上に重ねて配置された見出し、ボタン、オーバーレイなどは、編集可能なレイヤーのままです。
レイヤーにできない他の埋め込みコンテンツにも同じルールが適用されます。地図などのiframe、ポスター画像のない動画、objectやembed要素です。それぞれが自身のボックスの画像になり、警告があれば結果画面に一覧表示されます。
つまり、3Dのヒーローを持つランディングページでも、実際に使えるデザインに変換されます。ヒーロー画像を新しいビジュアルに差し替え、その上のコピーを書き換え、余白を調整できる一方で、ページの残りはAuto Layoutを保ちます。このレイアウトがどのように推定されるかはAuto Layoutの仕組みをご覧ください。
動きのあるページからきれいなフレームを得る
モダンなページは動きます。カルーセルは回転し、要素はスクロールでフェードインし、Cookieバナーはスライドアップし、ヒーローセクションは読み込み時にアニメーションします。単純なキャプチャでは、その一瞬に起きていたことがそのまま固定されてしまいます。
HTML to Framesは通常の訪問者が見るとおりにページをキャプチャし、結果を予測しやすくするためのいくつかの設定を用意しています。
アニメーションの停止
アニメーションを停止し、各要素が遷移途中ではなく落ち着いた状態でキャプチャされるようにします。
Hide cookie banners & popups
このオプションをオンにすると、キャプチャ前に同意バナーやポップアップが非表示になり、キャンバス上のページを覆わなくなります。
Extra wait
コンテンツの読み込みが遅いページには、キャプチャ前に追加の待ち時間を設定できます。Extra wait(追加待機)はProのオプションです。
Full page
必要に応じて、スクロールするページ全体か最初の1画面だけをキャプチャします。
これらのオプションは、ページの取り込み元がURL、ローカルファイル、Chrome拡張機能のどれであっても適用されます。デフォルト表示ではなく、メニューが開いた状態など特定の状態が欲しい場合は、拡張機能を使うのが適しています。
それでもアニメーションの途中でキャプチャされたり何かが欠けていたりする場合は、結果画面に警告が表示されます。たいていは別のオプションで1クリック再インポートするのが最も早い解決策です。
よくある質問
いいえ。html2canvasはDOMの近似をビットマップに描画するJavaScriptライブラリです。HTML to Framesは、ページを編集可能なレイヤーとしてFigmaキャンバス上に再構築するFigmaプラグインです。フレーム、テキスト、ベクター、画像として取り込み、検証できる箇所ではAuto Layoutを適用します。
はい。テキストはネイティブなFigmaテキストレイヤーとして取り込まれ、1つの段落内で混在するスタイル、リンク、文字間隔、行の高さ、text-transformも含まれます。フォントが利用できない場合は、ページを構築する前にMissing fonts画面で代替フォントを選べ、その選択は記憶されます。
内部に再構築できるDOMがないため、そうしたボックスはそれぞれ正確な位置とサイズでスクリーンショット画像として取り込まれます。WebGLは安定した画像を得るため数フレーム後に固定されます。ボックスの周囲はすべて編集可能なレイヤーのままです。
はい、Proで可能です。Reference screenshotオプションは、インポートの下に非表示・ロック済みの画像レイヤーを追加します。再構築したレイヤーを元のレンダリングと比較したいときに表示を切り替え、それ以外のときは邪魔にならないよう非表示にしておけます。
アニメーションが停止され、選択すればCookieバナーやポップアップも非表示になるため、キャプチャには落ち着いた状態のページが写ります。スクリーンショットはその瞬間に画面にあったものをそのまま写します。メニューが開いた状態など特定の状態が必要な場合は、Chrome拡張機能をご利用ください。
線形・放射状・円錐グラデーション、内側と外側の影、text-shadow、不透明度、ブレンドモード、ぼかしと背景のぼかし、clip-path、mask-image、回転と拡大縮小です。傾斜(skew)と3D変形、path()のclip-path、複数レイヤーのマスク、Display-P3カラーはまだ対応していません。全一覧は機能ページにあります。
関連情報
Webをなぞって描き直すのは、もう終わりにしましょう。
リンクを貼るだけで、編集可能でレスポンシブな本物のFigmaレイヤーが数秒で手に入ります。無料で始められ、毎月10回インポートできます。
クレジットカード不要。ProはFigma内で購入できます。
Figma Communityで近日公開