Ver Mensaje Individual
  #4 (permalink)  
Antiguo 28/10/2007, 15:20
Avatar de Escoffie
Escoffie
 
Fecha de Ingreso: abril-2003
Ubicación: Mérida, Yucatán
Mensajes: 242
Antigüedad: 21 años, 7 meses
Puntos: 9
Re: height:100% con margin-top y margin-bottom

Hola.
Finalmente lo pude solucionar.
La solución la encontré aquí: http://andylangton.co.uk/articles/ja...ze-javascript/
Es Javascript, pero tiene mucha relación con el CSS.

Pongo el código completo, con HTML, Javascript y CSS para quien pudiera requerirlo.

Ha sido probado con IE7, FF2 y safari 3 para PC, en Windows Vista.
Si alguien pudiera probarlo en otros navegadores/plataformas y reportar errores, sería genial.

Con esto se logra un diseño de tipo:
CABECERA
--------------
CONTENIDO
--------------
PIE DE PAG

Donde contenido tiene una columna con anchura fija y tan alta como sea el espacio disponible entre cabecera y pie de pag.

Código HTML:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Documento sin t&iacute;tulo</title>
<style type="text/css">
<!--
html, body {
    margin:0;
    padding:0;
    height:100%;
}
#lienzo {
    margin: auto;
    padding: 0px;
    height: 100%;
    width: 950px;
    background-color:#999;
}
#lienzo #cabecera {
    position:absolute;
    top:0;
    left:0;
    width:100%;
    height:100px;
    color:#FFFFFF;
    background-color:#333333;
}
#lienzo #contenidoTexto {
    width:400px;
    background-color:#ccc;
    position:absolute;
    top:100px;
    overflow:auto;
}
#lienzo #piedepagina {
    position:absolute;
    bottom:0;
    left:0;
    width:100%;
    height:80px;
    color:#FFFFFF;
    background-color:#333333;
}
h1, p {
    margin:0;
}
-->
</style>
<script type="text/ecmascript" language="javascript">
<!--
function resize(){
    var viewportwidth;
    var viewportheight;
    
    // the more standards compliant browsers (mozilla/netscape/opera/IE7) use window.innerWidth and window.innerHeight
    
    if (typeof window.innerWidth != 'undefined') {
      viewportwidth = window.innerWidth;
      viewportheight = window.innerHeight;
    }
    
    // IE6 in standards compliant mode (i.e. with a valid doctype as the first line in the document)
    
    else if (typeof document.documentElement != 'undefined' && typeof document.documentElement.clientWidth != 'undefined' && document.documentElement.clientWidth != 0) {
       viewportwidth = document.documentElement.clientWidth;
       viewportheight = document.documentElement.clientHeight;
    }
    
    // older versions of IE
    
    else
    {
       viewportwidth = document.getElementsByTagName('body')[0].clientWidth;
       viewportheight = document.getElementsByTagName('body')[0].clientHeight;
    }
    // A la altura total se le resta 180px (100 de la cabecera y 80 del pie de página
    document.getElementById("contenidoTexto").style.height=viewportheight-180+"px";
}
window.onload=resize;
window.onresize=resize;
-->
</script>
</head>
<body>
<div id="lienzo">
  <div id="cabecera">Esta es la cabecera</div>
  <div id="contenidoTexto">
    <h1>Es un encabezado de nivel uno, pero que ancla o define a H1#contenidoTitulo</h1>
    <h2>Este es un encabezado de nivel dos, que debe ampliar un poco m&aacute;s la informaci&oacute;n sobre la secci&oacute;n</h2>
    <p>Duis aute irure dolor sed do eiusmod tempor incididunt quis nostrud exercitation. Ullamco laboris nisi sunt in culpa ut aliquip ex ea commodo consequat. Cupidatat non proident, excepteur sint occaecat in reprehenderit in voluptate. Mollit anim id est laborum.</p>
    <h3>Encabezado de nivel tres: </h3>
    <ul>
      <li>Duis aute irure dolor velit esse cillum dolore consectetur adipisicing elit. </li>
      <li>Ut aliquip ex ea commodo consequat. </li>
      <li>In reprehenderit in voluptate.</li>
    </ul>
    <p class="colorNombrecolor">Ut labore et dolore magna aliqua. Ut aliquip ex ea commodo consequat. Ullamco laboris nisi in reprehenderit in voluptate velit esse cillum dolore.</p>
    <h1>Es un encabezado de nivel uno, pero que ancla o define a H1#contenidoTitulo</h1>
    <h2>Este es un encabezado de nivel dos, que debe ampliar un poco m&aacute;s la informaci&oacute;n sobre la secci&oacute;n</h2>
    <p>Duis aute irure dolor sed do eiusmod tempor incididunt quis nostrud exercitation. Ullamco laboris nisi sunt in culpa ut aliquip ex ea commodo consequat. Cupidatat non proident, excepteur sint occaecat in reprehenderit in voluptate. Mollit anim id est laborum.</p>
    <h3>Encabezado de nivel tres: </h3>
    <ul>
      <li>Duis aute irure dolor velit esse cillum dolore consectetur adipisicing elit. </li>
      <li>Ut aliquip ex ea commodo consequat. </li>
      <li>In reprehenderit in voluptate.</li>
    </ul>
    <p class="colorNombrecolor">Ut labore et dolore magna aliqua. Ut aliquip ex ea commodo consequat. Ullamco laboris nisi in reprehenderit in voluptate velit esse cillum dolore.</p>
  </div>
  <div id="piedepagina">Este es el pie de página</div>
</div>
</body>
</html> 
Saludos, y espero que les sea útil.

Última edición por Escoffie; 28/10/2007 a las 15:34 Razón: Complementar información, corrección en el código por estándares de W3C