En este artículo explicaremos la propiedad de css position, para entender cómo podemos posicionar los elementos HTML en una página, sin usar métodos obsoletos como usar una tabla y siguiendo los estándares actuales, que indican hacerlo usando CSS. La propiedad position, especifica el método de posicionamiento usado por un elemento. Los elementos pueden ser posicionados usando las propiedades top, bottom, left y right. Sin embargo, estas propiedades no trabajarán a menos que la propiedad position sea establecida antes. Además trabajan de manera diferente, según el método de posicionamiento que usemos. Puede ser estabecida a 5 diferentes valores:

  1. static: es el valor por defecto. Un elemento posicionado de manera estática es siempre posicionado de acuerdo al normal flujo de la página y no será afectado por las propiedades top, bottom, left y right.
  2. fixed: un elemento con posición rígida o fija (fixed) es posicionado de manera relativa a la ventana del browser y no se moverá aun haciendo un deplazamiento (scrolling) de ventana.
  3. relative: un elemento posicionado de manera relativa es posicionado relativo a su posición normal. El contendio de un elemento posicionado relativamente, puede ser movido y solapar otros elementos, pero el espacio reservado por el elemento es todavía preservado en el flujo normal.
  4. absolute: Un elemento posicionado de manera absoluta es posicionado relativo al primer elemento padre que tenga otra posicion que no sea static. Si no se encuentra un elemento tal, el bloque contenedor es <html>.
  5. inherit: el valor de la propiedad position es heredado del elemento padre.

Veamos un ejemplo de cada posicionamiento:

Position static

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf-8" />
        <title>Ejemplo de posicionamiento estático</title>
        <style>
            .unestilo{
                position:static
                left:100px;
                top:150px;
            }
        </style>
    </head>
    <body>
        <h2>Ejemplo de posicionamiento estático</h2>
        <p>
             Un párrafo sin estilo de posicionamiento, por lo tanto 
             se coloca usando el posicionamiento static, o sea 
             siguiendo el flujo Html.
        </p>
        <p class="unestilo">Otro párrafo, con estilo de 
         posicionamiento estático. Se ve que las propiedades
         top y left no afectan este elemento.
        </p> 
     </body>
</html>
Position:static: Los dos párrafos de la página se posicionan de la manera por defecto y en el segundo caso vemos que las propiedades left y top no tienen efecto.
Figura 1 - Position:static: Los dos párrafos de la página se posicionan de la manera por defecto
y en el segundo caso vemos que las propiedades left y top no tienen efecto.

Position fixed

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf-8" />
        <title>Ejemplo de posicionamiento rigido</title>
        <style  type="text/css">
            .unestilo{
                position:fixed;
                left:100px;
                top:150px;
                font-size:xx-large;
                padding-right:30px;
                
            }
        </style>
    </head>
    <body>
        <h2>Ejemplo de posicionamiento rígido</h2>
        <div style="background-color:green; width:100%; 
                height:350px"></div>
        <p>
             Un párrafo sin estilo de posicionamiento.
        </p>
        <div style="background-color:blue; width:100%; 
                height:350px"></div>
        <p class="unestilo">Este párrafo tiene estilo de 
         posicionamiento fijo, a 100 pixeles a la izquierda y 
         150 con respecto a arriba. Quedará fijo, por más que 
         hagamos un deslizamiento(scroll) de la página.
        </p>
        <div style="background-color:red; width:100%; 
                       height:350px">Hola</div>
     </body>
</html>
Position:fixed: El párrafo que se ve dentro del div verde, esta fijo y como vemos en la figura 3 quedará fijo en la posición actual por más que se haga un scroll
Figura 2 - Position:fixed: El párrafo que se ve dentro del div verde, esta fijo y como vemos en la
figura 3 quedará fijo en la posición actual por más que se haga un scroll.

 

Position:fixed: Al hacer un scroll, el párrafo con estilo de posicionamiento fijo, no se mueve
Figura 3 - Position:fixed: Al hacer un scroll, el párrafo con estilo de posicionamiento fijo, no se
mueve.

Position relative

Cuando se define un elemento con este tipo de posicinamiento, el elemento estará situado con relación a su posición normal, por lo que "left: 20" añade 20 píxeles a la posición izquierda del elemento. Veamos el siguiente código:

<!DOCTYPE html>
<html>
  <head>
    <style>
      h2.pos_left{
        position:relative;
        left:-50px;
      }
      
      h2.pos_right{
        position:relative;
        left:50px;
      }
    </style>
  </head>
  <body>
    <h2>Este es un encabezado que no tiene posicionamiento</h2>
    <h2 class="pos_left">Este encabezado es movido 50 pixeles a la izquierda, con respecto a
               su posición normal</h2>
    <h2 class="pos_right">Este encabezado es movido 50 pixeles a la derecha, con respecto a
               su posición normal</h2>
    <p>El <b>posicionamiento relativo</b> mueve un elemento con relación a su posición original.</p>
    <p>El estilo "left:-50px" substrae 50 pixeles de la posición original del elemento.</p>
    <p>El estilo "left:50px" suma 50 pixeles de la posición original del elemento.</p>
  </body>
</html>

La salida de esta página web será la siguiente:

Position:relative: Los elementos se mueven respecto a la posición que deberían tener en el flujo normal
Figura 4 - Position:relative: Los elementos se mueven respecto a la posición que deberían tener
en el flujo normal.
respag   
Panamá © 2012
Haga su donación para colaborar con La Escuela del Programador

La Escuela del Programador es un sitio web sin anuncios, sin ánimo de lucro, no es un sitio web comercial. Es el sueño de compartir con todos, muchos años de una gran pasión. Si realmente encuentra este sitio útil y lo aprovecha, le pido su generosa y no importa cuán modesta colaboración, simplemente para afrontar los costos de mantener este sitio disponible en internet.
No deseo lucrar con este sitio, ya que lo hago desinteresadamente, sólo le pido que, si puede, aporte (desde un dólar hasta lo que crea que puede dar), para afrontar los costos de dominio y hosting. Muchísimas gracias y ojalá juntos podamos hacer un sitio que sea una buena fuente de aprendizaje de programacíon en español.

Si no se siente en condiciones de colaborar, igualmente será bienvenido al sitio, es libre para todos y será un placer que encuentre mis artículos provechosos, pero si realmente me ayuda con una donación minima, seguramente, colaborará para que La Escuela del Programador se mantenga en la Web y crezca, conviertiendo a este sitio hecho con mucha pasión, dedicación y esfuerzo, en una buena fuente de aprendizaje.

Mis saludos cordiales y gracias por interesarse en mi sitio.

Rubén E. Spagnuolo
respag
Panamá - © 2012