Mon exigence est simple: 2 colonnes où la bonne a une taille fixe . Malheureusement, je n'ai pas trouvé de solution fonctionnelle, ni sur stackoverflow ni sur Google. Chaque solution qui y est décrite échoue si je l'implémente dans mon propre contexte. La solution actuelle est:
div.container {
position: fixed;
float: left;
top: 100px;
width: 100%;
clear: both;
}
#content {
margin-right: 265px;
}
#right {
float: right;
width: 225px;
margin-left: -225px;
}
#right, #content {
height: 1%; /* fixed for IE, although doesn't seem to work */
padding: 20px;
}
<div class="container">
<div id="content">
fooburg content
</div>
<div id="right">
test right
</div>
</div>
J'obtiens ce qui suit avec le code ci-dessus:
|----------------------- -------|
| fooburg content | |
|-------------------------------|
| | test right |
|----------------------- -------|
S'il vous plaît donnez votre avis. Merci beaucoup!
clear: both
à l' intérieur de l' une des colonnes n'affectera pas les flotteurs extérieurs. Ce n'est pas "fragile" sauf si vous placez le clair au même niveau des colonnes entre les colonnes, si vous le placez à la fin aucun mal n'est fait.Voir http://www.alistapart.com/articles/negativemargins/ , c'est exactement ce dont vous avez besoin ( exemple 4 ici).
la source
Il est préférable d'éviter de placer la colonne de droite avant la gauche, utilisez simplement une marge droite négative.
Et soyez «réactif» en incluant un paramètre @media pour que la colonne de droite tombe sous la gauche sur les écrans étroits.
la source
Solution la plus simple et la plus flexible à ce jour à utiliser
table display
:HTML, le div de gauche vient en premier, le div de droite vient en second ... nous lisons et écrivons de gauche à droite, donc cela n'a aucun sens de placer les divs de droite à gauche
CSS:
Exemples de cas:
la source
table
avectd
s ne l'est certainement pas!Je voudrais suggérer une solution encore non mentionnée: utilisez CSS3
calc()
pour mélanger%
etpx
unités.calc()
a un excellent support nos jours, et il permet la construction rapide de mises en page assez complexes.Voici un lien JSFiddle pour le code ci-dessous.
HTML:
CSS:
Et voici un autre JSFiddle démontrant ce concept appliqué à une mise en page plus complexe. J'ai utilisé SCSS ici car ses variables permettent un code flexible et auto-descriptif, mais la mise en page peut être facilement recréée en CSS pur si le fait d'avoir des valeurs "codées en dur" n'est pas un problème.
la source
Il s'agit d'une solution générique commandée à la source HTML où:
Colonne fixe / deuxième à droite
Colonne fixe / deuxième à gauche
Une autre solution consiste à utiliser display: table-cell ; ce qui donne des colonnes de hauteur égale.
la source
Hé, ce que vous pouvez faire, c'est appliquer une largeur fixe aux deux conteneurs, puis utiliser une autre classe div où clear: both, comme
placez un div transparent sous le récipient gauche et droit.
la source
Je l'ai simplifié: j'ai édité la réponse de Jackjoe. La hauteur auto etc pas obligatoire je pense.
CSS:
HTML:
Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Phasellus varius eleifend. Lorem ipsum dolor sit amet, consectetuer adipiscing elit.Phasellus varius eleifend.
la source