2009-02-02 43 views
6

Estoy tratando de crear un pequeño script de información sobre herramientas que se basa principalmente en css. El bit de JavaScript que no puedo descifrar es cómo posicionar el div en función de su distancia al borde del navegador.Div de posición dependiendo de la distancia del borde del navegador (javascript)

Cuando aparezca el div, me gustaría que compruebe qué tan cerca está de la parte superior, inferior, izquierda y derecha. Por ejemplo, si no hay espacio suficiente para mostrar el div encima del enlace de información sobre herramientas, debe colocarlo debajo del enlace.

Esencialmente me gustaría que el div esté "al tanto" de su posición y sepa a dónde ir para asegurarse de que sea visible.

Gracias

Respuesta

1
+1

Si bien esto puede teóricamente responder a la pregunta, [sería preferible] (http://meta.stackexchange.com/q/8259) para incluir las partes esenciales de la respuesta aquí, y proporcionar el enlace de referencia. –

+1

Gracias Matt Ball - ¡en mi defensa, la meta discusión que tu enlace no había tenido lugar cuando publiqué mi respuesta original! – Galwegian

5

Solo tuve que escribir un código muy similar para usarlo con tipsy (entonces mi solución usa jQuery). Aquí está la matemática básica, suponiendo que <div id="mydiv">...</div> es el div con el que estás trabajando. También tomo en cuenta la altura y el ancho del div al medir las distancias a los bordes derecho e inferior.

dTop, dBottom, dLeft, y dRight son la distancia desde la parte superior de la div, inferior, izquierda, y bordes derecho, respectivamente, para el mismo borde de la ventana gráfica. Si desea medir según la esquina superior izquierda del div, no resta dTop o dLeft al calcular dBottom y dRight.

var $doc = $(document), 
    $win = $(window), 
    $this = $('#mydiv'), 
    offset = $this.offset(), 
    dTop = offset.top - $doc.scrollTop(), 
    dBottom = $win.height() - dTop - $this.height(), 
    dLeft = offset.left - $doc.scrollLeft(), 
    dRight = $win.width() - dLeft - $this.width(); 
Cuestiones relacionadas