J'ai quelque chose comme ça:
<div style="width:100px;float:left">menu</div>
<div style="float:left">content</div>
les deux flotteurs sont nécessaires. Je veux que le contenu div remplisse tout l'écran moins ces 100 pixels pour le menu. Si je n'utilise pas float, le div se développe exactement comme il se doit. Mais comment définir cela lorsque le flotteur est défini? Si j'utilise qc comme
style=width:100%
puis le contenu div obtient la taille du parent, qui est soit le corps, soit un autre div que j'ai également essayé, et donc bien sûr, il ne rentre pas à droite du menu et est ensuite affiché ci-dessous.
La manière la plus compatible que j'ai trouvée de faire cela n'est pas très évidente. Vous devez supprimer le flotteur de la deuxième colonne et l'appliquer
overflow:hidden
. Bien que cela semble cacher tout contenu qui sort de la div, cela force en fait la div à rester dans son parent.En utilisant votre code, voici un exemple de la façon dont cela pourrait être fait:
J'espère que cela est utile à tous ceux qui ont ce problème, c'est ce que j'ai trouvé qui fonctionne le mieux pour le site que je construisais, après avoir essayé de l'adapter à d'autres résolutions. Malheureusement, cela ne fonctionne pas si vous incluez également un flottant à droite
div
après le contenu, si quelqu'un connaît un bon moyen de le faire fonctionner, avec une bonne compatibilité IE, je serais très heureux de l'entendre.Nouvelle option meilleure en utilisant
display: flex;
Maintenant que le modèle Flexbox est assez largement implémenté, je recommande en fait de l'utiliser à la place, car il permet beaucoup plus de
flex
flexibilité avec la mise en page. Voici une simple deux colonnes comme l'original:Et voici une colonne à trois colonnes avec une colonne centrale de largeur flexible!
la source
Solution sans fixer la taille sur votre marge
+1 pour Merkuro, mais si la taille du flotteur change, votre marge fixe échouera. Si vous utilisez le CSS ci-dessus à droite,
div
il changera bien la taille avec le changement de taille sur le flotteur gauche. C'est un peu plus flexible comme ça. Vérifiez le violon ici: http://jsfiddle.net/9ZHBK/144/la source
overflow: hidden
etoverflow auto
entraîner le même comportement. Je pense aussi que les gens apprécient le violon.Les éléments flottants sont retirés de la disposition de flux normale et les éléments de bloc, tels que les DIV, ne couvrent plus la largeur de leur parent. Les règles changent dans cette situation. Au lieu de réinventer la roue, consultez ce site pour quelques solutions possibles pour créer la disposition à deux colonnes que vous recherchez: http://www.maxdesign.com.au/presentation/page_layouts/
Plus précisément, la "mise en page liquide à deux colonnes".
À votre santé!
la source
Ceci est une solution mise à jour pour HTML 5 si quelqu'un est intéressé et n'aime pas le "flottant".
Le tableau fonctionne très bien dans ce cas, car vous pouvez définir la largeur fixe du tableau et de la cellule du tableau.
http://jsfiddle.net/EAEKc/596/ code source original de @merkuro
la source
cette utilisation peut résoudre votre problème.
la source
Et en fonction de
merkuro
la solution de, si vous souhaitez maximiser celle de gauche, vous devez utiliser:N'a pas été testé sur IE, il peut donc sembler défectueux sur IE.
la source
La réponse acceptée pourrait fonctionner, mais je n'aime pas l'idée de chevauchement des marges. En HTML5, vous feriez cela avec
display: flex;
. C'est une solution propre. Définissez simplement la largeur d'un élément etflex-grow: 1;
de l'élément dynamique. Une version modifiée de merkuros fiddle: https://jsfiddle.net/EAEKc/1499/la source
Salut, il existe un moyen simple avec la méthode cachée de débordement sur l'élément droit.
la source
Cela pourrait fonctionner:
la source