다른 질문 here on stackoverflow에서이 스크립트를 얻었으며 완벽하게 작동합니다. 이 스크립트는 px의 요소를 업데이트합니다. 예를 들어 왼쪽 화살표 키를 누른 상태에서 대각선 방향으로 요소를 이동할 수있는 방법을 특히 좋아합니다.%로 화살표 키를 사용하여 div를 이동하는 방법
내 질문은 : 이제 % 값으로 요소의 값을 설정하고 업데이트하도록 스크립트를 변경할 수 있습니까?
이유는 내가 반응 형 디자인으로 사이트를 개발하고 있으며 창 크기에 비례하여 페이지에서 머물러 있어야한다는 것입니다. 나는 그것을 알아 내기 위해 노력했지만 지금까지는 성공하지 못했다. 여기
스크립트입니다 :HTML
<div id="pane">
<div id="box"></div>
</div>
CSS
#pane {
position:relative;
width:300px; height:300px;
border:2px solid red;
}
#box {
position:absolute; top:140px; left:140px;
width:20px; height:20px;
background-color:black;
}
자바 스크립트
var pane = $('#pane'),
box = $('#box'),
w = pane.width() - box.width(),
d = {},
x = 3;
function newv(v,a,b) {
var n = parseInt(v, 10) - (d[a] ? x : 0) + (d[b] ? x : 0);
return n < 0 ? 0 : n > w ? w : n;
}
$(window).keydown(function(e) { d[e.which] = true; });
$(window).keyup(function(e) { d[e.which] = false; });
setInterval(function() {
box.css({
left: function(i,v) { return newv(v, 37, 39); }, //Function should set values in %
top: function(i,v) { return newv(v, 38, 40); } //here for left and top
});
}, 20);
COFFE 스크립트
jQuery ->
pane = $('body')
box = $('.myDiv')
w = pane.width() - box.width()
c = [37,38,39,40] # Set key values for arrow keys in an array
d = []
x = 4
newv = (v,a,b) ->
n = parseInt(v, 10) - (if d[a] then x else 0) + (if d[b] then x else 0)
if n < 0 then 0 else if n > w then w else n
$(window).keydown((e) ->
d[e.which] = true
)
$(window).keyup((e) ->
d[e.which] = false
if true not in d and e.which in C#Check that all arrow keys are released
divID = $('.myDiv').attr('id') # Grab values from the element
top = $('.myDiv').css('top')
left = $('.myDiv').css('left')
setTimeout -> #Set a timeout and then send element values with Ajax to database to preserve state of element for next time window is opened
$.ajax(
type: "PUT"
url: "/url/to/update/database"
data:
positiontop: top
positionleft: left
)
,1000
)
setInterval ->
box.css
left: (i,v) ->
newv(v, 37, 39)
top: (i,v) ->
newv(v, 38, 40)
,40
당신은 어딘가에서이 코드를 가져다가 지금 당신은 우리가 당신을 위해 그것을 변경하고 싶습니다. ** ** 문제 해결을 위해 ** 당신은 ** 무엇을 했습니까? – zerkms
글쎄, 나는 백분율 값의 변경이 newv (v, a, b) 함수에서 일어나야한다는 것을 알아 냈다고 생각한다. 그래서 n/$ (window) .height() * 100과 같은 것으로 n을 다시 계산하려고했습니다. 또한 해당 함수에서 x를 사용하여 동일한 작업을 시도했습니다. x 값으로 재 계산하는 것이 더 합리적입니다 ... – T4E
이 JavaScript를 CoffeeScript로 변환하고 몇 가지 기능을 추가했습니다. 아마도 내 변경 사항을 게시하는 것이 좋을까요? – T4E