Я пытаюсь использовать библиотеку пользовательского интерфейса диалогового окна jQuery , чтобы разместить диалог рядом с некоторым текстом, когда он наведен. Диалог jQuery принимает параметр позиции, который измеряется от верхнего левого угла текущего окна просмотра (другими словами,[0, 0]
окна всегда помещает его в верхний левый угол окна вашего браузера, независимо от того, где вы в данный момент прокручены). Однако единственный известный мне способ получить местоположение - это элемент относительно ВСЕЙ страницы.
Вот что у меня есть сейчас. position.top
рассчитывается как примерно 1200, что помещает диалоговое окно значительно ниже остального содержимого на странице.
$(".mytext").mouseover(function() {
position = $(this).position();
$("#dialog").dialog('option', 'position', [position.top, position.left]);
}
Как мне найти правильную позицию?
Спасибо!
Ответы:
Ознакомьтесь с некоторыми плагинами jQuery для других реализаций диалогового окна. Cluetip выглядит как многофункциональный плагин в стиле всплывающих подсказок / диалогов. Четвертая демонстрация похожа на то, что вы пытаетесь сделать (хотя я вижу, что у нее нет точного варианта позиционирования, который вы ищете).
источник
В качестве альтернативы вы можете использовать утилиту jQuery UI,
Position
напримеристочник
dialog
например:$('#dialog').dialog({ width: 300 /* insert your options */ }).dialog('widget').position({ my: 'left', at: 'right', of: $(this) });
at: 'top+50'
вместоat: 'top + 50'
$('dialog').dialog({ position: { my: 'left top', at: 'left+50 top+50'}, });
Благодаря некоторым ответам, приведенным выше, я поэкспериментировал и в конечном итоге обнаружил, что все, что вам нужно сделать, это отредактировать атрибут "position" в определении модального диалога:
У JQuery не было проблем с «средним» текстом для горизонтального значения «X», и мой диалог появлялся посередине, на 20 пикселей вниз от вершины.
Я болею за JQuery.
источник
После прочтения всех ответов это, наконец, сработало для меня:
источник
Взяв пример Джаймина еще дальше, я придумал следующее для размещения элемента пользовательского диалога jQuery над элементом, который вы только что щелкнули (подумайте о «речевом пузыре»):
Обратите внимание, что я «открываю» элемент ui-dialog перед вычислением смещения относительной ширины и высоты. Это связано с тем, что jQuery не может оценивать externalWidth () или outerHeight () без физического отображения элемента ui-dialog на странице.
Просто убедитесь, что для параметра 'modal' установлено значение false в параметрах диалогового окна, и вы должны быть в порядке.
источник
myDialogX
иmyDialogY
http://docs.jquery.com/UI/API/1.8/Dialog
Пример фиксированного диалога в левом верхнем углу:
источник
Проверьте свои
<!DOCTYPE html>
Я заметил, что если вы пропустите
<!DOCTYPE html>
вашего HTML-файла, диалоговое окно будет отображаться по центру содержимого документа, а не в окне, даже если вы укажете позицию: {my: 'center', at: 'center' , of: window}Например: http://jsfiddle.net/npbx4561/ - Скопируйте содержимое из окна выполнения и удалите DocType. Сохраните как HTML и запустите, чтобы увидеть проблему.
источник
Чтобы поставить это прямо поверх управления, вы можете использовать этот код:
источник
Помещает диалог прямо под элементом. Я использовал функцию offset () только потому, что она вычисляет позицию относительно верхнего левого угла браузера, но функция position () вычисляет позицию относительно родительского div или iframe этого родительского элемента.
источник
вместо того, чтобы делать чистый jquery, я бы сделал:
Если я правильно понимаю ваш вопрос, код, который у вас есть, позиционирует диалог, как если бы на странице не было прокрутки, но вы хотите, чтобы он учитывал прокрутку. мой код должен это делать.
источник
На этой странице показано, как определить смещение прокрутки. jQuery может иметь аналогичную функциональность, но я не смог ее найти. Используя функцию getScrollXY, показанную на странице, вы сможете вычесть координаты x и y из результатов .position ().
источник
немного поздно, но вы можете сделать это сейчас, используя $ j (object) .offset (). left и .top соответственно.
источник
Я не думаю, что речевой пузырь совсем правильный. Я немного подправил его, чтобы он работал и элемент открывался прямо под ссылкой.
источник
Чтобы зафиксировать центральное положение, я использую:
источник
Вот код .., как расположить диалоговое окно jQuery UI по центру ......
источник
источник
вы можете использовать
$(this).offset()
, позиция связана с родителемисточник
Я пробовал все предложенные решения, но они не работают, потому что диалог не является частью основного документа и будет иметь свой собственный слой (но это мое обоснованное предположение).
$("#dialog").dialog("option", "position", 'top')
$(dialog).dialog("open");
Затем получите x и y отображаемого диалогового окна (а не любой другой узел документа!)
var xcoord = $(dialog).position().left + ADD_MODIFIER_FOR_X_HERE;
var ycoord= $(dialog).position().top + ADD_MODIFIER_FOR_Y_HERE;
$(dialog).dialog('option', 'position', [xcoord , ycoord]);
Таким образом, координаты взяты из диалогового окна, а не из документа, и положение изменяется в соответствии со слоем диалогового окна.
источник
Я пробовал разными способами расположить мой диалог по центру страницы и увидел, что код:
$("#dialog").dialog("option", "position", 'top')
никогда не меняйте позицию диалога, когда он был создан.
Вместо этого я изменяю уровень селектора, чтобы получить весь диалог.
$("#dialog").parent()
<- Это родительский объект, который функция dialog () создает в DOM, это потому, что селектор $ ("# dialog") не применяет атрибуты, вверху, слева.Чтобы центрировать свой диалог, я использую центрировать плагин jQuery-Client-Centering-Plugin
$ ( "# Диалог") родителя () centerInClient ()..;
источник
приведенные выше решения очень верны ... но диалоговое окно пользовательского интерфейса не сохраняет позицию после изменения размера окна. ниже код делает это
источник
Вы можете установить верхнюю позицию в стиле для отображения по центру, увидев, что код:
.ui-dialog {top: 100px! important;}
Этот стиль должен отображать диалоговое окно на 100 пикселей ниже сверху.
источник