Quando você usa a caixa de diálogo da IU do jquery, tudo funciona bem, exceto por uma coisa. Quando o navegador é redimensionado, a caixa de diálogo apenas permanece em sua posição inicial, o que pode ser realmente irritante.
Você pode testá-lo em: http://jqueryui.com/demos/dialog/
Clique no exemplo de "diálogo modal" e redimensione seu navegador.
Eu adoraria permitir que as caixas de diálogo sejam centralizadas automaticamente quando o navegador for redimensionado. Isso pode ser feito de maneira eficiente para todos os meus diálogos no meu aplicativo?
Muito obrigado!
fonte
$(".ui-dialog-content").dialog("option", "position", "center");
isto irá verificar se há qualquer diálogo :)Alternativamente à resposta de Ellesedil,
Essa solução não funcionou para mim imediatamente, então fiz o seguinte, que também é uma versão dinâmica, mas abreviada:
1 para Ellesedil embora
EDITAR:
Versão muito mais curta que funciona muito bem para caixas de diálogo individuais:
Não é necessário que .each () seja usado, talvez se você tiver alguns diálogos exclusivos que não deseja tocar.
fonte
.resize()
e dentro se o contador atingir10
ou20
entãobreak;
, eu não tive esse problema, não atendo para esses dispositivos / navegadores. Você deve tentar uma solução que, se ela travar, você poderá sair delaUma resposta mais abrangente, que usa a resposta de Nick de uma forma mais flexível, pode ser encontrada aqui .
Uma adaptação do código de relevância desse segmento está abaixo. Esta extensão essencialmente cria uma nova configuração de diálogo chamada autoReposition que aceita um verdadeiro ou falso. O código conforme escrito padroniza a opção como verdadeiro. Coloque isso em um arquivo .js em seu projeto para que suas páginas possam aproveitá-lo.
Isso permite que você forneça um "verdadeiro" ou "falso" para esta nova configuração ao criar sua caixa de diálogo em sua página.
Agora, esta caixa de diálogo sempre se reposicionará. A AutoReposição (ou o que quer que você chame de configuração) pode lidar com qualquer caixa de diálogo que não tenha uma posição padrão e reposicioná-la automaticamente quando a janela for redimensionada. Como você está definindo isso ao criar a caixa de diálogo, não é necessário identificar uma caixa de diálogo de alguma forma, porque a funcionalidade de reposicionamento torna-se integrada à própria caixa de diálogo. E a melhor parte é que, como isso é definido por diálogo, você pode fazer com que alguns diálogos se reposicionem e outros permaneçam onde estão.
Agradecemos ao usuário scott.gonzalez nos fóruns da jQuery pela solução completa.
fonte
$(".ui-dialog-content:visible").each(function () { if ($(this).dialog('option', 'autoReposition')) { $(this).dialog('option', 'position', $(this).dialog('option', 'position')); } });
Funciona muito bem :)$( "#dialog" ).dialog( "option", "position" )
para$(this).data("dialog").options.position
mais tarde. Enfim, agora essa resposta funciona!Outra opção somente CSS que funciona é esta. As margens negativas devem ser iguais a metade da altura e metade da largura. Portanto, neste caso, minha caixa de diálogo tem 720 px de largura por 400 px de altura. Isso o centraliza verticalmente e horizontalmente.
fonte
Alternativamente, a posição ui do jQuery pode ser usada,
fonte
Olá a todos!
Solução Vanilla JS:
fonte
$.isVanillaJS == false