2011-02-09 29 views
18

キャンバスタグを使用してペイントブラシタイプのアプリケーションを作成しました。私はマウスをドラッグしているときにHTML5キャンバス上にカーソルを移動

<canvas id="draw" style="cursor: url(image/pencil.cur)"> 

が、私はこれを達成してきたが、私は画像

+1

[あなたのHTMLにCSSを入れないようにする](http://phrogz.net/CSS/HowToDevelopWithCSS.html#separatestyle)に注意してください。 – Phrogz

+1

http://jsfiddle.net/Mutant_Tractor/DMBWC/1/この例では、ページ上で選択可能なテキストがある場合は機能しないことを示しています。上記の例でキャンバス上をドラッグすると、それでもテキスト選択カーソルに変わります。 –

答えて

38

マウスボタンが要素の上にダウンしているときにカーソルを変更するには:active CSSの擬似クラスを使用します。

#draw:active { 
    cursor: url(image/pencil.cur); 
} 

作業例:http://jsfiddle.net/nXv63/

+3

使用することを考えていない:クリック不可能な要素でアクティブ...クール:) – Omiod

+7

** [hydrarulz](http://stackoverflow.com/users/151244)のコメント(拒否edit):** Chromeに ':focus'を追加する必要があります。場合によっては ':active'だけでは動作しません。 '#draw:active {'を#draw:active、#draw:focus {'に置き換えてください。これのためには – Anne

+0

+1。十字線の代わりに、カーソルを使用します。 – fedmich

0

つを描画するために、マウスをドラッグしながら、私は、カーソルを変更するものとする方法を見つけ出すカントマウスがキャンバスカーソルの変更の上にあるときに、というたかりました

  1. はこのjQueryのフラグメントと同じラインに沿って、カーソルを変更するには、いくつかのJavaScriptを使用してください:私はの一つは、あなたが望むものを達成かもしれない、このためと考えることができますアプローチ

    $('canvas#draw').css('cursor', 'url(image/another-cursor.cur)'); 
    

    マウスボタンを押したときにそのイベントを使用し、リリース時に元の状態に戻す場合は、それがあなたが望む正確な効果があると思います。

  2. キャンバス自体に「カーソル」を描画し、キャンバス上でマウスの位置を追跡させます。この方法で、Photoshopスタイルのサークル(その他)を描いて、どこで描画を行うかを指定できます。私はこのアプローチでパフォーマンスがどのようになるかはわかりませんが(私はそれを試していませんでしたが)、うまくいくはずです。キャンバスのマウス移動で発生したイベントを使用します。これはおそらく、ペイントの配置先を追跡するために既に使用しているものです。

0

キャンバスに「ドラッグ」クラスを追加します。

は次に、このスタイルを追加の上にある(とのmouseUpにそれを削除)アクションをドラッグ:

canvas {cursor: default;} 
canvas.dragging {cursor: crosshair;} 
+0

これは私にとってはうまくいきませんでした!それでも選択カーソルに変わります。 – Elisabeth

6

まだこのWebKitのバグに対する解決策を探しているいずれかの場合:https://bugs.webkit.org/show_bug.cgi?id=105355、これは私がやったことです。

body要素にこのプロパティを追加して、ページ内のすべてのテキストを選択できないようにしました。

body { 
    -webkit-touch-callout: none; 

    -webkit-user-select: none; 

    -moz-user-select: none; 

    user-select: none; 
} 

実際に選択可能な要素が必要な場合は、CSSを変更する必要があります。

+0

+1、実用的な解決策ではありませんが、興味深い回避策はあります。この問題を経験している人は多いようですが、できるだけ多くの人がバグレポートにコメントを追加して、開発者がそれを修正することの重要性を理解できるようにすることは非常に意味があります。 –

+0

私のために働いた。私はキャンバスコンテナにこれらのプロパティを設定し、行って良かった! – Lorenzo

関連する問題