1

I am working on an application where the UI is going to be web based. The target browser is Internet Explorer ONLY

I am wondering, for the UI, at which point does it become beneficial to use Canvas and draw all your elements yourself rather than using standard HTML elements?

Or is the case that you should ONLY use canvas if there is something that you can't do with HTML elements?

Ideally, I am looking for a link to a discussion or an answer and some examples explaining why. If it is just down to what you prefer, then say, but otherwise are there any considerations?

Thanks.

4

2 に答える 2

2

「キャンバスベースのUIコンポーネントを作成することは意味がありますか?」に対する私の答えを読んでください。。

要するに、それは悪い考えです。

Canvasの仕様自体は、キャンバスでUIコントロールを作成するのが悪い理由の一覧を示しています。アクセシビリティは悪夢です。仕様を引用するには:

作成者は、canvas要素を使用したテキスト編集コントロールの実装を避ける必要があります。そうすることには多くの欠点があります:

  • カレットのマウス配置を再実装する必要があります。
  • カレットのキーボードの動きを再実装する必要があります(複数行のテキスト入力の場合は、おそらく行をまたいで)。
  • テキストフィールドのスクロールを実装する必要があります(長い行の場合は水平方向、複数行の入力の場合は垂直方向)。
  • コピーアンドペーストなどのネイティブ機能を再実装する必要があります。
  • スペルチェックなどのネイティブ機能を再実装する必要があります。
  • ドラッグアンドドロップなどのネイティブ機能を再実装する必要があります。
  • ページ全体のテキスト検索などのネイティブ機能を再実装する必要があります。
  • カスタムテキストサービスなど、ユーザーに固有のネイティブ機能を再実装する必要があります。各ユーザーが異なるサービスをインストールしている可能性があり、そのようなサービスの可能性のある無制限のセットがあるため、これはほぼ不可能です。
  • 双方向のテキスト編集を再実装する必要があります。
  • 複数行のテキスト編集の場合、関連するすべての言語に対して行の折り返しを実装する必要があります。
  • テキストの選択を再実装する必要があります。
  • 双方向テキスト選択のドラッグを再実装する必要があります。
  • プラットフォームネイティブのキーボードショートカットを再実装する必要があります。
  • プラットフォームネイティブの入力方式エディター(IME)を再実装する必要があります。
  • 元に戻すおよびやり直し機能を再実装する必要があります。
  • カレットまたは選択後の拡大などのアクセシビリティ機能を再実装する必要があります。
于 2012-05-19T20:13:46.963 に答える
0

is the case that you should ONLY use canvas if there is something that you can't do with HTML elements?

Yes, pretty much. Canvas is for drawing - 2D right now and 3D in the future.

I don't expect that browser native controls would ever be faster to draw on canvas, by the way. You are adding at least one layer of code above an existing implementation.

于 2012-05-19T18:46:21.777 に答える