J'ai deux divs côte à côte. J'aimerais que leur hauteur soit la même et reste la même si l'un d'eux redimensionne. Je ne peux pas comprendre celui-ci cependant. Des idées?
Pour clarifier ma question confuse, j'aimerais que les deux cases aient toujours la même taille, donc si l'une grandit parce que du texte y est placé, l'autre devrait grandir pour correspondre à la hauteur.
<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
la source
la source
Réponses:
Flexbox
Avec flexbox, c'est une seule déclaration:
Des préfixes peuvent être requis pour les anciens navigateurs, voir la prise en charge des navigateurs .
la source
flex-direction: column
: jsfiddle.net/sdsgW/1C'est un problème commun que beaucoup ont rencontré, mais heureusement, certains esprits intelligents comme Ed Eliot sur son blog ont publié leurs solutions en ligne.
Fondamentalement, ce que vous faites est de rendre les deux div / colonnes très hautes en ajoutant un
padding-bottom: 100%
, puis "tromper le navigateur" en pensant qu'elles ne sont pas si hautes en utilisantmargin-bottom: -100%
. C'est mieux expliqué par Ed Eliot sur son blog, qui comprend également de nombreux exemples.la source
padding: 7px 10px
, si lapadding-bottom
propriété est définie sur 100%? (PSoverflow:hidden
était également requis pour moi sur lerow
)C'est un domaine où CSS n'a jamais vraiment eu de solutions - vous en êtes à l'utilisation de
<table>
balises (ou à les simuler en utilisant lesdisplay:table*
valeurs CSS ), car c'est le seul endroit où un «garder un tas d'éléments de la même hauteur» a été implémenté.Cela fonctionne dans toutes les versions de Firefox, Chrome et Safari, Opera à partir d'au moins la version 8 et dans IE à partir de la version 8.
la source
table
lieu detable-row
?width
pour vos divs, sauf si vous ajoutezdisplay: table
l'élément parent, ce qui gâchera les choses.Utilisation de jQuery
En utilisant jQuery, vous pouvez le faire dans un script d'une seule ligne super simple.
Utilisation de CSS
C'est un peu plus intéressant. La technique s'appelle les fausses colonnes . Plus ou moins que vous ne définissez pas vraiment la réelle hauteur être le même, mais vous rig quelques éléments graphiques afin qu'ils regardent la même hauteur.
la source
Je suis surpris que personne n'ait mentionné la technique (très ancienne mais fiable) des colonnes absolues: http://24ways.org/2008/absolute-columns/
À mon avis, il est de loin supérieur à la fois aux fausses colonnes et à la technique de One True Layout.
L'idée générale est qu'un élément avec
position: absolute;
se positionnera par rapport à l'élément parent le plus procheposition: relative;
. Vous étirez ensuite une colonne pour remplir 100% de hauteur en attribuant à la fois untop: 0px;
etbottom: 0px;
(ou les pixels / pourcentages dont vous avez réellement besoin). Voici un exemple:la source
Vous pouvez utiliser le plugin Equal Heights de Jquery pour accomplir, ce plugin fait tous les div de même hauteur exacte que les autres. Si l'un d'eux grandit et l'autre grandira également.
Voici un exemple d'implémentation
Voici le lien
http://www.cssnewbie.com/equalheights-jquery-plugin/
la source
Vous pouvez utiliser des fausses colonnes .
Fondamentalement, il utilise une image d'arrière-plan dans un DIV contenant pour simuler les deux DIV d'égale hauteur. L'utilisation de cette technique vous permet également d'ajouter des ombres, des coins arrondis, des bordures personnalisées ou d'autres motifs géniaux à vos conteneurs.
Ne fonctionne cependant qu'avec des boîtes à largeur fixe.
Bien testé et fonctionne correctement dans tous les navigateurs.
la source
Je viens de repérer ce fil lors de la recherche de cette réponse. Je viens de faire une petite fonction jQuery, j'espère que cela aide, fonctionne comme un charme:
JAVASCRIPT
HTML
la source
La manière de la grille CSS
La manière moderne de le faire (qui évite également d'avoir à déclarer un
<div class="row"></div>
-wrapper tous les deux éléments) serait d'utiliser une grille CSS. Cela vous permet également de contrôler facilement les écarts entre vos lignes / colonnes d'articles.la source
Cette question a été posée il y a 6 ans, mais il vaut toujours la peine de donner une réponse simple avec la disposition flexbox de nos jours.
Ajoutez simplement le CSS suivant au père
<div>
, cela fonctionnera.Les deux premières lignes déclarent qu'il sera affiché en tant que flexbox. Et
flex-direction: row
indique aux navigateurs que ses enfants seront affichés en colonnes. Etalign-items: stretch
répondra à l'exigence que tous les éléments enfants s'étirent à la même hauteur si l'un d'eux devient plus haut.la source
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.
qui n'est pas mentionnée dans la réponse acceptée ... Je viens de terminer ici. Peut-être aurais-je dû le commenter sur la réponse acceptée?align-items: stretch;
flex par défaut?Utiliser CSS Flexbox et min-height a fonctionné pour moi
Supposons que vous ayez un conteneur avec deux divisions à l'intérieur et que vous souhaitiez que ces deux divisions aient la même hauteur.
Vous devez définir « display: flex » sur le conteneur ainsi que « align-items: stretch »
Ensuite, donnez à l'enfant divs une « hauteur minimale » de 100%
Voir le code ci-dessous
la source
Si cela ne vous dérange pas que l'un des
div
s soit un maître et qu'il dicte la hauteur pour les deux,div
il y a ceci:Violon
Quoi qu'il en soit, le
div
bouton de droite s'agrandit ou s'ajuste et déborde pour correspondre à la hauteur dudiv
côté gauche.Tous les deux
div
s doivent être les enfants immédiats d'un conteneur et doivent spécifier leurs largeurs à l'intérieur.CSS pertinents:
la source
J'aime utiliser des pseudo-éléments pour y parvenir. Vous pouvez l'utiliser comme arrière-plan du contenu et les laisser remplir l'espace.
Avec cette approche, vous pouvez définir des marges entre les colonnes, les bordures, etc.
la source
Le violon
HTML
CSS
la source
J'ai essayé presque toutes les méthodes mentionnées ci-dessus, mais la solution flexbox ne fonctionnera pas correctement avec Safari et les méthodes de disposition de la grille ne fonctionneront pas correctement avec les anciennes versions d'IE.
Cette solution s'adapte à tous les écrans et est compatible avec tous les navigateurs:
La méthode ci-dessus égalera la hauteur des cellules, et pour les petits écrans comme les mobiles ou les tablettes, nous pouvons utiliser la
@media
méthode mentionnée ci-dessus.la source
vous pouvez utiliser jQuery pour y parvenir facilement.
CSS
jQuery
HTML
Vous devrez inclure jQuery
la source
<div>
ont un contenu dynamique. La raison pour laquelle je dis est que si vous<div class="right">
avez plus de contenu que l'autre problème se pose.Je sais que ça fait longtemps mais je partage quand même ma solution. Ceci est une astuce jQuery.
--- HTML
---- CSS
--- JQUERY
la source
Il s'agit d'un plugin jQuery qui définit la hauteur égale pour tous les éléments sur la même ligne (en vérifiant le offset.top de l'élément). Donc, si votre tableau jQuery contient des éléments de plus d'une ligne (différent offset.top), chaque ligne aura une hauteur séparée, basée sur l'élément avec la hauteur maximale sur cette ligne.
};
la source
la source
J'avais le même problème alors j'ai créé cette petite fonction en utilisant jquery car jquery fait partie de toutes les applications web de nos jours.
Vous pouvez appeler cette fonction sur l'événement prêt pour la page
J'espère que cela fonctionne pour vous.
la source
Je suis récemment tombé sur cela et je n'ai pas vraiment aimé les solutions, j'ai donc essayé d'expérimenter.
.mydivclass {inline-block; vertical-align: middle; width: 33%;}
la source
Ce que j'ai fait ici, c'est de changer la hauteur en min-hauteur et de lui donner une valeur fixe. si l'un d'eux est redimensionné, l'autre restera à la même hauteur. Je ne sais pas si c'est ce que tu veux
la source