2011-08-01 2 views
2

J'essaye de faire une page Web de disposition de 3 colonnes avec la largeur de wrapper de pourcentage, fixe (pixels) largeur de gauche et de droite et une largeur de colonne moyenne variable mais je ne peux pas l'obtenir pour le milieu colonne. Voici la source:3 colonnes mise en page automatique milieu col largeur

html

<aside class="left"> 
    <span>Categories</span> 


</aside> 

<section> 
    <span>Main</span> 

</section> 

<aside class="right"> 
    <span>Test</span> 

</aside> 

css

* { 
    margin: 0px; 
    padding: 0px; 

} 

html, body { 
    height: 100%; 
    width: 100%; 

} 

.container { 

    height: 100%; 
    width: 100%; 

} 

.container > aside.left { 
    float: left; 
    width: 197px; 
    border-right: black dashed 3px; 

} 

.container > section { 
    float: left; 
    width: auto; 


} 

.container > aside.right { 
    float: left; 
    background-color: #005f98; 
    width: 200px; 

} 

Répondre

0

Essayez de définir les largeurs selon des pourcentages, donc par exemple:

.container > aside.left { 
float: left; 
width: 31%; 
border-right: black dashed 3px; 

} 

.container > section { 
float: left; 
width: 31%; 


} 

.container > aside.right { 
float: left; 
background-color: #005f98; 
width: 31%; 

} 

C'est comment j'ai surmonté ce problème avant.

+0

Merci. C'était une bonne idée. Je l'ai un peu modifié et maintenant ça marche. :) – Gasim

+0

Alors peut-être que vous pourriez dire que la mienne était la bonne réponse haha: D Heureux que je pourrais aider :) –

0

Si vous spécifiez width et float pour la colonne de gauche et à droite, la colonne centrale remplira automatiquement l'écart:

http://jsfiddle.net/xHnDX/4/

Comme vous pouvez le voir, la div contenu recouvre en fait les divs latéraux, Bien que le contenu restera entre eux. Si vous le souhaitez, vous pouvez ajouter un conteneur supplémentaire pour compenser la largeur de la div contenu comme indiqué ici:

http://jsfiddle.net/YauQc/

+0

je vois seulement trois divs en html et aucun css dans ce jsfiddle – xec

+0

je l'ai fait l'autre sens n'a pas fonctionné. Mais je l'ai piraté un peu. – Gasim

+0

@xec, vous avez raison. Apparemment, je n'ai pas sauvegardé/mis à jour/fork correctement. Reconstruisez-le et mettez à jour le lien. – GolezTrol

1

Vous pouvez remplacer vos flotteurs avec des barres latérales en position absolue:

<aside class="left"> 
    <span>C</span> 
</aside> 

<section> 
    <span>M</span> 
</section> 

<aside class="right"> 
    <span>T</span> 
</aside> 

Et

.left { 
    position: absolute; 
    top: 0; 
    left: 0; 
    width: 50px; 
    display: block; 
    background: #ffe; 
    height: 100%; 
} 
.right { 
    position: absolute; 
    top: 0; 
    right: 0; 
    width: 50px; 
    display: block; 
    background: #fef; 
    height: 100%; 

} 
section { 
    display: block; 
    margin: 0 50px; /* Margin sized to match the sidebars */ 
    background: #fee; 
} 

en direct: http://jsfiddle.net/ambiguous/puPbu/

Les couleurs et les tailles sont juste pour clarifier où tout est. Si vous voulez mettre un wrapper <div> autour de l'ensemble, alors vous aurez besoin de position: relative pour obtenir les barres latérales positionnées au bon endroit.

1

Si vous n'avez pas à soutenir IE7, this will work:

* { 
    margin: 0px; 
    padding: 0px;  
} 
html, body { 
    height: 100%; 
    width: 100%;  
} 

.container { 
    display: table;  
    height: 100%; 
    width: 100%; 
    min-width: 600px; 

} 
.container > aside, .container > section { 
    display: table-cell; 
    width: auto; 
} 
.container > aside.left { 
    width: 197px; 
    border-right: black dashed 3px; 
} 

.container > aside.right { 
    background-color: #005f98; 
    width: 200px; 
} 
Questions connexes