3

HTML ページで DIV 要素のサイズを変更してドラッグしたいと考えています。私が使用したコードは次のとおりです。 Javascript:

 <script type="text/javascript" src="dragresize.js"></script>
<script language="javascript" type="text/javascript"> 
var dragresize = new DragResize('dragresize',
 { minWidth: 50, minHeight: 50, minLeft: 20, minTop: 20, maxLeft: 600, maxTop: 600 });

// Optional settings/properties of the DragResize object are:
//  enabled: Toggle whether the object is active.
//  handles[]: An array of drag handles to use (see the .JS file).
//  minWidth, minHeight: Minimum size to which elements are resized (in pixels).
//  minLeft, maxLeft, minTop, maxTop: Bounding box (in pixels).

// Next, you must define two functions, isElement and isHandle. These are passed
// a given DOM element, and must "return true" if the element in question is a
// draggable element or draggable handle. Here, I'm checking for the CSS classname
// of the elements, but you have have any combination of conditions you like:

dragresize.isElement = function(elm)
{
 if (elm.className && elm.className.indexOf('drsElement') > -1) return true;
};
dragresize.isHandle = function(elm)
{
 if (elm.className && elm.className.indexOf('drsMoveHandle') > -1) return true;
};

// You can define optional functions that are called as elements are dragged/resized.
// Some are passed true if the source event was a resize, or false if it's a drag.
// The focus/blur events are called as handles are added/removed from an object,
// and the others are called as users drag, move and release the object's handles.
// You might use these to examine the properties of the DragResize object to sync
// other page elements, etc.

dragresize.ondragfocus = function() { };
dragresize.ondragstart = function(isResize) { };
dragresize.ondragmove = function(isResize) { };
dragresize.ondragend = function(isResize) { };
dragresize.ondragblur = function() { };

// Finally, you must apply() your DragResize object to a DOM node; all children of this
// node will then be made draggable. Here, I'm applying to the entire document.
dragresize.apply(document);
</script>

CSS

<style type="text/css">
.drsElement { 
position: relative;
 border: 1px solid #333;
}

.drsMoveHandle {
 height: 10px;
 border-bottom: 1px solid #666;
 cursor: move;
}

.dragresize {
 position: absolute;
 width: 5px;
 height: 5px;
 font-size: 1px;
 background: #EEE;
 border: 1px solid #333;
}


.dragresize-tl {
 top: -8px;
 left: -8px;
 cursor: nw-resize;
}
.dragresize-tm {
 top: -8px;
 left: 50%;
 margin-left: -4px;
 cursor: n-resize;
}
.dragresize-tr {
 top: -8px;
 right: -8px;
 cursor: ne-resize;
}

.dragresize-ml {
 top: 50%;
 margin-top: -4px;
 left: -8px;
 cursor: w-resize;
}
.dragresize-mr {
 top: 50%;
 margin-top: -4px;
 right: -8px;
 cursor: e-resize;
}

.dragresize-bl {
 bottom: -8px;
 left: -8px;
 cursor: sw-resize;
}
.dragresize-bm {
 bottom: -8px;
 left: 50%;
 margin-left: -4px;
 cursor: s-resize;
}
.dragresize-br {
 bottom: -8px;
 right: -8px;
 cursor: se-resize;
}
</style>

HTML

<table cellpadding="5" cellspacing="0" width="100%" style="margin:auto;">
            <tr>
                <td><div class="drsElement drsMoveHandle" id="output1" style="font-weight:bold;height:20px;margin-top:40px"></div></td>
            </tr>
            <tr>
                <td><div class="drsElement drsMoveHandle" id="output2" style="height:40px;margin-top:30px"></div></td>
            </tr>   
            <tr>
                <td><div class="drsElement drsMoveHandle" id="output3" style="height:50px;margin-top:40px;"></div></td>
            </tr>   
        </table>

問題は、サイズを変更できる場所にドラッグできないことですが、DIV 要素のサイズを元のサイズから縮小することはできません。理由はわかりません..?.

4

1 に答える 1

9

TwinHelixhttp://www.twinhelix.com/javascript/dragresize/のコードを使用しているようです

1)使用しているコードをどこで入手したかを常に明確に述べて、作者の功績を認めてください。TwinHelixから入手できるパッケージを使用していることをお知らせください。故意にまたは省略して、表示するコードが自分のものであると人々に思わせないでください。どこかで手に入れた場合は教えてください。

2)私はそのコードを使用していくつかの可能性を探りましたが、問題はありませんでした。divのサイズを、元のサイズよりも小さくするなど、任意のサイズに変更できました。

TwinHelixサイトにアクセスして現在のコードを取得し、最初からやり直して、正しく使用していることを確認することをお勧めします。

divを作成できる大きさや小ささの制限、上下に移動できる量の制限などを設定できます。

少なくとも、それが実行していることの基本と、実行したいことを実行するためにdivをコーディングする方法を理解していることを確認してください。

TwinHelixのデモページを取得し、すべてのJavascriptなどを使用してシステムにコピーし、システムで動作させます。次に、そのページを希望どおりに機能させます(分割サイズ、コンテンツなど)。分割が希望どおりに機能するようになったら、コードを独自のページに統合します。どこかからコードを取り出して、すぐに飛び込んでページに配置しないでください。物を分離し、新しいものだけで別のテストページを作成し、この例ではドラッグしてサイズを変更してから、それをページに統合します。

ページに統合すると同時に、希望どおりに機能するように変更しようとすると、処理できるよりも多くの問題が発生します。

プログラミングを行うときは、簡単に処理できるチャンクに分割し、希望どおりに機能させてから、それらを組み合わせて全体を作成します(私は39年以上「これ」に携わっており、ほんの少しの経験があります) )。

サンプルコードと他のコードのコメントを読み、少なくとも誰が部門を定義するかを理解してください。

何をしているのかわからない場合は、コードやCSSを変更しないでください。変更すると、どこから来たのかわからないまま問題が発生する可能性があります。

3)いくつかの問題を除いて、TwinHelixコードはうまく機能します。私の問題は、機能を拡張して新しい機能を追加しようとすることでした。思い通りに動作するようになりましたが、気に入らない癖がいくつかあります。それで、私はそれをする他のいくつかの方法を見ています。いつ行うかはわかりませんが、いつ行うかは、自分のWebサイト(http://www.bobnovell.com )にページを投稿します。---現在、それほど多くはないことに注意してください。 (2012年12月28日現在)でも、時間があるときに追加することがたくさんあります。

4)適度に優れたドラッグ機能については、http: //tool-man.org/ToolManDHTML/を参照してください-「基本的なドラッグ可能なレイヤー」サイズ変更はありませんが、うまく機能します。唯一の問題は、zIndexの設定に関係しています。分割をもたらすためにmouseDownsを処理するコードを追加しました

5)この質問で提供したJavaScript、CSS、HTMLのすべてのコードを見て、アドバイスを与える人はいないと思います。単に大きすぎます。

また、質問がある場合は、作者に相談してください。

于 2012-12-28T06:41:14.347 に答える