2010-12-08 19 views
3

私は私のプロジェクトをまとめました。重要な側面の1つは、ユーザーが子要素を作成/破棄/ドラッグアンドドロップすることができるドラッグ可能なキャンバスです。私は下の図を作成しました:JavascriptとJqueryでクリックアンドドラッグの "キャンバス"ユーザ領域を作成する方法は?

Canvas drag diagram

キャンバスエッジを探索するためにクリックアンドドラッグして、それらをできるように、途中でどこかにユーザーを開始します。コンテンツは「表示可能なキャンバス」ウィンドウ内でのみ見ることができます。

ユーザーが作成した要素もドラッグ可能であると見て、ユーザーがスペースバーを押したままにしておくと、「キャンバスのドラッグ」を制限することを考えていたのですが、 「キャンバスドラッグ」を達成するためのブレーンストーミング方法を助けてください。

私はJquery UI draggableのいくつかの巧妙な実装を、その子要素だけでなく、キャンバスにも使用できるのだろうかと思います。思考?

ありがとうございます!

編集:「本当であるには余りにも簡単な」そうではないしようとする試みには「一生懸命考えて、」私は表示されたアプローチを概説しました

私は、上記と同じ前提を取ったが、「キャンバス」は比例してより大きな容器内部のドラッグ可能div要素です:

Draggable diagram

誰もがnested draggables(この男が持っていた問題、)、および/またはdraggablesの経験を持っています彼らの視聴空間よりも大きい?このモデルは、キャンバス内のドラッグ可能な子要素も同様に機能するので、機能する必要があります。

ありがとうございます!

。 。 。

更新:

MapboxjQuery UI Draggableを使用して、私はドラッグとドラッグ可能な 'キャンバス' が正常に作成した 'ノードを'。問題は、「ノード」をドラッグすると「キャンバス」もドラッグされるため、(少なくともこの段階では)驚くばかりの不要な視差効果が作成されることです。

のjQuery:

$(function() { 
    $('#viewport').mapbox(); 
    $('.node').draggable({containment:"#canvas", scroll:false}); 
}); 

HTML:

<div id="viewport"> 

    <div id="canvas" style="background: url('image/1k_square.jpg') no-repeat; width: 1000px; height: 1000px;"> 
     <div class="node">&nbsp;</div> 
    </div> 
</div> <!--viewport--> 

CSS:

$('.node').click(function(e){ e.stopPropagation();});:私はすでに停止伝播を使用してみました

.node { 
    position : relative; 
    margin : 0 auto; 
    background : rgba(255,255,255,.2); 
    width : 118px; 
    height : 118px; 
    z-index : 100; 
    border : 1px dotted black; 
} 

#viewport { 
    width: 520px; 
    height: 520px; 
    margin: 20px auto; 
    overflow: hidden; 
} 

しかし、それは何もしなかった。少しの援助? :D

+0

あなたは、ユーザーがシェイプを描いてそれをドラッグできると言っていますか? – Zevan

+0

ユーザーはシェイプを描かず、コルクボードにサムネイルを作成してから、コルクボードをドラッグすることができます。 (あなたが尋ねているのであれば、ユーザーはサムタックノートをドラッグすることもできます。) – jlmakes

答えて

3

あなたはとてもそうです。しかし、ドラッグするとどうなるか考えてみましょう。それはマウスで始まります。 「クリック」とは、マウス操作の後にマウスを置くことです。あなたがmousedownのPropagationを停止した場合は、クリックする代わりに、目的の効果が得られるはずです。

+1

マップボックスのソースを見ながら、文字通り数分前に同様の考えをしました。 'クリック'してから 'mousemove'が伝播を止めようとしたのですが、あなたはそれを釘付けにしました!!!! 'mousedown'は伝播を止めるためのものです... http://labs.inversepenguin.comをチェック!! – jlmakes

+0

これまでのところ涼しくなっています...このプロジェクトの進め方に興味があります! –

関連する問題