Estoy tratando de usar la biblioteca de la interfaz de usuario del cuadro de diálogo jQuery para colocar un cuadro de diálogo junto a un texto cuando se coloca el cursor sobre él. El cuadro de diálogo jQuery toma un parámetro de posición que se mide desde la esquina superior izquierda de la ventana gráfica actual (en otras palabras, [0, 0]
siempre lo colocará en la esquina superior izquierda de la ventana de su navegador, independientemente de dónde se encuentre actualmente). Sin embargo, la única forma que conozco de recuperar la ubicación es del elemento relativo a la página COMPLETA.
Lo siguiente es lo que tengo actualmente. position.top
se calcula en aproximadamente 1200, lo que coloca el cuadro de diálogo muy por debajo del resto del contenido de la página.
$(".mytext").mouseover(function() {
position = $(this).position();
$("#dialog").dialog('option', 'position', [position.top, position.left]);
}
¿Cómo puedo encontrar la posición correcta?
¡Gracias!
Respuestas:
Vea algunos de los complementos de jQuery para otras implementaciones de un diálogo. Cluetip parece ser un complemento de estilo de diálogo / información sobre herramientas con muchas funciones. La cuarta demostración suena similar a lo que está tratando de hacer (aunque veo que no tiene la opción de posicionamiento precisa que está buscando).
fuente
Como alternativa, puede usar la utilidad jQuery UI
Position
, por ejemplofuente
dialog
$('#dialog').dialog({ width: 300 /* insert your options */ }).dialog('widget').position({ my: 'left', at: 'right', of: $(this) });
at: 'top+50'
lugar deat: 'top + 50'
$('dialog').dialog({ position: { my: 'left top', at: 'left+50 top+50'}, });
Gracias a algunas de las respuestas anteriores, experimenté y finalmente descubrí que todo lo que necesita hacer es editar el atributo "posición" en la definición del diálogo modal:
JQuery no tuvo problemas con el texto "medio" para el valor "X" horizontal y mi diálogo apareció en el medio, 20px hacia abajo desde la parte superior.
Me encanta JQuery.
fuente
Después de leer todas las respuestas, esto finalmente funcionó para mí:
fuente
Tomando el ejemplo de Jaymin un paso más allá, se me ocurrió esto para colocar un elemento de diálogo de interfaz de usuario de jQuery sobre el elemento en el que acaba de hacer clic (piense en "bocadillo de diálogo"):
Tenga en cuenta que "abro" el elemento ui-dialog antes de calcular las compensaciones relativas de ancho y alto. Esto se debe a que jQuery no puede evaluar externalWidth () o outerHeight () sin que el elemento ui-dialog aparezca físicamente en la página.
Solo asegúrese de establecer 'modal' en falso en sus opciones de diálogo y debería estar a-OK.
fuente
myDialogX
ymyDialogY
http://docs.jquery.com/UI/API/1.8/Dialog
Ejemplo de diálogo fijo en la esquina superior izquierda:
fuente
Revisar su
<!DOCTYPE html>
He notado que si te pierdes el
<!DOCTYPE html>
de la parte superior de su archivo HTML, el cuadro de diálogo se muestra centrado dentro del contenido del documento, no dentro de la ventana, incluso si especifica la posición: {mi: 'centro', en: 'centro' , de: ventana}EG: http://jsfiddle.net/npbx4561/ - Copie el contenido de la ventana de ejecución y elimine el DocType. Guárdelo como HTML y ejecútelo para ver el problema.
fuente
Para ponerlo en la parte superior del control, puede usar este código:
fuente
Coloca un diálogo justo debajo de un elemento. Utilicé la función offset () solo porque calcula la posición relativa a la esquina superior izquierda del navegador, pero la función position () calcula la posición relativa al div padre o iframe al padre del elemento.
fuente
en lugar de hacer jquery puro, haría:
Si entiendo correctamente su pregunta, el código que tiene es colocar el cuadro de diálogo como si la página no tuviera desplazamiento, pero desea que tenga en cuenta el desplazamiento. mi código debería hacer eso.
fuente
Esta página muestra cómo determinar su desplazamiento de desplazamiento. jQuery puede tener una funcionalidad similar pero no pude encontrarla. Con la función getScrollXY que se muestra en la página, debería poder restar las coordenadas xey de los resultados .position ().
fuente
un poco tarde, pero puede hacer esto ahora usando $ j (object) .offset (). left y .top en consecuencia.
fuente
No creo que el bocadillo sea del todo correcto. Lo modifiqué un poco para que funcionara y el elemento se abre justo debajo del enlace.
fuente
Para fijar la posición central, utilizo:
fuente
Aquí está el código ..., cómo colocar el cuadro de diálogo de la interfaz de usuario de jQuery en el centro ...
fuente
fuente
puede usar
$(this).offset()
, la posición está relacionada con el padrefuente
Probé todas las soluciones propuestas pero no funcionarán porque el cuadro de diálogo no es parte del documento principal y tendrá su propia capa (pero esa es mi suposición).
$("#dialog").dialog("option", "position", 'top')
$(dialog).dialog("open");
Luego obtenga la xey del cuadro de diálogo mostrado (¡no cualquier otro nodo del documento!)
var xcoord = $(dialog).position().left + ADD_MODIFIER_FOR_X_HERE;
var ycoord= $(dialog).position().top + ADD_MODIFIER_FOR_Y_HERE;
$(dialog).dialog('option', 'position', [xcoord , ycoord]);
De esta forma, las coordenadas son del diálogo, no del documento y la posición se modifica de acuerdo con la capa del diálogo.
fuente
Intenté de muchas maneras que mi diálogo se centrara en la página y vi que el código:
$("#dialog").dialog("option", "position", 'top')
nunca cambie la posición del diálogo cuando se creó.
En lugar de, cambio el nivel del selector para obtener el diálogo completo.
$("#dialog").parent()
<- Este es el objeto padre que la función dialog () crea en el DOM, esto se debe a que el selector $ ("# dialog") no aplica los atributos, arriba, izquierda.Para centrar mi cuadro de diálogo, utilizo jQuery-Client-Centering-Plugin
$ ("# diálogo"). parent (). centerInClient ();
fuente
Las soluciones anteriores son muy ciertas ... pero el cuadro de diálogo de la interfaz de usuario no conserva la posición después de que se cambia el tamaño de la ventana. debajo del código hace esto
fuente
Puede establecer la posición superior con estilo para mostrarla en el centro, vio que el código:
.ui-dialog {top: 100px! important;}
Este estilo debe mostrar un cuadro de diálogo 100px debajo de la parte superior.
fuente