Autor Tema: [Tuto] Usar los "offset": Centrar capa y saber dimensiones de pagina  (Leído 1372 veces)

Desconectado westwest

  • PHPero Master
  • ******
  • Mensajes: 2.837
  • Karma: 104
  • Sexo: Masculino
    • Ver Perfil
[Tuto] Usar los "offset": Centrar capa y saber dimensiones de pagina
« en: 12 de Noviembre de 2009, 22:17:42 pm »
Usando los "offset" se pueden hacer muchas cosas... 2 posibles las comentare ahora:

CENTRAR UNA CAPA
En este tutorial expliqué como poner una capa centrada.
Ahora usando offset centraremos una capa la cual no sabemos las dimensiones.

Imaginemos que tenemos un codigo PHP que mostrara un div con una alerta, como no sabemos lo que ocupa el texto, no nos arriesgamos a poner unas medidas fijas ya que quedara o grande o pequeño, asi que colocamos el div, algo asi:

// Cuidado con la ID
echo &#39;<div id="midiv" style="position:absolute;">&#39;.$textoalerta.&#39;</div>&#39;;

Para kien no sepa PHP (raro en un foro de PHP) $textoalerta es el texto, (que es mas grande logicamente) y la etiketa div lo k debe interesar ahora.

Para que el div se centre, ejecutaremos una funcion al cargar la pagina, añadiendo onload al body asi:
Código: [Seleccionar]
<body onload="centrardiv();">

ahora crearemos la funcion (obviamente va en el HEAD, en una etiketa script):
Código: [Seleccionar]
function centrardiv() {
var div = document.getElementById('midiv'); <!--Obtenemos el objeto del div-->
div.style.marginTop = '-' + (div.offsetTop/2) + 'px'; <!-- Ponemos el margin del top, con el offset entre 2, la mitad; el "-" delante y "px" detras
div.style.marginLeft = '-' + (div.offsetLeft/2) + 'px'; <!-- Igual con left -->
}

De esta manera hemos centrado el div perfectamente y sin lios de cabeza calculando anchos de texto

SABER DIMENSIONES DE PÁGINA
Saber las dimensiones de una página ha sido siempre un engorro, usando los offset, se obtiene de una manera facil las dimensiones de la misma:

Primero creamos una variable para el ancho y alto de la pagina, fuera de cualkier funcion (pero dentro de la etiketa SCRIPT)
Código: [Seleccionar]
var ancho_ventana, alto_ventana;
Añadimos al body un onload:
Código: [Seleccionar]
<body onload="dimensiones();">

ponemos un div de 1x1, con visibility:hidden para k no se vea, con posicion absolute, right y bottom a 0, para k kede en la eskina inferior derecha
Código: [Seleccionar]
<div id="dimensiones" style="position:absolute;right:0px;bottom:0px;width:1px;height:1px;visibility:hidden;"></div>

ATENCION: Si ponemos el codigo al principio del body, obtendremos las dimensiones SIN scroll, si lo ponemos al final, tras todo codigo, lo obtendremos CON scroll, podeis poner las 2 con 2 id y funciones distintas, por supuesto

Ahora la funcion
Código: [Seleccionar]
function dimensiones() {
var div = document.getElementById('dimensiones'); <!-- el div -->
ancho_ventana = div.offsetLeft+1; <!-- cogemos la distancia a la izkierda y sumamos 1, asi obtenemos el ancho -->
alto_ventana = div.offsetTop+1; <!-- igual con el alto -->
}
Hemos obtenido las medidas en 2 variables rapidamente!!!


Espero que os haya gustado, pronto pondre mas "tutos"

Comunidad PHPeros

[Tuto] Usar los "offset": Centrar capa y saber dimensiones de pagina
« en: 12 de Noviembre de 2009, 22:17:42 pm »

Desconectado NDSi

  • PHPero Avanzado
  • ****
  • Mensajes: 410
  • Karma: 8
  • Sexo: Masculino
    • Ver Perfil
Re:[Tuto] Usar los "offset": Centrar capa y saber dimensiones de pagina
« Respuesta #1 en: 13 de Noviembre de 2009, 02:22:44 am »
Guau, me encanto este tutorial, das la definicion de OFFSET y como utilizarlo, te ganaste un karma :)

Desconectado westwest

  • PHPero Master
  • ******
  • Mensajes: 2.837
  • Karma: 104
  • Sexo: Masculino
    • Ver Perfil
Re:[Tuto] Usar los "offset": Centrar capa y saber dimensiones de pagina
« Respuesta #2 en: 13 de Noviembre de 2009, 15:01:55 pm »
Muchas gracias ;) a ver si le gusta a alguien más