Tengo dos divs uno al lado del otro. Me gustaría que la altura de ellos sea la misma, y que permanezca igual si uno de ellos cambia de tamaño. Sin embargo, no puedo entender esto. Ideas?
Para aclarar mi pregunta confusa, me gustaría que ambas cajas tengan siempre el mismo tamaño, por lo que si una crece porque se coloca texto en ella, la otra debería crecer para que coincida con la altura.
<div style="overflow: hidden">
<div style="border:1px solid #cccccc; float:left; padding-bottom:1000px; margin-bottom:-1000px">
Some content!<br/>
Some content!<br/>
Some content!<br/>
Some content!<br/>
Some content!<br/>
</div>
<div style="border:1px solid #cccccc; float:left; padding-bottom:1000px; margin-bottom:-1000px">
Some content!
</div>
</div>
html
css
html-table
flexbox
NibblyPig
fuente
fuente
Respuestas:
Flexbox
Con flexbox es una declaración única:
Es posible que se requieran prefijos para navegadores antiguos, consulte el soporte del navegador .
fuente
flex-direction: column
: jsfiddle.net/sdsgW/1Este es un problema común que muchos han encontrado, pero afortunadamente algunas mentes inteligentes como Ed Eliot en su blog han publicado sus soluciones en línea.
Básicamente, lo que haces es hacer que ambos divs / columnas sean muy altos agregando ay
padding-bottom: 100%
luego "engañar al navegador" para que piense que no son tan altos usandomargin-bottom: -100%
. Ed Eliot lo explica mejor en su blog, que también incluye muchos ejemplos.fuente
padding: 7px 10px
, si lapadding-bottom
propiedad se establece en 100%? (overflow:hidden
También se requirió PS para mí en elrow
)Esta es un área en la que CSS nunca ha tenido realmente ninguna solución: debe usar
<table>
etiquetas (o falsificarlas con losdisplay:table*
valores CSS ), ya que ese es el único lugar donde se implementó un "mantener un montón de elementos a la misma altura".Esto funciona en todas las versiones de Firefox, Chrome y Safari, Opera desde al menos la versión 8 y en IE desde la versión 8.
fuente
table
lugar detable-row
?width
para tus divs, a menos que agreguesdisplay: table
el elemento padre, lo que arruinará las cosas.Usando jQuery
Usando jQuery, puede hacerlo en un súper simple script de una línea.
Usando CSS
Esto es un poco más interesante. La técnica se llama columnas de imitación . Más o menos, en realidad, no establece la altura real para que sea la misma, pero arma algunos elementos gráficos para que se vean a la misma altura.
fuente
Me sorprende que nadie haya mencionado la técnica (muy antigua pero confiable) de columnas absolutas: http://24ways.org/2008/absolute-columns/
En mi opinión, es muy superior a la técnica de Columnas falsas y One True Layout.
La idea general es que un elemento con
position: absolute;
se posicionará contra el elemento padre más cercano que tengaposition: relative;
. Luego estira una columna para llenar el 100% de altura asignando tanto atop: 0px;
comobottom: 0px;
(o los píxeles / porcentajes que realmente necesite). Aquí hay un ejemplo:fuente
Puede usar el complemento Equal Heights de Jquery para lograrlo, este complemento hace que todos los divisores tengan exactamente la misma altura que otros. Si uno de ellos crece y otro también crecerá.
Aquí una muestra de implementación
Aqui esta el link
http://www.cssnewbie.com/equalheights-jquery-plugin/
fuente
Podrías usar columnas de imitación .
Básicamente utiliza una imagen de fondo en un DIV que contiene para simular los dos DIV de igual altura. Usar esta técnica también le permite agregar sombras, esquinas redondeadas, bordes personalizados u otros patrones originales a sus contenedores.
Sin embargo, solo funciona con cajas de ancho fijo.
Bien probado y funcionando correctamente en todos los navegadores.
fuente
Acabo de ver este hilo mientras buscaba esta misma respuesta. Acabo de hacer una pequeña función jQuery, espero que esto ayude, funciona como un encanto:
JAVASCRIPT
HTML
fuente
La forma de cuadrícula CSS
La forma moderna de hacerlo (que también evita tener que declarar un
<div class="row"></div>
contenedor alrededor de cada dos elementos) sería utilizar una cuadrícula CSS. Esto también le brinda un control sencillo sobre los espacios entre las filas / columnas de sus elementos.fuente
Esta pregunta se hizo hace 6 años, pero todavía vale la pena dar una respuesta simple con el diseño de flexbox hoy en día.
Simplemente agregue el siguiente CSS al padre
<div>
, funcionará.Las dos primeras líneas declaran que se mostrará como flexbox. Y
flex-direction: row
le dice a los navegadores que sus hijos se mostrarán en columnas. Yalign-items: stretch
cumplirá con el requisito de que todos los elementos secundarios se estiren a la misma altura si uno de ellos se vuelve más alto.fuente
I'd like both boxes to always be the same size, so if one grows because text is placed into it, the other one should grow to match the height.
que no se menciona en la respuesta aceptada ... Acabo de completarla aquí. ¿Quizás debería haberlo comentado en la respuesta aceptada?align-items: stretch;
el valor predeterminado de flex?Usar CSS Flexbox y min-height me funcionó
Digamos que tiene un contenedor con dos divisiones adentro y desea que esas dos divisiones tengan la misma altura.
Establecería ' display: flex ' en el contenedor, así como ' align-items: stretch '
Luego solo dale al niño divs una ' altura mínima ' del 100%
Ver el código a continuación
fuente
Si no le importa que uno de los
div
s sea un maestro y dicte la altura para ambosdiv
, hay esto:Violín
Pase lo que pase, el
div
de la derecha se expandirá o aplastará y se desbordará para que coincida con la altura deldiv
de la izquierda.Ambos
div
s deben ser hijos inmediatos de un contenedor y deben especificar sus anchos dentro de él.CSS relevante:
fuente
Me gusta usar pseudo elementos para lograr esto. Puede usarlo como fondo del contenido y dejar que llenen el espacio.
Con este enfoque, puede establecer márgenes entre columnas, bordes, etc.
fuente
los violín
HTML
CSS
fuente
He probado casi todos los métodos mencionados anteriormente, pero la solución flexbox no funcionará correctamente con Safari, y los métodos de diseño de cuadrícula no funcionarán correctamente con versiones anteriores de IE.
Esta solución se adapta a todas las pantallas y es compatible con todos los navegadores:
El método anterior igualará la altura de las celdas, y para las pantallas más pequeñas como dispositivos móviles o tabletas, podemos usar el
@media
método mencionado anteriormente.fuente
puedes usar jQuery para lograr esto fácilmente.
CSS
jQuery
HTML
Deberá incluir jQuery
fuente
<div>
tienen contenido dinámico. La razón que digo es si<div class="right">
tiene más contenido que el otro problema surge.Sé que ha pasado mucho tiempo, pero comparto mi solución de todos modos. Este es un truco de jQuery.
--- HTML
---- CSS
--- JQUERY
fuente
Este es un complemento jQuery que establece la altura igual para todos los elementos en la misma fila (marcando el offset.top del elemento). Entonces, si su matriz jQuery contiene elementos de más de una fila (offset.top diferente), cada fila tendrá una altura separada, basada en el elemento con la altura máxima en esa fila.
};
fuente
fuente
Estaba teniendo el mismo problema, así que creé esta pequeña función usando jquery ya que jquery es parte de todas las aplicaciones web hoy en día.
Puede llamar a esta función en el evento listo para la página
Espero que esto funcione para ti.
fuente
Recientemente me encontré con esto y realmente no me gustaron las soluciones, así que intenté experimentar.
.mydivclass {inline-block; vertical-align: middle; width: 33%;}
fuente
Lo que hice aquí es cambiar la altura a min-height y darle un valor fijo. Si uno de ellos se cambia de tamaño, el otro permanecerá a la misma altura. no estoy seguro si esto es lo que quieres
fuente