私はHTML5/Javascriptを使いこなしていて、わからないことがありました。html5 canvas - 幅と高さをインラインで定義する必要がありますか?
私はHTML5キャンバスで作業するためのいくつかの基本ルーチンを書こうとしていましたが、drawImage関数が何も描画していないことがわかりました。それが私のコードであると分かり、既存のチュートリアルのコード、つまりHTML5 Canvas Image Tutorialを使用しました。 Javascriptコードを外部に(つまり別のファイルとして)挿入しても、キャンバスに描画された画像は見られませんでした。
そこから、hereという完全なソースがそのままコピーされ、うまくいきました。私はなぜこれが働いたのか把握するために乱暴に始めたが、私はそうしなかった。
この違いは、逐語コードがキャンバスの幅と高さをインラインで定義していることです。私は、HTMLとCSSからスタイリングを分離する方が好きです。私がした場合、コードは機能しました:
<canvas id = "myCanvas" width = "600" height = "400"></canvas>
外部のCSSスタイルシートでキャンバスの幅と高さを定義しても機能しませんでした。
私の問題の1つは、Javascriptファイルの後にスタイルシートを含めていることでした。それを行う前に、画像onloadハンドラ内のコードが起動していることをalert()関数で確認した後でも、画像がまったく表示されませんでした。ファイルが含まれる順序を変更した後、私のイメージは表示されましたが、CSSのスタイリングが無視されたかのように、奇妙にスケーリングされました。
これはなぜですか?私は、キャンバスのプロパティがCSSで定義されている順序に関して何か不足していますか?この場合、JavascriptはCSSスタイルを無視するのはなぜですか?関連性がある場合は、ChromeとFirefoxの両方の最新バージョンでこれを試しました。
「しかし、要素はスタイルシートで任意にサイズを調整できます。レンダリング時に、イメージはこのレイアウトサイズに合わせてスケーリングされます。 'したがって、スタイルシートを使用してキャンバスのサイズを変更すると、キャンバス上のイメージが新しいサイズに合わせて拡大(拡大)されます。 –
キャンバスの実際の幅や高さを変更すると、キャンバスはクリアされます – kirilloid