0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【2026年新API】HTML in Canvas APIとは?実際に触って分かったこと

0
Posted at

HTML in Canvas APIとは

2026年にトライアルが始まったHTML in Canvas API
htmlの要素である<canvas>に対して、HTML要素を置けるようになったアップデートです

本記事では使い方とメリット、サンプルを紹介したい

以下のリンクに入り, HTML-in-Canvasを有効化する必要がある。
chrome://flags/#canvas-draw-element

HTML in Canvas APIでできること

HTML要素をCanvas内に配置

通常のHTMLと同じように、Canvasの子要素としてHTMLを配置できます。

<canvas id="canvas" layoutsubtree>
  <div class="card">カード</div>
</canvas>
ctx.drawElementImage(card, 100, 100);

CSSがそのまま使える

Canvasで角丸や影を描画する必要はありません。

.card{
  border-radius:16px;
  box-shadow:0 4px 12px rgba(0,0,0,.2);
  background:white;
}

HTMLイベントが使える

DOMイベントをそのまま利用できます。

card.addEventListener("click", () => {
  console.log("クリック");
});

card.addEventListener("pointerdown", () => {
  console.log("ドラッグ開始");
});

Canvas座標系で管理

Canvas上の任意の位置へHTMLを描画できます。

ctx.drawElementImage(card, 250, 120);

クリッピング・マスク対応

Canvasのクリッピング領域に従ってHTMLも描画されます。

ctx.save();
ctx.rect(50, 50, 200, 200);
ctx.clip();

ctx.drawElementImage(card, 180, 180);

ctx.restore();

CanvasとHTMLを一体管理

図形とHTMLを同じCanvas上で描画できます。

ctx.fillStyle = "#4CAF50";
ctx.fillRect(0, 0, 100, 100);

ctx.drawElementImage(card, 120, 20);

実際に試してみる

カードを自由に配置することができるモックが以下のものである。
http://daikou223.sakura.ne.jp/qiita/canvas-desk-cards.html
https://github.com/daikou223/CG202607/blob/master/canvas-desk-cards.html

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?