Hacer el puzle

Muy buenas,

A ver si me explico, porque me estoy volviendo loco....

De momento estoy haceiendo pruebas para ver si cambio el diseño de mi web y lo hago todo con DIVs. Bien, con la cabecera no he tenido problemas, pero.....

Llego a a parte central, el contenido y me defino 4 DIVs, 1 para todo, 1 para el título, 1 para el menú y 1 para el texto.

Si pongo el menú con FLOAT, ¿cómo puedo hacer que la capa de texto se ajuste a la derecha?
Y si pongo el texto con FLOAT, ¿cómo puedo hacer para que el DIV que lo agrupa todo se expanda hasta coger todo el texto?

Si paso este punto, lo mismo me decido :wink:
Hola Hq.

Quizás tenga algún error en las explicaciones de la web, de modo que ante cualquier cosa, preguntad aquí para evitaros quebraderos de cabeza.

Veamos,

Has creado un DIV que dentro tiene otros tres DIVs. En uno de ellos pones el título, en otro el menú y en el tercero el texto. No se si el título queda solo encima del texto o encima del menú y del texto a la vez. Dimelo.

Si el título está encima de ambos, del menú y del texto, mejor ponlo como un DIV separado, es decir, lo sacas de donde está y lo dejas independiente. Te ahorras lios.

Si solo está encima del texto y a la derecha del menú (como el texto) entonces en la hoja de estilo pegas esto:

#perico { BACKGROUND-COLOR:#00CCFF ; MARGIN:0px 0px 0px 0px ; WIDTH:712px ; FLOAT:left ; BORDER: #000 1px solid ;TEXT-ALIGN:justify ; }

y el el index, esto otro (dejo el código de toda la web de ejemplo):

<HTML>
<HEAD>
<TITLE>Mi Primera Web Con DIVs</TITLE>
<LINK media=all href="estilo-a001.css" type=text/css rel=stylesheet>
</HEAD>
<BODY>
<DIV id=global>
<DIV id=bartolo>


Este es mi primer DIV llamado bartolo</P>
</DIV>
<DIV id=catalina>


Este es mi segundo DIV llamado catalina</P>
</DIV>
<DIV id=perico>


Este es mi tercer DIV llamado perico</P>
</DIV>

</DIV>
</BODY>
</HTML>

Ahora tanto catalina como perico ocupan todo su espacio, pues ambos tienes definida su anchura con WIDTH:712px


Para sacar nota, verás que los DIVs catalina (donde iria el título) y perico (donde irá el texto) quedan muy pegados. Para separarlos un poco ve a la hoja de estilo y añade una separación de 2px a perico por encima suya. Además como catalina contendrá el título le vamos a poner que alinee el texto centrado (señalado en negrita y azul abajo):

BODY { BACKGROUND-COLOR:yellow ;TEXT-ALIGN:center; }
#global { BACKGROUND-COLOR:#FF9900 ; MARGIN:0px auto 0px auto; PADDING: 2px 2px 2px 2px ; WIDTH:800px ; BORDER:#000 1px solid ; }
#bartolo { BACKGROUND-COLOR:#00CC00 ; MARGIN:0px 2px 0px 0px ; WIDTH:80px ; FLOAT:left ; BORDER: #000 1px solid ;TEXT-ALIGN:left ; }
#catalina { BACKGROUND-COLOR:#00CCFF ; MARGIN:0px 0px 0px 0px ; WIDTH:712px ; FLOAT:left ; BORDER: #000 1px solid ;TEXT-ALIGN:center ; }
#perico { BACKGROUND-COLOR:#00CCFF ; MARGIN:2px 0px 0px 0px ; WIDTH:712px ; FLOAT:left ; BORDER: #000 1px solid ;TEXT-ALIGN:justify ; }
P {padding: 10px 10px 10px 10px}

Es cuestión de lógica, sentido común y saberse las propiedades y los valores que les podemos dar. Deberiamos hacer una tabla con todas las propiedades y sus posibles valores para usar de guia, no? Estaría bien.

Sigue preguntando Hq, así me sirve para ir incorporando lecciones según os explico lo que me pregunteis, oki? Y dinos como queda.

Ya he colocado un ejemplo con lo que nos comentas en CCTW. Mira, ha quedado bien?
http://www.comocreartuweb.com/curso-con-div/div-leccion2-tres-divs-…


NOTA: A veces, conseguir que se vea bien con todos los navegadores es un tostón increible. Os advierto. En cualquier caso todo se puede arreglar para conseguirlo, pero haciendo "trucos". Por eso, preguntad sin dudarlo.

Ah! Si pegas el código de tu web y de tu hoja de estilo podemos corregirte mejor y proponerte alternativas mejores... quizás...

Un abrazo!
Si, más o menos es eso, aunque lo estaba solucionando usando tablas y divs mezclados.

En cuanto pueda me pondré a probarlo así. Y seguramente os deje también el código de mis pruebas, para verlo. Muchas gracias.

De aquí he aprendido otra cosita: resulta que si en todos los divs, les pones FLOAT: LEFT, se van juntando, lo que facilita mucho el "tema puzle".

Gracias de nuevo!!!!
A ver, lo que he intentado de hacer es difícil de explicar con palabras, así es que creo que os voy a pegar el código para facilitaros las cosas... (si es que soy capaz :roll: ).

Es un poco largo, pero puede merecer la pena. Finalmente he optado por utilizar DIVs y Tablas. Perdonad por los colores que utilizo, pero es sólo una prueba que he hecho para mi y que ahora pongo en común. A mi me ha servido para entender mejor el funcionamiento de los DIVs.

Primero lo pensé y lo dibujé en papel. Digo esto, porque creo que es importante a la hora de ponerse a diseñar. Si quereís ver el resultado, copiad cada fichero y ejecutadlo, ya vereis.....


Primero la hoja de estilos:

body {background-color:purple ; }

#general { BACKGROUND-COLOR:blue ; BORDER: #000 1px solid ; WIDTH: 800px ;
padding: 10px 10px 10px 10px ; }


#cabecera { BACKGROUND-COLOR:#00bbff ; BORDER: #000 1px solid ; WIDTH: 790px
; padding: 5px 5px 5px 5px ; }
#logo { BACKGROUND-COLOR:#00bbff ; BORDER: #000 1px solid ; WIDTH: 250px
; }
#resto-ca { BACKGROUND-COLOR:#00bbff ; BORDER: #000 1px solid ; width: 531px
; float: right ; }


#contenido { BACKGROUND-COLOR:#00bbff ; BORDER: #000 1px solid ;
WIDTH: 790px ; padding: 10px 5px 15px 5px ;
margin: 5px 0px 5px 0px ; }
#titulo { BACKGROUND-COLOR:#00bbff ; BORDER: #000 1px solid ;
WIDTH: 779px ; text-align: center ; margin: 2px 4px 2px 4px ; }
#menu { BACKGROUND-COLOR:#00bbff ; BORDER: #000 1px solid ; WIDTH: 240px
; }
#texto { BACKGROUND-COLOR:#00bbff ; BORDER: #000 1px solid ; width: 534px
; text-align: justify ; }


#pie { BACKGROUND-COLOR:#00bbff ; BORDER: #000 1px solid ; WIDTH: 790px
; padding: 10px 5px 15px 5px ; margin: 5px 0px 5px 0px ; }
#est { BACKGROUND-COLOR:#00bbff ; BORDER: #000 1px solid ; WIDTH: 125px
; float: left ; margin: 0px 2px 0px 0px ; }
#busca { BACKGROUND-COLOR:#00bbff ; BORDER: #000 1px solid ; WIDTH: 325px
; float: left ; margin: 0px 2px 0px 0px ; }
#varios { BACKGROUND-COLOR:#00bbff ; BORDER: #000 1px solid ; WIDTH: 170px
; float: left ; margin: 0px 2px 0px 0px ; }
#resto-p { BACKGROUND-COLOR:#00bbff ; BORDER: #000 1px solid ; width: 150px
; float: left ; }

table.contenido { width: 99% ; }
td.men { width: 260px ; }
td.tex { width: 520px ; }


Y ahora la página:

<HTML>

<HEAD>
<title>Miniproyecto</title>
<LINK rel="stylesheet" href="estilos.css" type="text/css" media="all">
</HEAD>


<BODY>

<DIV id="general">

<DIV id="cabecera">
<DIV id="resto-ca">


Y aquí el resto de la cabecera: publi, etc.</p>
</DIV>
<DIV id="logo">


Aquí va el logo</p>
</DIV>
</DIV>

<DIV id="contenido">
<div id="titulo">


Este es el título de la página</p>
</div>
<table class="contenido">
<tr>
<td class="men" valign="top">
<div id="menu">


Ahora el menu

opción 1.

Opción 2.

...

Opción N.</p>
</div>
</td>
<td class="tex">
<div id="texto">


Y, por último, aquí se cuenta lo que haya que contar

Se ponen fotos, enlaces, etc.</p>


Por supuesto, caben todos los párrafos que se deseen</p>


Incluso, grupos de fotos, en fin, lo que quieras!!!</p>


Es curioso, que sea necesario poner primero la capa que
flota a la derecha, antes que la que queda a la izquierda
(pero ¡ojo!, que la de la izquierda no flota). Habrá que ver
cómo consigo lo que quiero en la parte de abajo!!!!</p>
</div>
</td>
</tr>
</table>
</div>

<div id="pie">
<table width=100%>
<tr>
<td>
<div id="est">


Contador!</p>
</div>
<div id="busca">


Barrita de Google</p>
</div>
<div id="varios">


Otras cosas que se me ocurran (banners, etc)</p>
</div>
<div id="resto-p">


Y por si se me olvida algo, jejejeje</p>
</div>
</td>
</tr>
</table>
</div>

</DIV>

</BODY>

</HTML>




Saludos!!!! (Y perdón por la extensión)
Saludos de nuevo Hq. Parece que nos vamos animando con esto, je je, que bien. Bueno, veamos algunas cosillas.

En primer lugar algo muy importante que preguntarte ¿Con qué navegador estas viendo los resultados de tu prueba? Quizás Opera? Lo digo por que en Explorer parece que los dos primeros DIVs, los del logo y el de la publi, no se quedan en linea sino uno abajo del otro. No todos los navegadores interpretan igual el CSS de modo que hay que ir poniendo propiedades poco a poco y viendo como responden los navegadores más importantes (Explorer, Opera, Firefox y Navigator).

Si ocurre algún problema como el que te comento, que un div que debe estar a la derecha aparece en un n avegador a la izquierda, intenta darle un poco menos de anchi (WIDTH) al uno de ellos para que queden en linea.

Lo de poner todos a la izquierda o alguno a la derecha da igual, pues al final lo que queremos es que queden uno al lado de otro. Si un DIV de 600 pixeles tiene dentro dos de 290 (suponiendo que le quitamos 10 para margenes y eso...) da igual que el de la derecha flote a la izquierda o a la derecha, al final quedan juntos y en linea. Ten en cuenta que flotan "a la derecha del DIV que los contiene", no "a la derecha del DIV de al lado".

Lo de dibujar antes de ponerse manos a la obra es imprescindible. Sobre todo es bueno ir escribiendo las anchuras de cada uno de los DIVs que componen el puzzle. Así sabremos más o menos cuanto hemos de poner, teniendo en cuenta siempre que a la anchura hay que restarle el ancho que ocupa el borde, los margenes, etc. Si un DIV te da problemas de anchura, es decir, aparece debajo en lugar de a la derecha de otro tal y como deseas, lo mejor es quitarle un poco de anchura. Y también es bueno no dar demasiado margen ni demasiado ancho a la linea de borde, pues se puede descolocar todo un poco según el navegador que s use para verla.

Te comento algunas cosillas...

1.- La web no queda centrada. Así que lo arreglamos de la siguiente manera (siempre se hace así):

En la hoja de estilo incluimos esto TEXT-ALIGN:center dentro de las características del BODY. EL tuyo quedaría así:

BODY {BACKGROUND-COLOR:purple ; TEXT-ALIGN:center ; }

Con eso solo, solo aparece centrado en Explorer, pero no en Opera, así que además de ese cambio tenemos que incluir en la definición del DIV que engloba todo (en tu caso se llama general) este MARGIN con estos valores:

#general { BACKGROUND-COLOR:blue ; BORDER: #000 1px solid ; WIDTH: 800px ; PADDING: 10px 10px 10px 10px ; MARGIN: 0px auto 0px auto ; }

Eureka! Ahora sale todo centrado en cualquier (espero...) navegador.

2.- Un consejo. Si dentro de un DIV hay varios elementos y uno flota, haz que flote también el resto para evitar problemas. Si no no verás lo mismo en todos los navegadores. Así que pon un FLOAT:left a logo. Todo cuadrará mejor.

Seguimos comentando, oki?
Gracias Jorgens!!

No me había pardo a pensar en otros navegadores (uso Firefox) porque de momento es una prueba, para entender cómo funcionan los DIVs.

En cuanto tenga un rato probaré lo que me dices para ver cómo sale.
Te lo estas currando! No todos los webmaster saben usar los DIVs, así que en poco tiempo te vas a poner por encima de ellos!

Sobre todo paciencia con lo de que se vea bien en todos los navegadores... cada uno hace lo que le da la gana, y no es fallo tuyo sino de ellos que no respetan el CSS bien.

En cualquier caso nuestro cometido es que se vean bien las páginas en todos los navegadores, así que sea culpa de quien sea hemos de arreglarlo de alguna forma. Siempre hay algún truco para conseguirlo, pero para dar con él se vuelve uno loco.

Así que si no consigues algo mejor dilo aquí a tiempo por si conocemos la solución. Así te ahorras tiempo y dolores de cabeza, je je je. Y de paso aprendemos un poco más.

Ale! a currar!
Después de prubas y más pruebas he llegado a comprender un poco cómo funcionan los 2 navegadores que uso: IE y Firefox. Primero os cuento las diferencias que he encontrado y lugo las decisiones que he tomado, para ayudar a quien lo necesite....

Las diferencias:

1.- Mientras que Firefox contempla el PADDING antes de contar el WIDTH, IE lo hace al revés. Me explico: si pones un PADDING de 10px por los 4 costados y un WIDTH de 1000px, en Firefox dispondrás de 1000px en el interior del DIV, mientras que en IE sólo te quedarán 990px.

2.- A la hora de contar los px del DIV que defines y suponiendo que todos los DIVs "flotan", Firefox cuenta como grosor el BORDER, mientras que IE no lo hace, o sea que si hemos definido un DIV con un ancho de 1000px y dentro otros 2 que flotan con 500px cada uno y BORDER 1px, en IE los veremos en la misma línea, pero en Firefox aparecerá uno debajo del otro.

3.- Por último, en IE, el FLOAT hace que el DIV que hay debajo amplie su altura, mientras que en Firefox no es así, con lo que en este último aparecería una especie de cuadro vacío (o no) justo en el punto en el que comienzan los DIVs que hay dentro (menudo lio).

Soluciones, o sea cosas prácticas:

1.- Definir y ajustar la propiedad HEIGHT en el DIV que contenga otros.

2.- Procurar no poner BORDER a todos los DIVS, o por lo menos que no tengan que estar alineados.

3.- Que el color de fondo en los DIVs que contienen a otros coincida en la medida de lo posible.

Con estas pequeñas soluciones se pueden evitar muchos problemas de visualización entre los diferentes navegadores.

Espero que os sea de utilidad!!!
Exacto! A primera vista tienes razón tanto en los problemas como en su solución. Es curioso observar el comportamiento del CSS en cada navegador. Curioso y a veces atormentador! je je je, se vuelve uno loco intentando cuadrarlo todo en un navegador y luego resulta que sale mal en otro. Pero si, las notas que has puesto son así.

Por eso en lugar de dejar MARGIN en un div para crear una separación desde su borde al interior, es mejor dar un PADDING a los elementos de dentro. Así funcionará bien y el resultado es el mismo.

Hay mil trucos para conseguir los mismos resultados en todos los navegadores, es toda una ciencia, todo un arte.

En las lecciones por ahora me basta que se sepan usar las propiedades de los DIVs. Más adelante intentaré agregar cosas de este tipo.

Un saludo! :wink:
hola muy buenas, nos e si se sigue posteando por aqui ya que veo que esto esta parado desde ocubre, me gustaria dar mi opinion sobre divs ya que e creado mi web al completo en base a divs.
e de decir en mi contra que no se casi na de programacion a base de codigo asiq ue lo e echo todo atraves del diseño y si que me da diferencias entre los navegadores si quereis podeis pasaros por ella para que veais bien la diferencia entre lo que hace mozzila y lo que hace IExplorer.

la verdad es que veo bastante mas sencillo diseñar una web atraves de divs tamb es verdad que nos e hacerlo contablas, empece con divs y ahi me e quedado.

bueno pues muchas gracias por esta pagina que te lo curras mucho jorgens.

un abrazo. http://blackbabylon.iespana.es/
www.presupuestoswebs.com
Buenas,

La verdad es que en cuanto al diseño tu página está bastante bien, pero la línea de menú se sale del recuadro y eso no queda muy bien. Si quieres más críticas, ya sabes cuál es la sección apropiada.

Hombre, yo el tema de los DIVs lo tengo bastante parado, sobre todo porque tengo ya mogollón de páginas y cambiarlas todas necesita un tiempo del que en estos momentos no dispongo (y ya se que cuanto más lo retrase será peor, porque el número de páginas no para de aumentar).

La diferencia entre DIVs y Tablas, en cuanto al diseño no es muy grande, al final resulta que es como una hoja en la que pintas unos cuadraditos. La diferencia es más en el uso de esos cuadraditos y cada manera tiene sus ventajas e inconvenientes, así es que tampoco te comas mucho la cabeza.

Saludos!
hola buenas, os ongo otra pagina que estoy haciendo aver que os parece, se que no es la seccion pero es que me an comentado que los divs se salen del fondo y es para ver si me ayudais a solucionarlo. muchas gracias:

http://abu-simbel.iespana.es