Tengo muchos problemas para encontrar información específica y ejemplos sobre esto. Tengo una serie de diálogos de jQuery UI en mi aplicación adjuntos a divs que están cargados con llamadas .ajax (). Todos usan la misma llamada de configuración:
$(".mydialog").dialog({
autoOpen: false,
resizable: false,
modal: true
});
Solo quiero que el cuadro de diálogo cambie de tamaño al ancho del contenido que se carga. En este momento, el ancho solo permanece en 300px (el valor predeterminado) y obtengo una barra de desplazamiento horizontal.
Por lo que puedo decir, "autoResize" ya no es una opción para los cuadros de diálogo, y no sucede nada cuando lo especifico.
Estoy tratando de no escribir una función separada para cada cuadro de diálogo, por .dialog("option", "width", "500")
lo que no es realmente una opción, ya que cada cuadro de diálogo tendrá un ancho diferente.
Especificar width: 'auto'
las opciones de diálogo solo hace que los diálogos ocupen el 100% del ancho de la ventana del navegador.
¿Cuáles son mis opciones? Estoy usando jQuery 1.4.1 con jQuery UI 1.8rc1. Parece que esto debería ser algo que sea realmente fácil.
EDITAR: he implementado una solución alternativa para esto, pero todavía estoy buscando una mejor solución.
{'width':'auto'}
no funciona en IE7 y no se solucionará porque jQuery-UI no admite la{'width':'auto'}
opción de acuerdo con scott.gonzalez: "Los cuadros de diálogo no admiten el ancho automático. Los documentos indican que la opción solo acepta un número, que se utilizará para un tamaño de píxel. Vea el hilo jquery-ui-dev para una discusión sobre por qué no admitiremos el ancho automático ".Tuve el mismo problema y gracias a que mencionaste que el problema real estaba relacionado con CSS, encontré el problema:
Tener en
position:relative
lugar deposition:absolute
en su.ui-dialog
regla CSS hace que el diálogo y sewidth:'auto'
comporte de manera extraña.fuente
Así es como lo hice:
Responsive jQuery UI Dialog (y una solución para el error maxWidth)
Arreglando maxWidth & width: auto bug.
fuente
Me imagino que establecer flotante: izquierda para el diálogo funcionará. Presumiblemente, el cuadro de diálogo está absolutamente posicionado por el complemento, en cuyo caso su posición estará determinada por esto, pero el efecto secundario del flotador, que hace que los elementos solo sean tan amplios como sea necesario para contener el contenido, aún tendrá efecto.
Esto debería funcionar si solo pones una regla como
en su hoja de estilo, aunque es posible que deba configurarlo usando jQuery
fuente
Tuve el mismo problema cuando actualicé jquery UI a 1.8.1 sin actualizar el tema correspondiente. Solo es necesario para actualizar el tema también y "auto" funciona nuevamente.
fuente
Por alguna razón, seguía teniendo este problema de ancho de página completo con IE7, así que hice este truco:
fuente
Puede evitar el problema del ancho del 100% especificando un ancho máximo. La
maxWidth
opción no parece funcionar; configura lamax-width
propiedad CSS en el widget de diálogo.En caso de que también desee restringir la altura máxima, use la
maxHeight
opción Mostrará correctamente una barra de desplazamiento cuando sea necesario.fuente
Tuve un problema similar.
Ajuste
width
a"auto"
bien trabajado para mí, pero cuando el diálogo contenía una gran cantidad de texto que lo hizo abarcan todo el ancho de la página, haciendo caso omiso de lamaxWidth
configuración.Configuración
maxWidth
decreate
bien funciona sin embargo:fuente
Yo tuve este problema también.
Lo tengo trabajando con esto:
fuente
Todo lo que necesitas hacer es agregar:
fuente
Tengo el mismo problema y tener posición: absoluta en su .ui-dialog {} css no fue suficiente. Noté esa posición: relativa se estaba configurando en el estilo directo del elemento real, por lo que la definición .ui-dialog css se sobrescribía. Posición de configuración: absoluta en el div. Iba a hacer un diálogo estáticamente tampoco funcionó.
Al final cambié dos puestos en mi jQuery local para que esto funcione.
Cambié la siguiente línea en jQuery para que sea:
en https://github.com/jquery/jquery/blob/1.8.0/src/offset.js#L62
Además, dado que mi cuadro de diálogo estaba configurado como arrastrable, tuve que cambiar esta línea también en jQuery-ui para ser:
en https://github.com/jquery/jquery-ui/blob/1-8-stable/ui/jquery.ui.draggable.js#L48
Tal vez siguiendo el estilo que tengo más a fondo arreglaría las cosas, pero pensé en compartir cómo lo hice funcionar.
fuente
Si necesita que funcione en IE7, no puede usar la opción no documentada, con errores y sin soporte
{'width':'auto'}
. En su lugar, agregue lo siguiente a su.dialog()
:Si
.scrollWidth
incluye el relleno del lado derecho depende del navegador (Firefox difiere de Chrome), por lo que puede agregar un número subjetivo "suficientemente bueno" de píxeles.scrollWidth
o reemplazarlo con su propia función de cálculo de ancho.Es posible que desee incluir
width: 0
entre sus.dialog()
opciones, ya que este método nunca disminuirá el ancho, solo lo aumentará.Probado para trabajar en IE7, IE8, IE9, IE10, IE11, Firefox 30, Chrome 35 y Opera 22.
fuente
edite este siguiente:
fuente