Considere el siguiente código :
#wrapper {
width: 500px;
border: 1px solid black;
}
#first {
width: 300px;
border: 1px solid red;
}
#second {
border: 1px solid green;
}
<div id="wrapper">
<div id="first">Stack Overflow is for professional and enthusiast programmers, people who write code because they love it.</div>
<div id="second">When you post a new question, other users will almost immediately see it and try to provide good answers. This often happens in a matter of minutes, so be sure to check back frequently when your question is still new for the best response.</div>
</div>
Me gustaría que los dos divs estén uno al lado del otro dentro del envoltorio div. En este caso, la altura del div verde debería determinar la altura del envoltorio.
¿Cómo podría lograr esto a través de CSS?
#wrapper { display: flex; }
Respuestas:
Flota uno o ambos divs internos.
Flotando un div:
o si flota ambos, necesitará alentar a la envoltura div para que contenga a los dos niños flotantes, o pensará que está vacía y no colocará el borde alrededor de ellos
Flotando ambos divs:
fuente
overflow:auto
en el #wrapper Para que el tamaño aún se adapte al tamaño del contenido. (Sin la necesidad de un elemento claro: ambos)overflow: hidden
hace un gran trabajo aquí! Sin embargo, todavía es un poco mágico para mí. Pensé queoverflow: hidden
debería ocultar el contenido si no encaja en su contenedor. Pero, aquí el comportamiento es un poco diferente. ¿Podría dar más detalles sobre eso, por favor?overflow
propiedad borrará los flotadores tanto verticales como horizontales, razón por la cual en mi primer ejemplo,#second
no necesita un margen izquierdo, la propiedad de desbordamiento funciona siempre que su valor no lo seavisible
. Prefiero oculto a automático para aquellos por si acaso una barra de desplazamiento no se genera por accidente (lo que hará automáticamente) ... de cualquier manera no habrá contenido oculto en un escenario como este, ya que solo se ocultará si sale de su ancho de 500 px, pero siempre que no haya contenido de altura envolver dentro del ancho de forma normal ... sin esconderse;)Teniendo dos divs,
También puedes usar la
display
propiedad:Ejemplo de jsFiddle aquí .
Si
div1
excede una cierta altura,div2
se colocará junto adiv1
la parte inferior. Para resolver esto, usevertical-align:top;
endiv2
.Ejemplo de jsFiddle aquí .
fuente
div
crean s,inline
no debe mantener espacios, nuevas líneas, etc. entre ellos en su HTML. De lo contrario, los navegadores generarán un espacio entre ellos. Vea este violín : no puede mantener ambosdiv
s en la misma línea a menos que coloque sus etiquetas sin nada en el medio.Puede sentar elementos uno al lado del otro utilizando la propiedad flotante CSS:
Debería asegurarse de que el contenedor wrap div permita la flotación en términos de ancho, y que los márgenes, etc. estén configurados correctamente.
fuente
Intenta usar el modelo flexbox. Es fácil y corto de escribir.
En Vivo Jsfiddle en
CSS:
la dirección predeterminada es fila. Entonces, se alinea uno al lado del otro dentro del #wrapper. Pero no es compatible con IE9 o menos que esas versiones
fuente
flex
. ¡Gracias!Aquí está la solución:
su demo actualizada;
http://jsfiddle.net/dqC8t/1/
fuente
overflow: auto;
, todavía funciona. ¿Podría dar un ejemplo donde se requiere?margin: 0 0 0 302px;
porque dependewidth: 300px;
. ¡¡Pero gracias de cualquier manera!!Opción 1
Usar
float:left
en ambosdiv
elementos y establezca un ancho% para ambos elementos div con un ancho total combinado de 100%.Utilizar
box-sizing: border-box;
en los elementos div flotantes. El valor border-box fuerza el relleno y los bordes al ancho y alto en lugar de expandirlo.Use clearfix en el
<div id="wrapper">
para borrar los elementos secundarios flotantes que harán que la escala div del envoltorio tenga la altura correcta.http://jsfiddle.net/dqC8t/3381/
opcion 2
Utilizar
position:absolute
en un elemento y un ancho fijo en el otro elemento.Agregar posición: relativo al
<div id="wrapper">
elemento para que los elementos secundarios se posicionen absolutamente en el<div id="wrapper">
elemento.http://jsfiddle.net/dqC8t/3382/
Opción 3
Úselo
display:inline-block
en ambosdiv
elementos y establezca un ancho% para ambos elementos div con un ancho total combinado de 100%.Y de nuevo (igual que
float:left
ejemplo) usebox-sizing: border-box;
en los elementos div. El valor border-box fuerza el relleno y los bordes al ancho y alto en lugar de expandirlo.NOTA: los elementos de bloque en línea pueden tener problemas de espacio ya que se ven afectados por los espacios en el marcado HTML. Más información aquí: https://css-tricks.com/fighting-the-space-between-inline-block-elements/
http://jsfiddle.net/dqC8t/3383/
Una opción final sería usar la nueva opción de visualización llamada flex, pero tenga en cuenta que la compatibilidad del navegador podría entrar en juego:
http://caniuse.com/#feat=flexbox
http://www.sketchingwithcss.com/samplechapter/cheatsheet.html
fuente
float
No flotes mi bote.inline-block
rocas (Lo siento)Trate de usar los siguientes cambios de código para colocar dos divs uno frente al otro
Enlace JSFiddle
fuente
Es muy fácil, puedes hacerlo de la manera difícil
o la manera fácil
También hay un millón de otras formas.
Pero lo haría con la manera fácil. También me gustaría decirle que muchas de las respuestas aquí son incorrectas, pero ambas formas que he mostrado al menos funcionan en HTML 5.
fuente
Esta es la respuesta correcta de CSS3. Espero que esto te ayude de alguna manera ahora: D Realmente te recomiendo que leas el libro: https://www.amazon.com/Book-CSS3-Developers-Future-Design/dp/1593272863 En realidad, he hecho esta solución al leer este libro ahora . :RE
fuente
Agregar
float:left;
propiedad en ambos divs.Añadir
display:inline-block;
propiedad.Añadir
display:flex;
propiedad en padre div.fuente
Mi acercamiento:
CSS:
fuente
fuente
En material UI y react.js puedes usar la grilla
fuente