2017-03-05 5 views
-2

これはJSで可能なのですか? いくつかの幅のテキストボックスを作成したいと思います。しかし、私はコントロールを追加して、ユーザーが単に幅と位置を変更できるようにしたい。 私は学校で卒業式の印刷を自動化したいと思っています。フォームフィリング中に素早く簡単に調整できるツールが必要です。Javascriptの可変幅のテキストボックス

+0

内にある場合ので、我々は要素をドラッグしていないあなたが何をした?これらの行を追加しましたかコードを表示する。 –

+0

テキストエリアを使用すると、ほとんどのブラウザでサイズを変更できます –

+0

私はまだ表示するコードがありません。私はまだJSを学んでいて、このプロジェクトは将来です。私はtextareaは、それが右下だけ変更することができると思うので、私はしないと思う。 – Zoran

答えて

0

interact.jsとその例を参照してください。それを組み合わせるとinteract.jsさんは、機能をドラッグすると、設定が完了している

enter image description here

あなたはネイティブこれで<textarea>要素のサイズを変更できることを覚えておいてください。

ここにスニペットがあります:// *と記されている行は私によって追加されました。そうでない場合は、interact.jsのウェブサイトからのものです。

私はマウスが「サイズ変更矩形」

// target elements with the "draggable" class 
 
interact('.draggable') 
 
    .draggable({ 
 
    // enable inertial throwing 
 
    inertia: true, 
 
    // keep the element within the area of it's parent 
 
    restrict: { 
 
     restriction: "parent", 
 
     endOnly: true, 
 
     elementRect: { top: 0, left: 0, bottom: 1, right: 1 } 
 
    }, 
 
    // enable autoScroll 
 
    autoScroll: true, 
 

 
    // call this function on every dragmove event 
 
    onmove: dragMoveListener, 
 
    // call this function on every dragend event 
 
    onend: function (event) { 
 
     var textEl = event.target.querySelector('p'); 
 

 
     textEl && (textEl.textContent = 
 
     'moved a distance of ' 
 
     + (Math.sqrt(event.dx * event.dx + 
 
        event.dy * event.dy)|0) + 'px'); 
 
    } 
 
    }); 
 

 
    function dragMoveListener (event) { 
 
    var rel_x = event.clientX - event.target.getBoundingClientRect().left; // * 
 
    var rel_y = event.clientY - event.target.getBoundingClientRect().top; // * 
 
    var w  = event.target.offsetWidth;         // * 
 
    var h  = event.target.offsetHeight;         // * 
 
    var threshold = 20;             // * 
 
    if(rel_x > w - 20 && rel_y > h - 20) return;       // * 
 
    
 
    var target = event.target, 
 
     // keep the dragged position in the data-x/data-y attributes 
 
     x = (parseFloat(target.getAttribute('data-x')) || 0) + event.dx, 
 
     y = (parseFloat(target.getAttribute('data-y')) || 0) + event.dy; 
 
    // translate the element 
 
    target.style.webkitTransform = 
 
    target.style.transform = 
 
     'translate(' + x + 'px, ' + y + 'px)'; 
 

 
    // update the posiion attributes 
 
    target.setAttribute('data-x', x); 
 
    target.setAttribute('data-y', y); 
 
    } 
 

 
    // this is used later in the resizing and gesture demos 
 
    window.dragMoveListener = dragMoveListener;
#drag-1, #drag-2 { 
 
    width: 25%; 
 
    height: 100%; 
 
    min-height: 6.5em; 
 
    margin: 10%; 
 
    font-family: monospace; 
 
    color: black; 
 

 
    -webkit-transform: translate(0px, 0px); 
 
      transform: translate(0px, 0px); 
 
} 
 

 
#drag-me::before { 
 
    content: "#" attr(id); 
 
    font-weight: bold; 
 
}
<script src="http://code.interactjs.io/v1.2.6/interact.min.js"></script> 
 
<textarea id="drag-1" class="draggable"> 
 
    <p> You can drag one element </p> 
 
</textarea> 
 
<textarea id="drag-2" class="draggable"> 
 
    <p> with each pointer </p> 
 
</textarea>

+0

ありがとう!冒険者!これだよ! – Zoran

+0

@ Zoranこの回答をアップヴォートし、問題が解決したらそれを受け入れてください。 –

関連する問題