Ver Mensaje Individual
  #11 (permalink)  
Antiguo 17/11/2012, 19:33
Avatar de C2am
C2am
 
Fecha de Ingreso: enero-2009
Ubicación: Rosario, Argentina
Mensajes: 2.005
Antigüedad: 15 años, 10 meses
Puntos: 306
Respuesta: Alineando dos columnas con html5 y css3

Me parece que primero deberías pensar que estas buscando exactamente:
TITULO
IMAGEN TEXTO

TITULO
TEXTO IMAGEN

TITULO
IMAGEN TEXTO
Que según interpreto es la idea, y fijate muy bien el orden.

Entonces:
1- Sí el Titulo se posiciona por sobre [ imagen + texto ], entonces para qué convertirlo en inline-block, por qué no dejarlo como bloque y que ocupe su lugar natural. Luego, para que quede en línea con el texto, aplicamos un margin-left igual o un poquito superior al ancho que ocupará la imagen, para el que esté a la derecha.

Código CSS:
Ver original
  1. article h3{font-size:2em;}
  2.  
  3. article h3.derecha{margin-left:21%;}

2- aceptado 1, entonces queda posicionar la imagen y el texto según lo que buscas:

Caso 1:

Código HTML:
Ver original
  1.                 <h3>Fiestas este fin de semana</h3>        
  2.                 <p class="noticia-izquierda"> bla bla </p>
  3.                 <img src="imagenes/img-noticia1.jpg" class="img-derecha" />                              
  4.     </article>

Caso 2:
Código HTML:
Ver original
  1.                 <h3>Fiestas este fin de semana</h3>                        
  2.                 <img src="imagenes/img-noticia1.jpg" class="img-derecha" />
  3.                 <p class="noticia-izquierda"> bla bla </p>                              
  4.     </article>

Ahora para acomodar todo:
Como quieres usar display:inline-block y no float, entonces debes convertir los elementos de bloque a esa nueva realidad, y como img ya es inline, solo queda aplicarle esta propiedad a <p></p>

Código CSS:
Ver original
  1. article p{
  2.     width: 50%;
  3.     display: inline-block;  
  4.     border: 1px solid red;
  5.     vertical-align:middle;
  6. }
  7.  
  8. article img{
  9.     width: 20%;
  10.     border: 1px solid #fff;
  11.    vertical-align:middle;
  12. }
Fijate que si no defines la alineación vertical no quedará muy bien, así que debes definirla con vertical-align, en este caso la centre verticalmente con middle.

3- Como la imagen y el <p> (transformado en inline-block), sus anchos (recuerda sumar width, margenes, padding, border) son iguales o menores al 100% se posicionarán uno al lado del otro, tal como lo harían los elementos inline.


Aquí el ejemplo

No veo, cual es el problema de usar float, y para mí es más sencillo modificar una clase css que estar tocando el marcado html, claro usando también php. Pero bue, son formas de hacer lo mismo.

Ahora, también podrías investigar lo nuevo de css3, como flexible box, etc.
http://ksesocss.blogspot.com/2012/11...te-futuro.html

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

Última edición por C2am; 17/11/2012 a las 19:52 Razón: Me he dado cuenta que el título no lo había posionado enl ínea con el texto