Cuando usa el cuadro de diálogo de la interfaz de usuario de jquery, todo funciona bien, excepto por una cosa. Cuando se cambia el tamaño del navegador, el cuadro de diálogo permanece en su posición inicial, lo que puede ser realmente molesto.
Puede probarlo en: http://jqueryui.com/demos/dialog/
Haga clic en el ejemplo de "diálogo modal" y cambie el tamaño de su navegador.
Me encantaría poder permitir que los diálogos se centren automáticamente cuando el navegador cambia de tamaño. ¿Se puede hacer esto de manera eficiente para todos mis cuadros de diálogo en mi aplicación?
¡Muchas gracias!
fuente
$(".ui-dialog-content").dialog("option", "position", "center");
esto buscará cualquier diálogo :)Alternativamente a la respuesta de Ellesedil,
Esa solución no funcionó para mí de inmediato, así que hice lo siguiente, que también es una versión dinámica pero abreviada:
+1 para Ellesedil aunque
EDITAR:
Versión mucho más corta que funciona muy bien para diálogos únicos:
No es necesario que .each () se use quizás si tiene algunos cuadros de diálogo únicos que no desea tocar.
fuente
.resize()
y adentro si el contador llega10
o20
entoncesbreak;
, no he tenido este problema, no atiendo esos dispositivos / navegadores. Debe probar una solución que, si se atasca, puede salir de ellaAquí puede encontrar una respuesta más completa, que utiliza la respuesta de Nick de una manera más flexible .
A continuación se muestra una adaptación del código de relevancia de ese hilo. Esta extensión esencialmente crea una nueva configuración de diálogo llamada autoReposition que acepta verdadero o falso. El código tal como está escrito establece la opción por defecto en verdadero. Pon esto en un archivo .js en tu proyecto para que tus páginas puedan aprovecharlo.
Esto le permite proporcionar un "verdadero" o "falso" para esta nueva configuración cuando crea su diálogo en su página.
Ahora, este diálogo siempre se reposicionará. AutoReposition (o como se llame a la configuración) puede manejar cualquier cuadro de diálogo que no tenga una posición predeterminada y reposicionarlos automáticamente cuando la ventana cambia de tamaño. Dado que está configurando esto cuando crea el diálogo, no necesita identificar un diálogo de alguna manera porque la funcionalidad de reposicionamiento se integra en el diálogo mismo. Y la mejor parte es que, dado que esto se establece por diálogo, puede hacer que algunos diálogos se reposicionen y otros permanezcan donde están.
Crédito al usuario scott.gonzalez en los foros de jQuery por la solución completa.
fuente
$(".ui-dialog-content:visible").each(function () { if ($(this).dialog('option', 'autoReposition')) { $(this).dialog('option', 'position', $(this).dialog('option', 'position')); } });
funciona muy bien :)$( "#dialog" ).dialog( "option", "position" )
a$(this).data("dialog").options.position
más tarde. De todos modos, ¡ahora esta respuesta funciona!Otra opción solo de CSS que funciona es esta. Los márgenes negativos deben ser la mitad de su altura y la mitad de su ancho. Entonces, en este caso, mi diálogo tiene 720 px de ancho por 400 px de alto. Esto lo centra vertical y horizontalmente.
fuente
Alternativamente, se puede usar la posición de la interfaz de usuario de jQuery ,
fuente
¡Hola a todos!
Solución Vanilla JS:
fuente
$.isVanillaJS == false