У меня была похожая проблема, мне нужно было контролировать размер диалога и сделать немодальное - чтобы фоновая страница была видна сзади. Метод Фила работает отлично, однако вам нужно сделать фоновый контейнер прозрачным И также сделать так, чтобы вызывающая страница оставалась в DOM и оставалась видимой (начиная с бета-версии 2, DOM автоматически удаляется, поэтому страница, вызывающая диалог, удаляется из DOM когда вы показываете диалог)
Первым шагом было сделать прозрачный оверлей для любой используемой темы, например,
.ui-body-a,
.ui-body-a input,
.ui-body-a select,
.ui-body-a textarea,
.ui-body-a button {
background-color: transparent;
font-family: Helvetica, Arial, sans-serif;
}
Затем, чтобы сохранить вызывающую страницу видимой, убедитесь, что она кешируется в DOM, добавив data-dom-cache="true"
к вашей вызывающей странице, и я обнаружил, что вам также нужно переопределить стили отображения и z-index (и, конечно, ширину). ) чтобы он оставался видимым и за окном диалога, например
<div id='homePage' data-role="page" data-theme='a' data-dom-cache="true" style='display:block !important;z-index: 0;width:300px'>
<div data-role="header" data-theme='a'><h1>Header</h1></div><!-- /header -->
<div data-role="content" data-theme='a' style='margin:0; padding: 0'>
<a href="#testdialog" data-role="button" data-rel="dialog" data-transition="pop">Open Dialog</a>
</div><!-- /content -->
</div><!-- /page -->
Вы также можете кэшировать каждую страницу в DOM, вместо добавления data-dom-cache="true"
к каждой странице, вызывая;
$.mobile.page.prototype.options.domCache = true;
Но это кажется довольно тяжелым.
Edit:
Найден другой возможный способ настройки ширины / высоты, вы можете просто изменить поля диалога;
.ui-dialog .ui-header,
.ui-dialog .ui-content,
.ui-dialog .ui-footer {
margin-left: 100px;
margin-right: 100px;
}
Вам все равно нужно будет сделать то, что я упомянул о сохранении предыдущей страницы позади!