2017-07-06 79 views
2

我有一個圖像旋轉,但它只能在180度和360度之間旋轉。但我需要輸入的目標值在0 - 100之間。將「180-360」的數據範圍標準化到「0-100」範圍 - jQuery/JS

因此,如果您輸入20的targetValue,它將旋轉圖像的範圍180deg - 360deg的20%。

我重視我已經在代碼片段 -

任何幫助,將不勝感激!

CODE -

var targetValue = 100; //CAN ONLY BE BETWEEN 0 & 100 
 

 
console.log(targetValue); 
 

 
function targetChange(){ 
 
    $('#target').css('transform', 'rotate(' + targetValue + 'deg' + ')'); 
 
    console.log('hello'); 
 
} 
 
targetChange();
.target { 
 
    position: absolute; 
 
\t width: 100%; 
 
    height: 100%; 
 
    z-index: 2; 
 
    transform: rotate(180deg); 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script> 
 
<img class="target" id="target" src="http://i65.tinypic.com/oarptf.png">

+0

這不是100%清楚,有一個630的目標值。但是你只能輸入一個百分比?百分比/ 100 * 360?或者你想「targetValue%360」?什麼是輸入,什麼是預期輸出? – Niels

+0

嗨,感謝您的回覆,對不起,這是一個錯字。我的錯誤,輸入值將介於0和100之間。這將在180和360度之間旋轉圖像。所以如果輸入20,這將是180-360範圍的20%。 – Darian

回答

4

這很簡單,只要

  • 取輸入值(0-100)
  • 查找的180度比例
  • 它添加到180範圍內給一個值180-360

這證明下面

$('#input').on("change", function(){ 
 
    var val = +$(this).val(); 
 
    var rotAmount = 180 + ((val/100) * 180) 
 
    $('#output').val(rotAmount); 
 
    $('#target').css('transform', 'rotate(' + rotAmount + 'deg' + ')'); 
 
});
.target { 
 
    position: relative; 
 
\t width: 100%; 
 
    height: 100%; 
 
    z-index: 2; 
 
    transform: rotate(180deg); 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
Enter value between 0-100 <input id="input" type="number" min="0" max="100"> 
 
<br> 
 
Rotation: <input type="text" id="output"> 
 
<hr> 
 
<img class="target" id="target" src="http://i65.tinypic.com/oarptf.png">

+1

這是正確的。+ 1 –

+0

這是完美的,非常感謝Jamiec!感謝幫助。 – Darian

2

檢查了這一點:

var targetValue = 100; //CAN ONLY BE BETWEEN 0 & 100 

var normalizedValue = (targetValue/100 * 180) + 180 

console.log(targetValue); 

function targetChange(){ 
    $('#target').css('transform', 'rotate(' + normalizedValue + 'deg' + ')'); 
    console.log('hello'); 
} 
targetChange(); 
+1

你這樣做是錯誤的。輸入從0到100,輸出應該是180到360. – Chris

+1

感謝您指出。 –

+0

感謝您的投入,感謝它。 – Darian