Deux colonne div mise en page avec fluide gauche et fixe Colonne de droite

Je veux faire une mise en page à deux colonnes en utilisant DIVs, où la colonne de droite aura une largeur fixe de 200px et la gauche prendra tout l'espace qui reste.

C'est assez facile, si vous utilisez des tables:

<table width="100%">
  <tr>
    <td>Column 1</td>
    <td width="200">Column 2 (always 200px)</td>
  </tr>
</table>

Mais Que diriez-vous DIVs? Est-il possible d'accomplir cette? Si oui, comment?

47
demandé sur Salman A 2011-04-13 11:47:20

7 réponses

Les exemples suivants sont classés par source, c'est-à-dire que la colonne 1 apparaît avant la colonne 2 dans la source HTML. Si une colonne apparaît à gauche ou à droite est contrôlée par CSS:

Droit Fixe

#wrapper {
  margin-right: 200px;
}
#content {
  float: left;
  width: 100%;
  background-color: #CCF;
}
#sidebar {
  float: right;
  width: 200px;
  margin-right: -200px;
  background-color: #FFA;
}
#cleared {
  clear: both;
}
<div id="wrapper">
  <div id="content">Column 1 (fluid)</div>
  <div id="sidebar">Column 2 (fixed)</div>
  <div id="cleared"></div>
</div>

Fixe À Gauche

#wrapper {
  margin-left: 200px;
}
#content {
  float: right;
  width: 100%;
  background-color: #CCF;
}
#sidebar {
  float: left;
  width: 200px;
  margin-left: -200px;
  background-color: #FFA;
}
#cleared {
  clear: both;
}
<div id="wrapper">
  <div id="content">Column 1 (fluid)</div>
  <div id="sidebar">Column 2 (fixed)</div>
  <div id="cleared"></div>
</div>

Une autre solution consiste à utiliser display: table-cell; ce qui entraîne des colonnes de hauteur égale.

86
répondu Salman A 2017-05-23 12:10:33

Voici une solution (et elle a quelques bizarreries, mais faites-moi savoir si vous les remarquez et qu'elles sont préoccupantes):

<div>
    <div style="width:200px;float:left;display:inline-block;">
        Hello world
    </div>
    <div style="margin-left:200px;">
        Hello world
    </div>
</div>
11
répondu leetNightshade 2011-04-13 08:16:06

CSS:

#sidebar {float: right; width: 200px; background: #eee;}
#content {overflow: hidden; background: #dad;}

HTML:

<div id="sidebar">I'm 200px wide</div>
<div id="content"> I take up the remaining space <br> and I don't wrap under the right column</div>

Ce qui précède devrait fonctionner, vous pouvez mettre ce code dans wrapper si vous voulez lui donner de la largeur et le centrer aussi, overflow:hidden sur la colonne sans largeur est la clé pour le contenir, verticalement, comme dans ne pas enrouler autour des colonnes latérales (peut être gauche ou droite)

IE6 pourrait besoin zoom:1 Définir sur le # content div trop si vous avez besoin de son support

6
répondu clairesuzy 2011-04-13 08:18:04

CSS Solutuion

#left{
    float:right;
    width:200px;
    height:500px;
    background:red;   
}

#right{
    margin-right: 200px;
    height:500px;
    background:blue;
}

Vérifier exemple de travail à http://jsfiddle.net/NP4vb/3/

Solution JQuery

var parentw = $('#parent').width();
var rightw = $('#right').width();
$('#left').width(parentw - rightw);

Vérifier l'exemple de travail http://jsfiddle.net/NP4vb/

6
répondu Hussein 2011-04-13 08:37:00

On m'a récemment montré ce site pour les mises en page liquides en utilisant CSS. http://matthewjamestaylor.com/blog/perfect-multi-column-liquid-layouts (jetez un oeil aux pages de démonstration dans les liens ci-dessous).

L'auteur fournit maintenant un exemple pour les mises en page à Largeur fixe. Découvrez; http://matthewjamestaylor.com/blog/how-to-convert-a-liquid-layout-to-fixed-width.

Cela fournit ce qui suit exemple(s), http://matthewjamestaylor.com/blog/ultimate-2-column-left-menu-pixels.htm (pour la mise en page de deux colonnes comme vous êtes après je pense)

Http://matthewjamestaylor.com/blog/fixed-width-or-liquid-layout.htm (pour la disposition de trois colonnes).

Désolé pour tant de liens vers ce site de gars, mais je pense que c'est une ressource impressionnante.

1
répondu Mr Moose 2011-04-13 08:01:17

Je pense que c'est une réponse simple , cela divisera les développeurs enfants 50% chacun en fonction de la largeur parent.

 <div style="width: 100%">
        <div style="width: 50%; float: left; display: inline-block;">
            Hello world
        </div>
        <div style="width: 50%; display: inline-block;">
            Hello world
        </div>
    </div>
1
répondu Anju313 2015-06-03 03:35:33

#wrapper {
  margin-right: 50%;
}
#content {
  float: left;
  width: 50%;
  background-color: #CCF;
}
#sidebar {
  float: right;
  width: 200px;
  margin-right: -200px;
  background-color: #FFA;
}
#cleared {
  clear: both;
}
<div id="wrapper">
  <div id="content">Column 1 (fluid)</div>
  <div id="sidebar">Column 2 (fixed)</div>
  <div id="cleared"></div>
</div>
0
répondu Serega Zgama 2017-08-23 23:56:06