Ver Mensaje Individual
  #1 (permalink)  
Antiguo 19/06/2017, 05:11
Avatar de kahlito
kahlito
Colaborador
 
Fecha de Ingreso: marzo-2003
Ubicación: En el Estrecho y el mar
Mensajes: 2.936
Antigüedad: 21 años, 1 mes
Puntos: 65
3 columnas, izquierda y derecha pegadas a 0 y la del centro justo en medio.

Hola.

Estoy haciendo una maquetación con un header, tres columnas y footer. En cuanto a las tres columnas deben de quedar la izquierda pegada justo a la izquierda a 0px, la derecha justo a la derecha 0px y la del medio justo en el centro y a la vez serán responsive.

Hasta ahora he probado varias formas, por ejemplo así:

Código HTML:
Ver original
  1. <div id="pagewrap">
  2.  
  3.     <header>
  4.         <h1>3 Column Responsive Layout</h1>
  5.     </header>
  6.      <div id="centrado"> <!-- Prueba de centrado -->
  7.        
  8.    
  9.     <section id="content">
  10.         <h2>1st Content Area</h2>
  11.         <p>This page demonstrates a 3 column responsive layout, complete with responsive images and jquery slideshow.</p>
  12.     </section>
  13.    
  14.     <section id="middle">
  15.         <h2>2nd Content Area</h2>
  16.         <p>At full width all three columns will be displayed side by side. As the page is resized the third column will collapse under the first and second. At the smallest screen size all three columns will be stacked on top of one another.</p>
  17.         <p>Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi.</p>
  18.     </section>
  19.  
  20.     <aside id="sidebar">
  21.         <h2>3rd Content Area</h2>
  22.         <p>Eodem modo typi, qui nunc nobis videntur parum clari, fiant sollemnes in futurum.</p>
  23.         <p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.</p>
  24.         <p>Eodem modo typi, qui nunc nobis videntur parum clari, fiant sollemnes in futurum.</p>       
  25.     </aside>
  26.     </div>  <!-- /Prueba de centrado -->
  27.     <footer>
  28.         <h4>Footer</h4>
  29.         <p>Footer text</p>
  30.     </footer>
  31.  
  32. </div>

Y este es el css que uso:

Código CSS:
Ver original
  1. *{margin: 0; padding: 0; border: 0;}
  2. html, body{height:100%;}
  3. body {
  4.   font-family: 'Open Sans', sans-serif;
  5.   color: white;
  6. }
  7.  
  8. /* STRUCTURE */
  9. #pagewrap {
  10.     background: yellow;
  11.     margin: 0 auto;    
  12.     text-align: center;/*Aquí centro las columnas y si solo pongo la central queda al centro.*/
  13.     width: 100%;    
  14. }
  15. header {
  16.     background: black;
  17.     height: 100px; 
  18. }
  19. #content {
  20.     background: blue;    
  21.     display:inline-block;
  22.     left: 0;
  23.     position: absolute;  
  24.     vertical-align:top;
  25.     width: 20%;
  26. }
  27. #middle {
  28.     background: green;     
  29.     display: inline-block;
  30.     margin:0 auto;  
  31.     text-align: left;
  32.     vertical-align:top;
  33.     width:46%; 
  34. }
  35. #sidebar {
  36.     background:pink;   
  37.     display:inline-block;  
  38.     position: absolute;
  39.     right: 0;      
  40.     vertical-align:top;
  41.     width: 20%;
  42. }
  43. footer {   
  44.     padding: 0 15px;
  45.     background: brown;
  46. }

Hasta ahi parece que funciona, la columna izquierda se situa pegada a 0, la derecha pegada a la derecha total en 0 y la del centro al centro pero por ejemplo veo que el contenido total del alto de la derecha al bajar pasa por encima del footer y no lo desplaza. ¿Como podría solucionarlo?

¿Hay alguna otra manera mejor de hacerlo? Por ahora me gustarïa hacerlo por porcentajes para hacerlo lo mäs flexible posible sin usar float y solo usando display:inline-block; tampoco flex-box o grids pero si las otras alternativas ya son mas viables hoy día soy todo oido a cualquier otra opción nueva de hoy día.

Saludos.