Foros del Web » Creando para Internet » CSS »

separación uniforme entre todos los divs

Estas en el tema de separación uniforme entre todos los divs en el foro de CSS en Foros del Web. hola a todos intento crear una plantilla tal que esta: soy bastante torpe con los css y los estilos, pero al menos me apaño para ...
  #1 (permalink)  
Antiguo 12/01/2012, 14:51
Avatar de navarone86  
Fecha de Ingreso: octubre-2009
Mensajes: 62
Antigüedad: 15 años, 1 mes
Puntos: 2
separación uniforme entre todos los divs

hola a todos

intento crear una plantilla tal que esta:




soy bastante torpe con los css y los estilos, pero al menos me apaño para situar cada div donde le corresponde usando la propiedad float

lo que quiero es que todos los divs que se ven estén separados entre si, por unos 10px, tal y como he intentado representar en el dibujo

el problema es que si pongo margin: 10px a los div, el resultado que tengo son 20px de separación en los lugares donde los divs se "tocan" y 10 en los bordes

además, mi intención es darles ancho a los div mediante porcentajes, y pero al añadir los margin, al pasarse de 100%, me mete los divs debajo

esto que pretendo no es nada del otro mundo, y por eso creo que debería haber alguna manera facilísima y rápida de hacerlo que yo desconozco

¿que propiedad debería usar?

un saludo y muchas gracias
  #2 (permalink)  
Antiguo 12/01/2012, 16:09
Avatar de C2am  
Fecha de Ingreso: enero-2009
Ubicación: Rosario, Argentina
Mensajes: 2.005
Antigüedad: 15 años, 9 meses
Puntos: 306
Respuesta: separación uniforme entre todos los divs

Dale un margen izquierdo a cada div, pero no el derecho (o al revés), en consecuencia se situaran a 10px del div que tengan a su izquierda, o en su defecto a 10px del lado izquierdo del contenedor.
Saludos

PD: muestra el código que estas usando para lograrlo (html y css)
__________________
El mundo nada puede contra un hombre que canta en la miseria.
-- Ernesto Sábato--
  #3 (permalink)  
Antiguo 12/01/2012, 17:26
Avatar de navarone86  
Fecha de Ingreso: octubre-2009
Mensajes: 62
Antigüedad: 15 años, 1 mes
Puntos: 2
Respuesta: separación uniforme entre todos los divs

ahora mismo mi código es el siguiente:

Código HTML:
Ver original
  1.     <link type="text/css" rel="stylesheet" href="styles.css"/>
  2. </head>
  3.     <div id="cabecera">
  4.         cabecera
  5.     </div>
  6.     <div id="menu">
  7.         menu
  8.     </div>
  9.     <div id="botones">
  10.         botones
  11.     </div>
  12.     <div id="contenido">
  13.         contenido
  14.     </div>
  15. </body>
  16. </html>

Código CSS:
Ver original
  1. #cabecera{
  2.     height: 80px;
  3.     background-color: green;
  4. }
  5. #menu{
  6.     float: left;
  7.     height: 80px;
  8.     width: 15%;
  9.     background-color: yellow;
  10. }
  11.  
  12. #botones{
  13.     height: 40px;
  14.     width: 85%;
  15.     float: left;
  16.     background-color: red;
  17. }
  18. #contenido{
  19.     height: 80px;
  20.     width: 85%;
  21.     float: left;
  22.     background-color: blue;
  23. }

lo que me gustaría tener (lo ideal) sería algo que me permita añadir más divs a la plantilla, sin tener que definir un class específico para ellos

es decir, conseguir con un solo class que todos los div queden separados 10 px entre ellos o los laterales

igual pido demasiado, como ya he dicho, estoy muy verde en cuanto a css


un saludo
  #4 (permalink)  
Antiguo 12/01/2012, 18:17
Avatar de C2am  
Fecha de Ingreso: enero-2009
Ubicación: Rosario, Argentina
Mensajes: 2.005
Antigüedad: 15 años, 9 meses
Puntos: 306
Respuesta: separación uniforme entre todos los divs

Con esto:

Código CSS:
Ver original
  1. div {margin:10px 10px 0 0}
le declaras un margin arriba de 10px, derecha:10px, abajo:0px, izquierda:0px.
Para que no te pierdas se lee como el reloj (en sentido horario comenzando por arriba).

Prueba con algo de trampa ya que le baje el width a contenido y botonera al 80%

Saludos

PD: me parece que te va a traer dolores de cabeza si en tu maquetación tienes más div dentro de los que ya tienes, debido a que a estos también se les asignara ese margen de 10px, pero ya es tu decisión.
__________________
El mundo nada puede contra un hombre que canta en la miseria.
-- Ernesto Sábato--
  #5 (permalink)  
Antiguo 13/01/2012, 04:42
Avatar de navarone86  
Fecha de Ingreso: octubre-2009
Mensajes: 62
Antigüedad: 15 años, 1 mes
Puntos: 2
Respuesta: separación uniforme entre todos los divs

muchísimas gracias por responder, creo que he conseguido lo que quería (aunque dejando de lado la idea de usar un único class)

el resultado es este, aunque hay cosas que no entiendo:

Código HTML:
Ver original
  1.     <link type="text/css" rel="stylesheet" href="styles.css"/>
  2. </head>
  3.     <div id="cabecera">
  4.         cabecera
  5.     </div>
  6.     <div id="menu">
  7.         menu
  8.     </div>
  9.     <div id="botones">
  10.         botones
  11.     </div>
  12.     <div id="contenido">
  13.         contenido
  14.     </div>
  15. </body>
  16. </html>


Código CSS:
Ver original
  1. #cabecera{
  2.     height: 80px;
  3.     background-color: green;
  4. }
  5.  
  6. #menu{
  7.     float: left;
  8.     height: 80px;
  9.     width: 15%;
  10.     background-color: yellow;
  11.     margin: 1% 1% 0 0
  12. }
  13.  
  14. #botones{
  15.     height: 40px;
  16.     width: 84%;
  17.     float: left;
  18.     background-color: red;
  19.     margin: 1% 0 0 0
  20. }
  21.  
  22. #contenido{
  23.     height: 80px;
  24.     width: 84%;
  25.     float: left;
  26.     background-color: blue;
  27.     position:relative;
  28.     margin: 1% 0 0 0
  29. }
  30.  
  31. body{
  32.     margin: 1%;
  33. }

si el margin del body me mete 1% a la izquierda y a la derecha, ya tengo 2
si el menu tiene 15% de ancho, tengo 17
más el 1% entre menu y contenido, 18

como es posible que para que todo encaje perfectamente, tenga que poner 84% a contenido?

PD: no conocía esa web, muy útil, gracias de nuevo ;)
  #6 (permalink)  
Antiguo 13/01/2012, 06:57
Avatar de juanito1712  
Fecha de Ingreso: mayo-2010
Ubicación: Valencia
Mensajes: 1.124
Antigüedad: 14 años, 6 meses
Puntos: 66
Respuesta: separación uniforme entre todos los divs

por experiencia propia...
los porcentajes apestan (por lo menos cuando los combinas con tamaños absolutos)

prueba algo de este estilo a ver si te gusta

Código:
#cabecera{
    position:absolute;
    height: 80px;
top:10px;
left:10px;
right:10px;
    background-color: green;
}
 
#menu{
    position:absolute;
    top: 100px;
    width: 200px;
left:10px;
bottom:10px;
    background-color: yellow;
    
}
 
#botones{
position:absolute;
    height: 40px;
top:100px;
left:210px;
right:10px;
    background-color: red;
}
 
#contenido{
    top:200px;
   left:210px;
   right:10px;
bottom:10px;
    background-color: blue;
    position:absolute;
}
 
body , html{
   margin:0;
   padding:0;
   position:relative;
}

de este modo todo encaja como un guante y se redimensiona de lujo

espero no haberme rallado ya que lo he escrito aquí directamente

un saludo
  #7 (permalink)  
Antiguo 13/01/2012, 11:44
Avatar de navarone86  
Fecha de Ingreso: octubre-2009
Mensajes: 62
Antigüedad: 15 años, 1 mes
Puntos: 2
Respuesta: separación uniforme entre todos los divs

gracias por el consejo

si que es cierto que el margin que estoy poniendo queda mejor si es algo fijo (10px), así al redimensionarlo horizontalmente, el diseño no varia verticalmente

por otra parte, no quería poner ningún elemento con ancho con tamaño absoluto, pensando que esto era una buena práctica, pero empiezo a pensar que no tiene porque ser así. en mi caso, creo que el menú quedaría mejor si le pongo un ancho constante, no? decirme si me equivoco

además, me he dado cuenta que al ponerle padding a los divs, me varía el tamaño de los divs ya que el div contenido me salta a la linea siguiente. el padding hay que sumarlo al ancho que le haya dado a mi div?

y por último, si como puedo darle a un div el ancho "restante" de pantalla?


un saludo
  #8 (permalink)  
Antiguo 13/01/2012, 11:50
Avatar de juanito1712  
Fecha de Ingreso: mayo-2010
Ubicación: Valencia
Mensajes: 1.124
Antigüedad: 14 años, 6 meses
Puntos: 66
Respuesta: separación uniforme entre todos los divs

todo depende de que quieres que se estire y que no

fijate en el ejemplo que te he dado, son todo tamaños absolutos pero con "truco"

fijate en la cabecera por ejemplo

le de dado un tamaño de alto absoluto de 80 y luego posiciones absolutas:
10 por arriba 10 desde la izquierda y 10 desde la derecha entonces según se estire su contenedor (en este caso body) la cabecera se estirará a lo ancho con el

y tu menu... seguramente quieras que sea de un ancho fijo pero que se estire hacia abajo segun tenga espacio

pues 10 desde la izquierda 100 desde arriba (contando los 80 de la cabecera y los 20 de los 2 margenes) y 10 desde abajo, entonces ya le das un ancho fijo, ya que seguramente no querras que se ensanche el menu...

espero haberme explicado bien ;)

juega con los valores que te he dado para comprenderlo

coje contenedor dale right: 20 y mira, luego right:30 y encoje y agranda la ventana para verlo en acción
  #9 (permalink)  
Antiguo 13/01/2012, 20:13
Avatar de C2am  
Fecha de Ingreso: enero-2009
Ubicación: Rosario, Argentina
Mensajes: 2.005
Antigüedad: 15 años, 9 meses
Puntos: 306
Respuesta: separación uniforme entre todos los divs

Hola
No comparto lo de posicionamiento absoluto, a menos que sea la única forma de ubicar una caja en un punto determinado. Para mí lo mejor es el posicionamiento relativo o el estatico (por defecto) para el tipo de maquetación que estamos analizando.

En un rato me siento y armo un ejemplo.

Saludos
__________________
El mundo nada puede contra un hombre que canta en la miseria.
-- Ernesto Sábato--
  #10 (permalink)  
Antiguo 14/01/2012, 04:16
Avatar de juanito1712  
Fecha de Ingreso: mayo-2010
Ubicación: Valencia
Mensajes: 1.124
Antigüedad: 14 años, 6 meses
Puntos: 66
Respuesta: separación uniforme entre todos los divs

eso me parece que es según el resultado quiera el.

por el primer ejemplo que nos ha pasado parece que quiere algo reajustable en lugar de algo estático.

seguramente mi ejemplo falla en la parte inferior que estaría limitada al borde de la ventana, pero para eso simplemente con no darle los valores bottom creo que bastaría

pero a ver el ejemplo que nunca está de mas
  #11 (permalink)  
Antiguo 15/01/2012, 08:52
Avatar de navarone86  
Fecha de Ingreso: octubre-2009
Mensajes: 62
Antigüedad: 15 años, 1 mes
Puntos: 2
Respuesta: separación uniforme entre todos los divs

bueno, ya he dado con la solución que en mi caso necesito:

la cabecera se queda con width: 100%

el menú se queda con ancho fijo: 180px y float: left

y a los botones y contenido solo tengo que ponerles overflow: hidden

no se exactamente que es lo que hace, creo que simplemente oculta a la vista lo que va detrás de alguna otra capa, pero vamos, que es una mala deducción

por tanto mi código queda así:

http://jsfiddle.net/UCW7J/

además, como quiero que tanto el div de los botones como el de contenido, se ajuste al alto de su contenido (valga la redundancia), puedo quitar el ancho que he puesto para el ejemplo y usar la misma clase para los 2 divs

todo perfecto ;)

espero que le sirva a alguien más


un saludo y gracias por vuestra ayuda
  #12 (permalink)  
Antiguo 15/01/2012, 16:32
Avatar de C2am  
Fecha de Ingreso: enero-2009
Ubicación: Rosario, Argentina
Mensajes: 2.005
Antigüedad: 15 años, 9 meses
Puntos: 306
Respuesta: separación uniforme entre todos los divs

Cita:
y a los botones y contenido solo tengo que ponerles overflow: hidden

no se exactamente que es lo que hace, creo que simplemente oculta a la vista lo que va detrás de alguna otra capa
http://www.librosweb.es/referencia/css/overflow.html

Saludos
__________________
El mundo nada puede contra un hombre que canta en la miseria.
-- Ernesto Sábato--

Etiquetas: diseño, divs, margin
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 00:43.