2016-12-13 1 views
0

두 개 이상의 겹치는 div가 있습니다. . 초는 .first를 넘었습니다. 각각 너비와 높이가 모두 전체 창을 차지합니다.창 가장자리 위로 드래그하지 마십시오

.second 당신의 오른쪽 가장자리를 넘어 가고 .second 방지하기 위해 좁은 방

내가 좋아하는 것 드래그 기능을 통해 드래그 할 부분을 클릭 할 수 있도록 position: absolute; left: -800px; 의 속성이 있습니다 프레임 및/또는 왼쪽으로 -800 픽셀 이상 이동하십시오.

+1

당신은 당신의 코드를 제공 할 수 있습니까? 드래그를 위해 JQuery UI 드래그 가능 위젯을 사용하고 있습니까? – Slonski

+1

요소를 드래그 할 수 있도록 jQuery UI를 사용하는 경우 끌어서 놓기 내에서 경계 상자를 설정할 수있는 "containment"매개 변수를 살펴보아야합니다. http://api.jqueryui.com/draggable/#option -compage – Flyer53

+0

사실, 나는 잡아주는 효과를 위해 jQuery API를 사용하지만 containment 옵션을 이해하지 못합니다. 다음은 작업 공간에 대한 링크입니다. http://clementfauquet.com/test/port_clem/ – cfocket

답변

1

다음은 배열에서 jquery와 드래그 가능한 containment 옵션을 사용하는 방법의 예입니다. 배열은 4 개의 숫자를 취합니다. 처음 2 개의 숫자는 경계 상자의 왼쪽 위 모서리를 정의하고 마지막 2 개의 숫자는 경계 상자의 오른쪽 하단 모서리를 정의합니다.

따라서 아래 예에서 요소 왼쪽에있는 최소 길이는 0px이고 최대 왼쪽 길이는 400px입니다. 최소 CSS 상단은 10px이고 최대 CSS 상단은 200px입니다.

기본적으로 배열의 값을 필요에 맞게 조정하면됩니다.

var index1 = 10; 
 

 
$('#test').draggable({ 
 
    containment: [0, index1, $('body').width()/4, 200] 
 
}); 
 

 
// update option containment after a window resize 
 
$(window).resize(function() { 
 
    $("#test").draggable("option", "containment", "parent"); 
 
});
body{ 
 
height: 350px; 
 
} 
 

 
#test{ 
 
    width: 50px; 
 
    height: 50px; 
 
    border: 2px solid #000; 
 
    background: gray; 
 
    position: absolute; 
 
    top: 10px; 
 
    left: 0; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<link rel="stylesheet" href="https://ajax.googleapis.com/ajax/libs/jqueryui/1.12.1/themes/smoothness/jquery-ui.css"> 
 
<script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js"></script> 
 

 
<div id="test"></div>

+0

고마워, 그 트릭을;) 아직도 내 최소 왼쪽으로 부정적인 가치, 나는 크기를 조정할 때 문제가 발생합니다. 어떻게'calc (100 % - 100px);와 같은 반응 값으로 배열을 설정합니까? – cfocket

+0

업데이트 된 예제에서 볼 수 있듯이 포함 배열에서 필요한 값을 계산하는 표현식뿐만 아니라 변수를 사용할 수 있습니다. 창 크기를 조정하면 예제와 같이 포함 값을 업데이트 할 수 있습니다. 귀하의 필요에 맞는 가치를 사용하십시오. 참고 :이 예에서는 코드가 실행중인 iframe의 크기가 조정되지 않으므로 SO에서 컨테이너를 업데이트하지 않습니다. – Flyer53

+0

전체 페이지에서 예제를 실행하면 window resize의 업데이트도 작동합니다. – Flyer53

관련 문제