2016-12-13 2 views
0

У меня есть два divs, перекрывающих каждый. . Вторая секунда. Каждый принимает полное окно как по ширине, так и по высоте.Не перетаскивайте края окон

.second обладает свойством position: absolute; left: -800px; , так что вы можете нажать часть его, чтобы перетащить его на .Первый

я хотел функцию перетаскивания, чтобы предотвратить .second выйти за пределы правого края кадр и/или идти дальше, чем -800px влево.

+1

Можете ли вы предоставить код? Вы используете перетаскиваемый виджет JQuery UI для перетаскивания? – Slonski

+1

Если вы используете пользовательский интерфейс jQuery, чтобы перетаскивать элемент, вы должны взглянуть на параметр «сдерживание», который позволяет вам установить ограничительную рамку внутри перетаскивания, ограничено http://api.jqueryui.com/draggable/#option -задание – Flyer53

+0

Действительно, я использую jQuery API для эффекта захвата, но я действительно не понимаю параметр сдерживания. Вот ссылка на рабочую область http://clementfauquet.com/test/port_clem/ – cfocket

ответ

1

Вот пример использования опции сдерживания jquery ui draggable с массивом. Массив принимает 4 номера, где первые 2 числа определяют левый верхний угол ограничивающего прямоугольника, а последние 2 числа определяют правый нижний угол ограничивающего прямоугольника.

В приведенном ниже примере minmum css слева от элемента 0px, а максимальное значение css - 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

Как вы можете видеть в обновленном примере, вы можете использовать переменные, а также выражения, вычисляющие необходимое значение в массиве сдерживания. При изменении размера окна вы можете обновить значения сдерживания, как показано в примере. Просто используйте значения, соответствующие вашим потребностям. Примечание. В примере не будет обновляться сдерживание на SO, потому что iframe, код которого работает, не изменяется. – Flyer53

+0

Запустите пример в полноэкранном режиме, и обновление по размеру окна также будет работать. – Flyer53

Смежные вопросы