2016-10-04 24 views
0

数学は私の最も強い領域ではありませんが、これを解決するにはちょっと固執しています。xの位置に基づくスケール要素

例えば、このコードを取る:

let node = document.querySelector('div'); 
let d; 

function update({clientX}) { 
    if(!d) return; // Dragging? 

    let w = innerWidth; // Window width 
    let s = ...; // Scale value? 

    node.style.transform = `translateX(${v}) scale(${s})`; 
}; 

node.onmousedown =() => d = true; 
node.onmouseup =() => d = false; 
node.onmousemove = update; 

は、私はどのように私はそれが画面の中心にいたとき、それはそれはATの作ることができ、ブラウザウィンドウで、左から右へのdivをドラッグするよ想像1.0スケールであり、外側エッジに達するとますます小さくなり、0.0になりますか?

+0

スケーリングのためにクロス乗算と除算。 – PHPglue

+0

お返事ありがとうございます。答えとして例を挙げることは可能でしょうか?私はそのロジックをどのように実装するのか分かりません。 – daryl

+0

通常、何かがスケール '0.0'を持っていると(実際の長さ=スケール* default_length'のために)表示されないので、長さはゼロになります。これはあなたが考えている行動ですか? – pingul

答えて

0

多分、パーセントでスケールしたいのですか?

function scaleByPercent(element, percent){ 
    var p = percent/100, e = element.getBoundingClientRect(), w = e.width, h = e.height; 
    e.style.width = w*p+w; e.style.height = h*p+h; 
} 
scaleByPercent(document.getElementById('yourDivId'), 25); 

もちろん、ドラッグするときにパーセントを変更する必要があります。

関連する問題