Ответ 1
Не знаю, как могло бы помочь ваше решение, но это действительно близко к реальному решению. Нам нужно использовать ту же функцию "using", которая получает два аргумента. Первый - это фактические координаты позиционируемого объекта, и нам нужно будет вручную установить эти координаты на позиционный объект, как это было в вашем решении. Но для определения направления флип-столкновения нам нужно использовать второй аргумент. Этот аргумент обеспечивает обратную связь о позиции и размерах обоих элементов, а также вычисления их относительного положения. Вы можете прочитать об этом здесь.
Если у вас есть стрелка направления по горизонтали, и вам нужно переключить ее направление слева направо и наоборот в соответствии с текущим столкновением, вы можете получить значение свойства "horizontal" из второго аргумента в функцию "использование". "Левое" значение этого свойства означает, что позиционированный объект расположен справа от цели, и наоборот. Таким образом, вы можете изменять классы на позиционированном элементе в соответствии с текущим столкновением. Вот пример:
position:
{
my: 'left top',
at: 'right center',
of: $trigger,
offset: '20 -55',
collision: 'flip',
using: function(coords, feedback) {
var $modal = $(this),
top = ( isIE ) ? coords.top - 48 : coords.top,
className = 'switch-' + feedback.horizontal;
$modal.css({
left: coords.left + 'px',
top: top + 'px'
}).removeClass(function (index, css) {
return (css.match (/\bswitch-\w+/g) || []).join(' ');
}).addClass(className);
}
}
Обратите внимание, что в приведенном выше примере мы удалили из модального класса любые добавленные классы "switch-". Затем добавлен текущий класс "switch-". Поэтому в любое время, когда вы станете вашим модальным, у него будет класс "switch-left" или "switch-right" в зависимости от текущего столкновения.