2010-10-20 6 views
8

Trois colonnes doivent remplir la largeur du conteneur parent. La largeur des colonnes de gauche et de droite ne doit pas être inférieure à 150px. La colonne centrale ne doit pas dépasser 200px de largeur. J'ai fait a reference page qui utilise JavaScript pour faire la mise en page. Est-il possible de faire la même mise en page avec du CSS pur?3 colonnes: une avec largeur maximale, deux autres avec largeur minimale

screenshot http://elv1s.ru/files/html+css/min-width_max-width_columns.png

Il devrait fonctionner au moins dans IE 8, Firefox 3.6, Chrome 7, Safari 5 et Opera 10.63.

+0

Cela peut dépendre de la compatibilité avec le navigateur dont vous avez besoin. –

+0

Dernières versions d'IE, Firefox, WebKit et Opera. – NVI

Répondre

3

Je ne suis pas expert, mais je suis sûr que si la réponse est oui qu'il est sur cette page:

cette page (et l'ensemble du site) est génial - il vous montre comment réaliser de nombreuses mises en page différentes (en utilisant simplement CSS), et explique exactement comment et pourquoi ils fonctionnent. Même si cette page ne contient pas une mise en page qui vous convient, il y a de fortes chances que cette page vous donne une idée approximative de l'approche à adopter.

Aussi, bonne chance!

+0

C'est une belle page, mais elle ne semble pas couvrir mon problème avec min-width/max-width. – NVI

2
<!doctype html> 
<html> 
<head> 
<meta charset="utf-8"> 
<style type="text/css"> 
#container { max-width:960px; width:100%; min-width:400px; overflow:auto;} 
#aside { height:300px; width:40%; min-width:150px; float:left; background-color:grey; } 
#primary { height:300px; width:20%; max-width:200px; float:left; background-color:red; } 
#secondary { height:300px; width:40%; min-width:150px; float:right; background-color:grey; } 
</style> 
</head> 
<body> 
<div id="container"> 
    <div id="aside">Leftmost content</div> 
    <div id="primary">Primary content</div> 
    <div id="secondary">Secondary content</div> 
</div> 
</body> 
</html> 

Un couple de choses au sujet de cette mise en page:

  1. J'ai spécifié la hauteur et arrière-plan pour l'affichage uniquement.
  2. Le dépassement automatique est sur l'élément contenant pour effacer les flotteurs; Bien que vous pouvez utiliser un div plus clair aussi.
  3. Le conteneur a une largeur de fluide, mais il est au maximum de 960. Je choisis ce nombre de façon arbitraire, mais il est judicieux de maximiser les largeurs de fluide avant que les lignes de texte deviennent trop longues.
  4. Si vous gardez le conteneur fluide, la mise en page se casse si la fenêtre devient suffisamment petite. EDIT: J'ai ajouté une min-largeur de 400px au conteneur, cela devrait résoudre le problème.

En outre, je voudrais jeter un oeil à http://www.alistapart.com/articles/holygrail/. Bien qu'il s'agisse d'un article détaillant une disposition à trois colonnes fixe-fluide-fixe, je pense qu'il y a quelques idées là-bas que vous pourriez utiliser pour améliorer ma disposition, si vous étiez si incliné.

+0

Cela ne fonctionne pas bien quand je désactiver 'max-width: 960px' http://elv1s.ru/i/3-columns-one-with-max-width-another-two-with-min-width-bug .png. Lorsque #container est supérieur à 1000px, #aside et #secondaire à 40% de largeur. Dans ce cas, les colonnes doivent avoir une largeur supérieure à 40% pour s'adapter au conteneur. – NVI

+0

@NV Parce que la colonne du milieu a une largeur maximale de 200px et est définie sur 20% du conteneur, lorsque 20% du conteneur dépasse 200px, la disposition cesse de s'étendre. Vous pouvez masquer cet effet en définissant l'arrière-plan du conteneur de la même manière que la colonne du milieu.Cependant, je ne peux pas imaginer beaucoup de scénarios où vous voudriez optimiser pour une fenêtre plus grande que 1000. – Moses

Questions connexes