2014-01-09 1 views
2

Мне нужен диалог, чтобы всегда иметь зазор в 100 пикселей между верхней частью окна и верхней частью диалогового окна. Однако, если диалог выше окна, он всегда будет сидеть заподлицо с верхней частью окна (top - 0px).jQuery UI Диалоговый верхний интервал

установив top, margin-top и padding-top к диалогу с CSS не помогает, поскольку она принимает эти значения во внимание при разработке верхнее значение, и до сих пор позиционирует его на одном уровне с верхней части окна (т.е. добавление margin-top: 100px означает, что он находится в положении top: -100px). Использование встроенного параметра, например 'position': ['center', 100], не работает, когда диалог выше окна.

Я также предпочел бы избежать необходимости вручную корректировать положение после каждой инициализации, если это возможно.

Любые идеи?

ответ

3

Я думаю, что вам нужно нужно перезаписать «используя» часть конфигурации позиции, увидеть это: https://github.com/jquery/jquery-ui/blob/9268634b800ae2148bf088cd229a3bafe2534c7c/ui/jquery.ui.dialog.js#L60-L66

+1

Спасибо. Это не совсем сработало, но я просто поставил смещение, которое мне было нужно вручную, и это сработало. 'положение: { \t с помощью:. Функция (поз) { \t \t вар topOffset = $ (это) .css (поз) .offset() сверху; \t \t if (topOffset <0) { \t \t \t $ (this) .css ("top", 50); \t \t} \t} } ' – MattRogowski

+0

Mhh, вы, вероятно, следует добавить смещение и перезапись с использованием, так как это может сбросить верхнюю позицию на маленьких экранах. – fnagel

0

Я совершил это с open варианты событий следующим образом:

$('#dialog').dialog({ 
    open : function() { 
     if ($(this).closest('.ui-dialog').offset().top < 40) { 
      $(this).closest('.ui-dialog').css({'top':'40px'}); 
     } 
    } 
});