duda de maquetación con css
tengo una página con su cabecerita pegada al borde inferior, su logo y su menú, todo muy mono. y debajo, con un fondo y un borde en el lado derecho tengo los contenidos. pero hete aquí que si los contenidos no llegan hasta el borde inferior ni el fondo ni el borde llegan hasta abajo, se me cortan y queda una cosa mu fea. el código html es este:
<code>
<div class="contenedor_html">
<div class="menu_navegacion">menú de arriba</div>
<div class="contenidos">contenidos</div>
</div>
</code>
y el css este:
<code>
.contenedor_html {
width: 650px;
background-image: url(../img/fondo_html.gif);
background-repeat: repeat;
background-position: 100% 100%;
border-right: 1px #cc0000 solid;
}
.contenidos {
width: 650px;
padding: 40px 60px 40px 60px;
}
</code>
he tratado de poner "height: 100%" a .contenedor_html, pero sólo me funciona en IE Win 5.5, ¿alguna sugerencia, oh mostros del CSS?
muchas gracias :)
meddle
prueba añadiendo (ademas del height) min-height: 100% pero no se si te va a chutar. de todos modos la proxima vez pon el link la pagina, hay miles de cosas que pueden ser. (en este caso solo un par, pero nunca se sabe)
cbp
lo he probado pero no va :(
tienes razó, lo mejor sería verlo colgado, pero no sé dónde subirlo. en cualquier caso gracias, meddle :)
meddle
enviame un email con el archivo zippeado
cbp
pos ya te lo he enviado a la dirección que aparece en tu web, el asunto es "duda css". va a tener el honor de ser el primero que vea las líneas maestras de mi increíble proyecto (momento autoestima 10).
muchas gracias :)
dirarck
cuelgalo cuelgalo pa verlo meddle
meddle
no sin permiso. hay un diseño ahi muy guapo que igual no quiere enseñar. ala, rabia chincha, yo ya lo he visto, jeje ;)
por cierto cbp, ya te enviado el arreglo a tu email, por si no lo habias visto.
txuma Plus
hombre, aunque no posteeis el diseño comentado el problema/solución, no?
meddle
si, eso eso. le he puesto lo siguiente (estaba esperando el ok de cbp a un par de fallitos):
<code>html, body {
height: 100%;
}
.contenedor_html {
position: relative;
width: 650px;
height: 100%;
min-height: 100%;
}</code>Tambien he quitado el overflow:auto del body y el padding inferior de contenidos.
orange
Me gusta, hacía tiempo que no me comía la cabeza con los heights al 100% pero seguro que me la hubiera comido ... mola
Ahora ya sólo me queda que se puedan alinear contenidos al "bottom" de un div (fácilmente, sin tener que utilizar otros divs) para que la maquetación con tablas pierda una de sus principales armas
txuma Plus
la única que le queda, amos......
Surt
esa es la solucion al 100% height? cachis la mar! y no hay que poner un contenedor de tamaño especifico para hacerlo? funciona con firebird y netscape? voy a probar!!!!!
FUNCIONA!!!! CACHIS EN LA MAR.
meddle
orange
Ahora ya sólo me queda que se puedan alinear contenidos al "bottom" de un div (fácilmente, sin tener que utilizar otros divs) para que la maquetación con tablas pierda una de sus principales armas
esplicate plis
orange
Pues meter un div con un height y width dado, y alinear el contenido, verticalmente, abajo del todo ... tal y como se consigue en los TD con el valign ... yo al menos no sé como hacerlo con los divs, igual es que estoy un poco atrasadillo con el tema ¿?¿?
txuma Plus
Sin meter otro DIV dentro y colocar ese con posición bottom:0, no se me ocurre cómo... :? ¿Se te ocurre algo, meddle?
meddle
no, que yo sepa no se puede alinear el contenido *real* abajo. lo que si puedes es meter el contenido que quieres abajo en una capa y darle esto:
<code>position:relative; bottom:0px;</code>pero eso ya lo sabias tu ;)
cbp
joer, meddle, me he puesto rojo y tó :oops: muchas gracias por el mail, por el interés y por el ánimo, así dan ganas de continuar estudiando :D
aún no he podido ver el código mucho porque ando algo liado en el curro, pero si me dices que funciona me fio de ti. en cuanto tenga algo más curraillo lo cuelgo para que lo veais y me critiqueis, pero no os espereis gran cosa que es mi primer trabajo maquetado en serio con css :D
meddle
de todas maneras un div no <em>deberia</em> (aunque no es incorrecto) contener solamente texto. Yo lo veo como un agrupador de elementos tipo bloque. Por tanto, nada te impide poner una clase o id al ultimo elemento tipo bloque dentro de tu div y mandarlo al bottom
meddle
cbp
joer, meddle, me he puesto rojo y tó :oops: muchas gracias por el mail, por el interés y por el ánimo, así dan ganas de continuar estudiando :D
ya te he dicho que me ha gustado MUCHO.
cbp
aún no he podido ver el código mucho porque ando algo liado en el curro, pero si me dices que funciona me fio de ti.
solo esos dos fallos. por cierto, pa los demas, los fallos son:
1. en mozilla aparece mas largo de pagina del necesario. como unos 70px.
2. en mozilla cuando escalas el texto a muy grande llega un momento que el tamaño del grid (fondo de capa contenedora, y por tanto el alto de esta) es menor que el que deberia ser (sale texto por fuera). pero a tamaños muy grandes realmente, no se si llegaras a tener usuarios viendo el fallo.
orange
Sí, ya sé que, utilizando otros métodos, se puede alinear abajo en un DIV
En lo que no estoy tan de acuerdo es en que no debería contener solamente texto, porque si eso se hiciera así habría mucho código que no valdría para nada ...
Ejemplo: yo simplemente quiero meter un pie de pagina con un texto dentro ... si quiero alinearlo abajo tengo que anidar dos divs, o un span dentro de un div ... con lo que redundo código, ya que debería poder hacerse solamente con una propiedad del div inicial ... creo que es un detalle que le faltan a los divs, y que creo necesario, de cara a facilitar la vida a la gente a la hora de diseñar con CSS
meddle
mmm, a ver, vamos a discrepar. un div es un comntenedor (inespecifico) que <em>a mi modo de ver</em> deberia contener elementos tipo bloque. si quieres texto lo metes en un p, por ejemplo.
Otra cosa es que CSS deberia darle la posibilidad a un div de alinear sus elementos (o incluso añadir un selector para su ultimo hijo, somo lo hay para el primero) con un bottom:0px; o un vertical-align:bottom; por ejemplo. Y ahi los dos estamos de acuerdo.
orange
Bueno, es cierto, el texto tendría que estar metido en algún tipo de etiqueta
meddle
y puedes alinear <em>ese elemento</em>, no? ;)
meddle
por cierto...
orange
Ejemplo: yo simplemente quiero meter un pie de pagina con un texto dentro ... si quiero alinearlo abajo tengo que anidar dos divs, o un span dentro de un div ... con lo que redundo código, ya que debería poder hacerse solamente con una propiedad del div inicial ... creo que es un detalle que le faltan a los divs, y que creo necesario, de cara a facilitar la vida a la gente a la hora de diseñar con CSS
creo que solo tienes que alinear lo que tu llamas el pie de pagina. tanto si el pie de pagina esta dentro de un contenedor global como si no lo esta, seguro que se forma de un div o un p con un texto dentro. Pues si no me equivoco puedes alinear ese div/p y listos.
orange
Sí, si hay varias alternativas, y muy limpias además, para alinear contenido abajo en un div .... pero falta la forma más simple de todas, que es un a propiedad en el propio div, igual que se hace con el alineamiento horizontal, ¿no crees?
meddle
bueno, con las premisas anteriores... ¿que le encuentras a faltar a la combinacion relative positioning con bottom? Extractos literales: <fieldset>This property specifies how far a box's bottom content edge is offset above the bottom of the box's containing block.</fieldset> y <fieldset>A relatively positioned box is generated when the 'position' property for an element has the value 'relative'. The offset is specified by the 'top', 'bottom', 'left', and 'right' properties.</fieldset>
orange
Respondiendo a lo que dices, lo único que digo es que esas propiedades hay que ponerselas siempre al elemento que va dentro del div, cuando yo creo que es mucho más lógico (igual que se hace con el horizontal) que fuera una propiedad del propio div
A ver, se me está ocurriendo otra cosa, ¿cómo haríais esto?
Yo ya tengo mi contenedor ocupando el 100%, pero ahora quiero que dentro de ese contenedor, haya varios divs, uno de ellos de altura variable ...
Ejemplo:
<div id="contenedor">
<div id="cabecera"></div>
<div id="contenido"></div>
<div id="pie"></div>
</div>
Pues yo quiero que la cabecera y el pie tengan una altura fija, y que el div del contenido se adapte al tamaño necesario ... pero la pagina siempre me habrá de ocupar el 100% de la pantalla
un, dos, tres ... responda otra vez
meddle
perdon he editado el anterior mientras tu contestabas.
respuesta: <code>#contenido {height: auto}</code>(aunque no lo he probado) :)
orange
jejeje, ya lo he probado y no rula ...
meddle
el unico problema es si los altos de cabecera y pie son en px, porque al ser contenido un % pues no se puede calcular la diferencia. pero si tu tuvieras cabecera y pie en % podrias hacer algo como esto:
<code>html, body {
height: 100%;
margin: 0;
padding: 0;
}
#contenedor {
position: relative;
width: 650px;
height: 100%;
min-height: 100%;
background: gray;
}
#cabecera {
position: relative;
height: 10%;
background: green;
}
#contenido {
position: relative;
height: 80%;
min-height: 80%;
background: yellow;
}
#pie {
position: relative;
bottom: 0px;
height: 10%;
background: orange;
}</code>y eso SI funciona
meddle
otra opcion: usar .htc (behaviours css). aunque menos elegante, tambien funcionaria, incluso con cabecera y pie siendo en px