Foros del Web » Creando para Internet » CSS »

Ocupar ancho de página

Estas en el tema de Ocupar ancho de página en el foro de CSS en Foros del Web. Hola, buenas! Esto debe de ser algo simplísimo pero se me escapa. Veréis, quiero poner una serie de imágenes como en el siguiente ejemplo: http://www.keimdesign.de/portfolio-k...ur-ansbach.php ...
  #1 (permalink)  
Antiguo 05/03/2012, 02:17
Avatar de elacunza  
Fecha de Ingreso: mayo-2011
Mensajes: 46
Antigüedad: 12 años, 11 meses
Puntos: 0
Ocupar ancho de página

Hola, buenas!
Esto debe de ser algo simplísimo pero se me escapa. Veréis, quiero poner una serie de imágenes como en el siguiente ejemplo:
http://www.keimdesign.de/portfolio-k...ur-ansbach.php

Lo que yo hago es poner las imágenes en float, y un padding o margin a la izquierda, para separar las imágenes, pero claro, ese margen se aplica también al final de la tira de imágenes, con lo que no ocupan todo el ancho de la página y no encaja con el resto. Esto es lo que pasa:
http://fotos.subefotos.com/0cb90b597...b4e1740c0o.jpg
Creo que se entiende lo que quiero decir, espero no explicarme como una patata jaja.

Seguro que es una tontería pero oye, que no hay manera.

Un saludo!
  #2 (permalink)  
Antiguo 05/03/2012, 09:15
Avatar de cristian_cena
Colaborador
 
Fecha de Ingreso: junio-2009
Mensajes: 2.244
Antigüedad: 14 años, 10 meses
Puntos: 269
Respuesta: Ocupar ancho de página

Hola elacunza.
Básicamente podrías hacerlo de tres maneras:

La primera: (La que quieres evitar):
Dando un margen a los elementos y un padding al contenedor
Código HTML:
Ver original
  1. <div id="elems">
  2.     <p class="el">lorem ipsum dolor amet...</p>
  3.     <p class="el">lorem ipsum dolor amet...</p>
  4.     <p class="el">lorem ipsum dolor amet...</p>
  5.     <p class="el">lorem ipsum dolor amet...</p>
  6.     <p class="el">lorem ipsum dolor amet...</p>
  7.     <p class="el">lorem ipsum dolor amet...</p>
  8. </div>
Código CSS:
Ver original
  1. &#8203;*{outline:1px solid cyan;}
  2. #elems{
  3.     width:390px;  /* w: 130 * 3 */
  4.     overflow:hidden;
  5.     background:gray;
  6.     padding:10px 0 0 10px; /* top y left*/
  7. }
  8. .el{
  9.     background:gray;
  10.     float: left;
  11.     width: 100px;
  12.     padding:10px;
  13.     margin:0 10px 10px 0; /* right y bottom */
  14.     /* total width: 100 + 20 + 10 */
  15. }

La segunda:
Quitando el margen de los elementos mediante una clase
Código HTML:
Ver original
  1. <div id="elems">
  2.     <p class="el">lorem ipsum dolor amet...</p>
  3.     <p class="el">lorem ipsum dolor amet...</p>
  4.     <p class="el cero">lorem ipsum dolor amet...</p>
  5.     <p class="el">lorem ipsum dolor amet...</p>
  6.     <p class="el">lorem ipsum dolor amet...</p>
  7.     <p class="el cero">lorem ipsum dolor amet...</p>
  8. </div>
Código CSS:
Ver original
  1. &#8203;*{outline:1px solid cyan;}
  2. #elems{
  3.     width:380px;  /* (100 + 20 + 10) * 3 - 10  */
  4.     overflow:hidden;
  5.     background:gray;
  6. }
  7. .el{
  8.     background:gray;
  9.     float: left;
  10.     width: 100px;
  11.     padding:10px;
  12.     margin:0 10px 0 0; /* right y bottom */
  13. }
  14.  
  15. .cero{
  16.     margin:0;
  17. }&#8203;&#8203;&#8203;


La tercera:
Anidando el contenedor de los elementos en una caja con overflow:hidden en la que restas el tamaño de la última columna
Código HTML:
Ver original
  1. <div id="wrap">
  2.     <div id="elems">
  3.         <p class="el">lorem ipsum dolor amet...</p>
  4.         <p class="el">lorem ipsum dolor amet...</p>
  5.         <p class="el">lorem ipsum dolor amet...</p>
  6.         <p class="el">lorem ipsum dolor amet...</p>
  7.         <p class="el">lorem ipsum dolor amet...</p>
  8.         <p class="el">lorem ipsum dolor amet...</p>
  9.     </div>
  10. </div>
Código CSS:
Ver original
  1. *{outline:1px solid cyan;}
  2. #wrap{
  3.     overflow:hidden;
  4.     width:380px;  /* w: 390 - right*/
  5.     background:red;
  6. }
  7. #elems{
  8.     width:390px;  /* w: 130 * 3 */
  9.     overflow:hidden;
  10.     background:gray;
  11. }
  12. .el{
  13.     background:gray;
  14.     float: left;
  15.     width: 100px;
  16.     padding:10px;
  17.     margin:0 10px 0 0; /* right = 10*/
  18.     /* total width: 100 + 20 + 10 */
  19. }

Saludos.



Última edición por cristian_cena; 06/03/2012 a las 13:10 Razón: un bugcito. ver #4
  #3 (permalink)  
Antiguo 06/03/2012, 03:45
Avatar de elacunza  
Fecha de Ingreso: mayo-2011
Mensajes: 46
Antigüedad: 12 años, 11 meses
Puntos: 0
Respuesta: Ocupar ancho de página

Muchísisimas gracias cristian_cena! voy a probar eso :D
Un saludo.

La tercera me ha encantado, muy buena solución, no se me habría ocurrido!

Última edición por elacunza; 06/03/2012 a las 04:00
  #4 (permalink)  
Antiguo 06/03/2012, 05:51
Avatar de cristian_cena
Colaborador
 
Fecha de Ingreso: junio-2009
Mensajes: 2.244
Antigüedad: 14 años, 10 meses
Puntos: 269
Respuesta: Ocupar ancho de página

De nada, me alegra que te haya servido.
Me corrijo: donde dije "restarle la última columna" debería haber dicho "restarle el último medianil" (margen).
La 3ra solucion no es idea mía, la aprendí acá en el foro, no recuerdo el autor.

Se puede presentar el caso de que necesites colocar medianil horizontal y tengas un alto variable en las cajas flotadas (si fueran altos fijo sería sencillo de resolver). Así que lo hice agregando un pequeño script mediante el cual, detectamos el alto de la caja padre de los elementos flotados, alto al cual le restamos el medianil y lo asignamos al cpntenedor #wrap

Con medianil horizontal:
Código HTML:
Ver original
  1. <div id="wrap">
  2.     <div id="elems">
  3.         <p class="el">lorem ipsum dolor amet... 1234567899876543212345</p>
  4.         <p class="el">lorem ipsum dolor amet... 1234567899876543212345</p>
  5.         <p class="el">lorem ipsum dolor amet... 1234567899876543212345</p>
  6.         <p class="el">lorem ipsum dolor amet... 1234567899876543212345</p>
  7.         <p class="el">lorem ipsum dolor amet... 1234567899876543212345</p>
  8.         <p class="el">lorem ipsum dolor amet... 1234567899876543212345</p>
  9.     </div>
  10. </div>
Código CSS:
Ver original
  1. *{outline:1px solid cyan;}
  2. body{
  3.     font:16px arial;
  4. }
  5. #wrap{
  6.     overflow:hidden;
  7.     width:380px;  /* w: 390 - right*/
  8.     background:red;
  9. }
  10. #elems{
  11.     width:390px;  /* w: 130 * 3 */
  12.     overflow:hidden;
  13.     background:gray;
  14. }
  15. .el{
  16.     background:gray;
  17.     float: left;
  18.     word-wrap: break-word;
  19.     width: 100px;
  20.     padding:10px;
  21.     margin:0 10px 10px 0; /* right = 10*/
  22.     /* total width: 100 + 20 + 10 */
  23. }
Código Javascript:
Ver original
  1. /* requiere jquery */
  2. var heightElems    = $("#elems").outerHeight();
  3. var heightMedianil = 10;
  4. var heightWrap     = heightElems - heightMedianil + "px";
  5.  
  6. $("#wrap").css({"height" : heightWrap});

​Saludos

edito: Al cargar primero el css y luego el js se puede producir un efecto pestaneo en el medianil inferior, puesto que al cargar la pagina renderiza primero el html/css. lo que se puede resolver fácilmente ver.

Última edición por cristian_cena; 06/03/2012 a las 13:11 Razón: un bugcito
  #5 (permalink)  
Antiguo 12/04/2012, 01:28
Avatar de elacunza  
Fecha de Ingreso: mayo-2011
Mensajes: 46
Antigüedad: 12 años, 11 meses
Puntos: 0
Respuesta: Ocupar ancho de página

wo! gracias Cristian, te lo curras, voy a mirarme eso.
Muchas, gracias!
  #6 (permalink)  
Antiguo 14/04/2012, 12:59
 
Fecha de Ingreso: septiembre-2011
Ubicación: Tacna Peru
Mensajes: 14
Antigüedad: 12 años, 7 meses
Puntos: 4
Respuesta: Ocupar ancho de página

Cita:
Iniciado por elacunza Ver Mensaje
Hola, buenas!
Esto debe de ser algo simplísimo pero se me escapa. Veréis, quiero poner una serie de imágenes como en el siguiente ejemplo:
[url]http://www.keimdesign.de/portfolio-keimdesign-werbeagentur-ansbach.php[/url]

Lo que yo hago es poner las imágenes en float, y un padding o margin a la izquierda, para separar las imágenes, pero claro, ese margen se aplica también al final de la tira de imágenes, con lo que no ocupan todo el ancho de la página y no encaja con el resto. Esto es lo que pasa:
[url]http://fotos.subefotos.com/0cb90b597603e4f67ef1b3bb4e1740c0o.jpg[/url]
Creo que se entiende lo que quiero decir, espero no explicarme como una patata jaja.

Seguro que es una tontería pero oye, que no hay manera.

Un saludo!
es muy facil mira dale a los elementos de la lista (las imagenes) inline-block y a su caja contenedora text-align:center y listo ! like a boss!
  #7 (permalink)  
Antiguo 14/04/2012, 22:35
Avatar de cristian_cena
Colaborador
 
Fecha de Ingreso: junio-2009
Mensajes: 2.244
Antigüedad: 14 años, 10 meses
Puntos: 269
Respuesta: Ocupar ancho de página

leonidas, de ese modo no solucionas el tema de los medianiles, solo te evitas de usar float.

Etiquetas: ancho, ocupar, página
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 16:01.