En cuanto a tu primera pregunta, prueba con este código (he coloreado los divs para que veas bien como están colocados):
Código:
<!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>
<title>Pie de pagina</title>
<meta http-equiv="Content-Type"
content="text/html; charset=iso-8859-1" />
<style type="text/css">
html, body { height: 92%;
}
div#contenedor { width: 90%;
background-color: rgb(102, 204, 204);
position: absolute;
height: auto ! important;
min-height: 100%;
height: 100%;
}
div#pie { background-color: rgb(0, 102, 0);
position: absolute;
bottom: 0pt;
left: 0pt;
width: 100%;
height: 30px;
margin-bottom: -30px;
clear: both;
}
</style>
</head>
<body>
<div id="contenedor">
<div id="pie"></div>
</div>
</body>
</html>
Por mucho contenido que pongas, el pie siempre aparecerá debajo de todo. La clave es que esté dentro del contendor y tenga un corte con el contenido que aparezca antes que él (clear: both;)
En cuanto a la segunda cuestión, si el div principal tiene un alto variable no creo que se le pueda hacer "ganar espacio físico o posición" para que el otro quede debajo de él, tenga el tamaño que tenga. Igual me equivoco.
Y en cuanto a la tercera cuestión, el hecho de que sea relativo no es lo que hace que no ocupe espacio o no sea tenido en cuenta en el flujo del documento para la posición del siguiente div, sino que sea flotado o no (float).
Por mucho que tu div tenga una posición relativa, ocupará espacio físico, no así si le pones que esté flotado, por ejemplo con float: left;
Ya dirás si esto te resuelve algo:
Mikel.