1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
|
---
title: '<canvas>: グラフィックキャンバス要素'
slug: Web/HTML/Element/canvas
tags:
- Canvas
- Element
- HTML
- HTML scripting
- HTML5
- Reference
- Web
translation_of: Web/HTML/Element/canvas
---
<div>{{HTMLRef}}</div>
<p><strong>HTML の <code><canvas></code> 要素</strong> と <a href="/ja/docs/Web/API/Canvas_API">Canvas スクリプティング API</a> や <a href="/ja/docs/Web/API/WebGL_API">WebGL API</a> を使用して、グラフィックやアニメーションを描画することができます。</p>
<table class="properties">
<tbody>
<tr>
<th scope="row"><a href="/ja/docs/Web/HTML/Content_categories">コンテンツカテゴリ</a></th>
<td><a href="/ja/docs/Web/HTML/Content_categories#Flow_content">フローコンテンツ</a>, <a href="/ja/docs/Web/HTML/Content_categories#Phrasing_content">記述コンテンツ</a>, <a href="/ja/docs/Web/HTML/Content_categories#Embedded_content">埋め込みコンテンツ</a>, 知覚可能コンテンツ</td>
</tr>
<tr>
<th scope="row">許可されている内容</th>
<td>透過的コンテンツ、ただし子孫に<a href="/ja/docs/Web/HTML/Content_categories#Interactive_content">対話型コンテンツ</a>のうち {{HTMLElement("a")}} 要素, {{HTMLElement("button")}} 要素, {{HTMLElement("input")}} 要素の {{htmlattrxref("type", "input")}} 属性が <code>checkbox</code>, <code>radio</code>, <code>button</code> のいずれか以外を含まないもの</td>
</tr>
<tr>
<th scope="row">タグの省略</th>
<td>{{no_tag_omission}}</td>
</tr>
<tr>
<th scope="row">許可されている親要素</th>
<td><a href="/ja/docs/Web/HTML/Content_categories#Phrasing_content">記述コンテンツ</a>を受け入れるすべての要素</td>
</tr>
<tr>
<th scope="row">暗黙の ARIA ロール</th>
<td><a href="https://www.w3.org/TR/html-aria/#dfn-no-corresponding-role">対応するロールなし</a></td>
</tr>
<tr>
<th scope="row">許可されている ARIA ロール</th>
<td>すべて</td>
</tr>
<tr>
<th scope="row">DOM インターフェイス</th>
<td>{{domxref("HTMLCanvasElement")}}</td>
</tr>
</tbody>
</table>
<h2 id="Attributes" name="Attributes">属性</h2>
<p>他のすべての HTML 要素と同様に、<a href="/ja/docs/Web/HTML/Global_attributes">グローバル属性</a>を持ちます。</p>
<dl>
<dt>{{htmlattrdef("height")}}</dt>
<dd>CSS ピクセルで示した座標空間の高さ。既定では150ピクセルに設定されています。</dd>
<dt>{{htmlattrdef("moz-opaque")}} {{non-standard_inline}} {{deprecated_inline}}</dt>
<dd>canvas に半透明性がファクターになるかを知らせます。キャンバスは半透明性がないことがわかっていれば、描画パフォーマンスを最適化できます。これは Mozilla ベースのブラウザーしか対応していません。代わりに標準化された {{domxref("HTMLCanvasElement.getContext()", "canvas.getContext('2d', { alpha: false })")}} を使用してください。</dd>
<dt>{{htmlattrdef("width")}}</dt>
<dd>CSS ピクセルで示した座標空間の幅。既定では300ピクセルに設定されています。</dd>
</dl>
<h2 id="Usage_notes" name="Usage_notes">使用上の注意</h2>
<h3 id="Alternative_content" name="Alternative_content">代替コンテンツ</h3>
<p><code><canvas></code> のブロックの中で、代替コンテンツを提供することが可能 (また、提供すべき) です。その内容物は、 canvas に対応しない古いブラウザーおよび JavaScript が無効であるブラウザーで描画されます。有用な代替テキストやサブ DOM のヘルプを提供すると、<a href="/ja/docs/Web/API/Canvas_API/Tutorial/Hit_regions_and_accessibility">キャンバスがよりアクセシブルになります</a>。</p>
<h3 id="Required_<canvas>_tag" name="Required_<canvas>_tag"></canvas> タグが必要</h3>
<p>{{HTMLElement("img")}} 要素とは異なり、 {{HTMLElement("canvas")}} 要素は終了タグ (<code></canvas></code>) が<strong>必要です</strong>。</p>
<h3 id="Sizing_the_canvas_using_CSS_versus_HTML" name="Sizing_the_canvas_using_CSS_versus_HTML">CSS と HTML におけるキャンバスの寸法指定の違い</h3>
<p>表示されるキャンバスの寸法は、スタイルシートを用いて変更できますが、そうすると画像はスタイルで設定した寸法に合うように拡大縮小され、最終的なグラフィックが歪んで表示されることがあります。</p>
<p>キャンバスの寸法は、 HTML または JavaScript を用いて <code>width</code> および <code>height</code> 属性を <code><canvas></code> 要素に直接設定するした方がいいでしょう。</p>
<h3 id="Maximum_canvas_size" name="Maximum_canvas_size">キャンバスの最大寸法</h3>
<p><code><canvas></code> 要素の最大寸法はとても広いのですが、正確な寸法はブラウザーに依存します。以下のものは様々なテストやその他の情報源 (<a href="https://stackoverflow.com/questions/6081483/maximum-size-of-a-canvas-element">Stack Overflow</a> など) から収集したいくらかのデータです。</p>
<table class="standard-table">
<thead>
<tr>
<th scope="col">ブラウザー</th>
<th scope="col">最大高</th>
<th scope="col">最大幅</th>
<th scope="col">最大面積</th>
</tr>
</thead>
<tbody>
<tr>
<td>Chrome</td>
<td>32,767 pixels</td>
<td>32,767 pixels</td>
<td>268,435,456 pixels (つまり 16,384 x 16,384)</td>
</tr>
<tr>
<td>Firefox</td>
<td>32,767 pixels</td>
<td>32,767 pixels</td>
<td>472,907,776 pixels (つまり 22,528 x 20,992)</td>
</tr>
<tr>
<td>Safari</td>
<td>32,767 pixels</td>
<td>32,767 pixels</td>
<td>268,435,456 pixels (つまり 16,384 x 16,384)</td>
</tr>
<tr>
<td>IE</td>
<td>8,192 pixels</td>
<td>8,192 pixels</td>
<td>?</td>
</tr>
</tbody>
</table>
<div class="blockIndicator note">
<p><strong>注</strong>: 寸法や面積の最大値を超えると、キャンバスが使用できなくなります。 — 描画コマンドが動作しなくなります。</p>
</div>
<h2 id="Examples" name="Examples">例</h2>
<h3 id="HTML">HTML</h3>
<p>このコードスニペットは、 HTML 文書に canvas 要素を追加します。ブラウザーがキャンバスをレンダリングできない場合や、キャンバスを読み込めない場合には、代替テキストが提供されます。</p>
<pre class="brush: html notranslate"><canvas width="300" height="300">
キャンバスの表示内容を説明する代替テキストです。
</canvas>
</pre>
<h3 id="JavaScript">JavaScript</h3>
<p>それから JavaScript コード内で {{domxref("HTMLCanvasElement.getContext()")}} を呼び出して描画コンテキストを取得し、キャンバス上に描画を開始します。</p>
<pre class="brush: js notranslate">const canvas = document.querySelector('canvas');
const ctx = canvas.getContext('2d');
ctx.fillStyle = 'green';
ctx.fillRect(10, 10, 100, 100);</pre>
<h3 id="Result" name="Result">結果</h3>
<p>{{EmbedLiveSample('Examples')}}</p>
<h2 id="Accessibility_concerns" name="Accessibility_concerns">アクセシビリティの考慮</h2>
<h3 id="Alternative_content_2" name="Alternative_content_2">代替コンテンツ</h3>
<p><code>canvas</code> 要素は単なるビットマップであり、描かれたオブジェクトに関する情報は提供しません。キャンバスのコンテンツには、セマンティック HTML のようなアクセシビリティツールには公開されていません。一般的に、アクセシビリティに配慮したウェブサイトやアプリではキャンバスを使用しないでください。アクセシビリティを改善するには、以下のガイドが役立ちます。</p>
<ul>
<li><a href="/ja/docs/Web/API/Canvas_API/Tutorial/Hit_regions_and_accessibility">MDN ヒット領域とアクセシビリティ</a></li>
<li><a href="https://www.w3.org/WAI/PF/HTML/wiki/Canvas_Accessibility_Use_Cases">Canvas accessibility use cases</a></li>
<li><a href="https://www.w3.org/html/wg/wiki/AddedElementCanvas">Canvas element accessibility issues</a></li>
<li><a href="https://developer.paciellogroup.com/blog/2012/06/html5-canvas-accessibility-in-firefox-13/">HTML5 Canvas Accessibility in Firefox 13 – by Steve Faulkner</a></li>
<li><a href="https://html.spec.whatwg.org/multipage/scripting.html#best-practices">Best practices for interactive canvas elements</a></li>
</ul>
<h2 id="Specifications" name="Specifications">仕様書</h2>
<table class="standard-table">
<thead>
<tr>
<th scope="col">仕様書</th>
<th scope="col">状態</th>
<th scope="col">備考</th>
</tr>
</thead>
<tbody>
<tr>
<td>{{SpecName('HTML WHATWG', 'scripting.html#the-canvas-element', '<canvas>')}}</td>
<td>{{Spec2('HTML WHATWG')}}</td>
<td></td>
</tr>
<tr>
<td>{{SpecName('HTML5 W3C', 'semantics-scripting.html#the-canvas-element', '<canvas>')}}</td>
<td>{{Spec2('HTML5 W3C')}}</td>
<td>初回定義</td>
</tr>
</tbody>
</table>
<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
<p>{{Compat("html.elements.canvas")}}</p>
<h2 id="See_also" name="See_also">関連情報</h2>
<ul>
<li><a href="/ja/docs/Web/API/Canvas_API">MDN の canvas ポータル</a></li>
<li><a href="/ja/docs/Web/API/Canvas_API/Tutorial">Canvas チュートリアル</a></li>
<li><a href="https://simon.html5.org/dump/html5-canvas-cheat-sheet.html">Canvas チートシート</a></li>
<li><a href="/ja/demos/tag/tech:canvas">Canvas に関するデモ</a></li>
<li><a href="https://developer.apple.com/library/archive/documentation/AudioVideo/Conceptual/HTML-canvas-guide/Introduction/Introduction.html">Apple によるキャンバスの紹介</a></li>
</ul>
|