Диалог YUI2 неправильно скрывает разметку диалога - PullRequest
2 голосов
/ 21 января 2011

С виджетом диалогового окна YUI он работает хорошо, за исключением того, что в больших диалоговых окнах (думаю, много контента) на странице появляется заметный побочный эффект ... много пробелов в конце страницы и полоса прокрутки.

Вот пример:

-> http://jsbin.com/ekaca4

Все, что я сделал, это взял оригинальный пример для диалога с developer.yahoo.com/yui/examples/container/dialog-quickstart_clean.html и добавил дополнительную разметку (в форме Lorem Ipsum).

Если вы посмотрите, как настроен код, разметка (в # dialog1) будет полностью видна на странице до тех пор, пока не будет запущено Yahoo.util.Event.onDomReady, и диалоговое окно будет создано в

YAHOO.example.container.dialog1 = new YAHOO.widget.Dialog("dialog1", 
      { width : "30em",
        fixedcenter : true,
        visible : false, 
        constraintoviewport : true,
        buttons : [ { text:"Submit", handler:handleSubmit, isDefault:true },
             { text:"Cancel", handler:handleCancel } ]
      }); 

В этот момент простая Джейн <div id="dialog1">, в которой хранится вся моя разметка, оборачивается контейнером <div class="yui-panel-container yui-dialog yui-overlay-hidden shadow" id="dialog1_c" style="visibility: hidden; z-index: 2; left: 307px; top: 10px;">.

Это было бы хорошо, за исключением того, что этот контент по-прежнему является большой частью моего макета, а полоса прокрутки и вертикальное пространство присутствуют. Если я попытаюсь добавить стили к yui-overlay-hidden как display: none или height: 0; Переполнение: скрыто, я получаю странные побочные эффекты, такие как наложение неправильно отображается при его отображении. До сих пор единственным способом, который оказал какое-либо реальное влияние, было помещение # dialog1 в содержащий div с height: 0; Переполнение: скрыто, но это не работает в IE7 (пробелы все еще присутствуют на странице после init).

Спасибо за вашу помощь, я действительно ценю это.

1 Ответ

0 голосов
/ 13 марта 2013

Я поместил все свои диалоги в div со следующим css:

div.dialogs{display:none;position:fixed;top:0px;left:80px;

Пока работает нормально, у меня больше нет полосы прокрутки и вертикального пространства из-за диалогов. Я включаю display:none, чтобы скрыть HTML до тех пор, пока диалоги не будут отрисованы, и после того, как они будут отрисованы, я изменю отображение на «блок». Без этого предварительно визуализированный HTML-код виден в течение секунды или двух, что приводит к некоторому мерцанию страницы.

...