2010-03-03 13 views
7

Estoy tratando de encontrar la manera de crear 3 divs y alinearlos en la misma fila. Tener el 1er y 3er ancho fijo a 100px y tener el 2do (medio) uno audo ajustar su ancho en caso de cambiar el tamaño del navegador.CSS 3 DIVs en una fila: 2 arreglar 1 auto ajustar

<div> 
    <div id="d1"> content 1</div> 
    <div id="d2"> content 2</div> 
    <div id="d3"> content 3</div> 
</div> 

gracias,

+0

Soy * picazón * sugerir '

Contenido 1 contenido de 2 contenido 3
'... pero tal vez también hay una elegante forma basada en CSS. Ya veremos. –

+0

Hay ... ver respuestas ... :-) – AxelEckenberger

Respuesta

4

http://matthewjamestaylor.com/blog/ultimate-3-column-holy-grail-pixels.htm

huelga que, muchos divs adicionales para asegurarse de que todas las columnas son la misma altura. This may be what you're looking for. Todo se explica en este excelente artículo: http://www.alistapart.com/articles/holygrail

+1

ugh - ¿por qué harías un montón de hacks CSS con márgenes negativos y relleno cuando las tablas funcionan a la perfección? Irresponsable. – Wells

+8

@Wells Porque el uso de tablas para el diseño es aún más irresponsable. Las tablas son para datos tabulares. – ghoppe

5

Usted tiene el uso tp flota para alinear la izquierda y la derecha del marco. Pero para esto debes reordenar los divs como se muestra a continuación, y establecer los márgenes para el div medio.

<style type="text/css"> 
#d1 { 
    float: left; 
} 

#d2 { 
    float: right; 
} 

#d3 { 
    margin-left: 100px; 
    margin-right: 100px; 
} 
</style> 

<div> 
    <div id="d1"> content 1</div> 
    <div id="d2"> content 2</div> 
    <div id="d3"> content 3</div> 
</div> 

Editar

Gracias a Leniel Macaferi para señalar un error. El orden correcto de div s tiene que ser flotante div s primero, luego no flotante div s. Por lo tanto, corrigí el código (intercambié div d2 y div d3).

+0

No funciona: http://jsbin.com/ogigif/1/edit –

+0

@LenielMacaferi gracias por señalar que hay un error, el código corregido ahora funciona ... http://jsbin.com/evagat/1/edit – AxelEckenberger

+0

¡muy bonito! :) ... –

0

NVM esto es viejo, iba a cargo de lo que funcionó para mí

<style type="text/css"> 
#d1 { 

    float: left; 
    margin-left: 50px; 

} 

#d2 { 
    float: center; 
    margin-right: 5px; 
} 

#d3 { 
float: left; 
margin-right: 5px; 
} 
</style> 

<div> 
    <div id="d1"> content 1</div> 
    <div id="d3"> content 3</div> 
    <div id="d2"> content 2</div> 
</div> 
+0

No hay un valor 'centro' para float en CSS. (Ver http://www.w3schools.com/css/css_float.asp) – Rigganator

3

Div es un elemento en bloque, así que es una buena opción para manejar el ayuda de su propiedad de visualización

<div id="d1" style="display:inline-block; width:100px;">content1</div> 
<div id="d2" style="display:inline">content2</div> 
<div id="d3" style="display:inline-block; width:100px;">content3</div>​ 
1

sólo poner esto por ahí como una solución moderna, limpia: utilizar calc. violín: http://jsfiddle.net/bg7KS/

#d2 { 
    width: 200px; /* fallback older browsers */ 
    width: -webkit-calc(100% - 200px); 
    width: -moz-calc(100% - 200px); 
    width: calc(100% - 200px); 
}