[html/css] Rétrecissement site extensible

Fermé
bidule doodle Messages postés 34 Date d'inscription mercredi 26 août 2009 Statut Membre Dernière intervention 9 avril 2012 - 22 mars 2010 à 15:47
Smoking bird Messages postés 870 Date d'inscription mardi 11 mars 2008 Statut Membre Dernière intervention 10 juillet 2011 - 24 mars 2010 à 18:09
Bonjour à tous !

Alors, je vous présente un problème sur lequel je planche sans résultat depuis plusieurs jours.

J'ai créé un site avec un design extensible. Le problème, lorsqu'on rétrécie la fenêtre de trop (horizontalement), les colonnes se chevauchent les unes sur les autres. Ca fait moche.

Je voudrais pouvoir laisser la fenêtre se rétrécir jusqu'à un certain point puis au moment où les colonnes se chevauchent (par exemple 800px) que des scrollbars apparaissent et que le design ne bouge plus mais que ce soient les scrollbars horizontales qui se modifient.

Le meilleur exemple de ce que je veux faire, c'est le site du zéro. (non, je ne fais pas de plagiat, j'ai juste vu qu'ils avaient réussi après coup)

Mon code pour l'instant :

body
{
   width: 100%; /*le design s'adapte à l'écran de l'utilisateur en largeur*/
   min-width: 800px; /*taille mini avant que les ascenseurs ne s'activent quand on réduit la taille de l'écran*/ 
   overflow:auto; /*insertion et gestion automatique des scrollbars horizontales*/

 }


Pour info, j'ai aussi essayé de mettre un min-width pour chacun des div qui me faisaient mes colonnes, ça n'a pas plus fonctionné.

Avez-vous une idée ?
A voir également:

9 réponses

avion-f16 Messages postés 19243 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 8 avril 2024 4 496
22 mars 2010 à 23:01
Bases-toi sur ces gabarits.
3
Smoking bird Messages postés 870 Date d'inscription mardi 11 mars 2008 Statut Membre Dernière intervention 10 juillet 2011 58
23 mars 2010 à 13:39
tu opères un reset css ou pas?
2
Smoking bird Messages postés 870 Date d'inscription mardi 11 mars 2008 Statut Membre Dernière intervention 10 juillet 2011 58
22 mars 2010 à 17:45
essai en déclarant le min-width avant le width^^.

Je serais toi, je mettrais pas mon contenu directement dans le body, j'utiliserais plutôt un div de contenu général, auquel j'appliquerais le min-width. Je me suis aussi essayé au design extensible et je n'ai pas eu ce problème de conteneur général qui foire^^
1
avion-f16 Messages postés 19243 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 8 avril 2024 4 496
22 mars 2010 à 17:48
Mets ton site dans un div avec un min-width de x pixels.
1

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
bidule doodle Messages postés 34 Date d'inscription mercredi 26 août 2009 Statut Membre Dernière intervention 9 avril 2012
Modifié par bidule doodle le 22/03/2010 à 22:55
En essayant le min-width juste avant le width, ça ne marche pas.

C'est vrai que je n'ai pas mis l'intégralité de mon css (300 lignes, ça ne sert à rien) mais pour vous expliquer en quelques mots l'architecture de mon css :

ma page est conceptuellement très classique. J'ai :
-un en-tête
-un menu de gauche
-un pied de page
-un corps de page.

Ce corps de page contient lui-même deux sous divisions : colonne gauche et colonne droite. Le texte se trouve là dedans. Le reste (en-tête, footer et menu) sont exportés dans des .php

Mais bon, désespérée comme je le suis, j'ai quand même essayé de créer un div général juste avant et après les deux balises body et... ça n'a rien donné. >.<

Un autre idée surgiraient-elles de vos cerveaux pour aider la pauvre... (blonde, célibataire, développeuse ?) damoiselle que je suis.
0
bidule doodle Messages postés 34 Date d'inscription mercredi 26 août 2009 Statut Membre Dernière intervention 9 avril 2012
Modifié par bidule doodle le 22/03/2010 à 23:52
(tiens, je n'avais pas trouvé cette page dans ce site)

Et du coup, vous me faites tellement douter de moi que j'ai recommencé votre solution sans les includes en php.

Mais malheureusement non. Car la solution qui repose sur ces quelques lignes

#global { 
 width: 90%; 
 max-width: 90em; 
 min-width: 850px; 
 margin-left: auto; 
 margin-right: auto; 
}


ne fonctionne pas chez moi. Que le global soit directement le body ou bien un wrapper de tout le code de la page. (j'ai réessayé deux fois tellement vous me faites douter. ;) )Et je ne comprends pas pourquoi. C'est la deuxième chose comme ça qui marche chez les autres, qui devrait marcher chez moi et qui ne fonctionne pas.

peut-être voulez vous un code plus imposant que les quelques lignes que j'ai mis, des copies d'écran des différentes étapes de rétrécissement ou carrément le code d'une des pages ?

Plus je bute, plus j'ai envie de trouver. (faut-il que j'offre une récompense à celui/celle qui m'aidera à trouver la solution ? XD)

EDIT : Après cette histoire de vous fournir des copies d'écran, j'en ai fait. les voici :

https://i68.servimg.com/u/f68/11/28/68/56/pas_re10.jpg ==>plein écran,normal
https://i68.servimg.com/u/f68/11/28/68/56/retrec10.jpg ==> rétrécit un peu, tout convient parfaitement encore
https://i68.servimg.com/u/f68/11/28/68/56/retrec11.jpg ==> rétrécit beaucoup, et PAF ! (le chien) la colonne de droite vient encore chevaucher celle de gauche au lieu de rester à sa place passer une taille mini de fenêtre (min-width) et de mettre en place des scrollbars dignes de ce nom.

...

A vrai dire, je viens de voir un truc que je n'avais pas vu.

https://i68.servimg.com/u/f68/11/28/68/56/retrec12.jpg ==> bien trop rétrécit. On voit que la colonne de droite chevauche celle de gauche et qu'une scrollbar est apparue.
https://i68.servimg.com/u/f68/11/28/68/56/retrec13.jpg ==> la même fenêtre mais scroball déplacée à droite. On voit que la colonne de droite s'est déplacé sur la gauche mais que la fenêtre garde quand même son emplacement dans la page.

Du coup, le problème est double :

1) pourquoi cette colonne droite va t-elle sur sa consoeur de gauche ? (a ne pas mettre dans un contexte politique XD)

(je vous mets le css de la colonne de droite de gauche et du corps, peut-être comprendrez vous mieux.

#corps
{
   min-width:380px;
   margin-left:270px; /*corps a droite du menu*/
   margin-right:10px;
   min-height: 600px; /*permet de décaler le footer en bas de page quel que soit le contenu du corps*/
   margin-top:30px;/*60*/   
   
}

#corps .colonne-gauche
{
   width:60%;
   min-width:200px;
}

#corps .colonne-droite
{
   width:25%;
   float:right;
   min-width:160px;
   
   position:absolute;
   top:322px; /*!!!!!!!!!!!!avant 460!!!!!!*/
   right:2%;
   
}


et 2) pourquoi passée une largeur de fenêtre en dessous du min-width, la scrollbar ne s'active pas correctement et le design rétrécit encore alors qu'il devrait rester fixe ?

Franchement, je sèche. T_T

Fin de l'edit
0
Smoking bird Messages postés 870 Date d'inscription mardi 11 mars 2008 Statut Membre Dernière intervention 10 juillet 2011 58
23 mars 2010 à 13:44
ajoute float:left à tous tes trucs auxquels tu as spécifié des valeurs en width et min-width, normalement ça fonctionne^^ et rajoute un display block dessus en cas de doute^^

dis nous si ça arrange bien ton problème^^ ou quels changements tu constates, et télécharges web developper toolbar pour firefox^^ moins mal au crâne comme ça^^
0
bidule doodle Messages postés 34 Date d'inscription mercredi 26 août 2009 Statut Membre Dernière intervention 9 avril 2012
23 mars 2010 à 23:46
smoking bird => qu'est-ce qu'un reset css ? Et quels sont les avantages de la web developer toolbar ? (je dois t'avouer que j'ai un 10 pouces et je me montre assez réticente à installer des toolbar à gogo qui me prive du peu de champ de vision que j'ai... :/)

Sinon, je te remercie pour la solution proposée mais elle ne marche pas davantage. Je vais donc laisser de côté la solution en finesse et opter pour l'armement lourd. Je vais faire une page d'entrée qui demandera la résolution du client et qui fera charger mon css en fonction. (beuh. J'avais pas envie d'apprendre le javascript tout de suite. T_T)

En tout cas, merci beaucoup pour ton aide. J'aurai vraiment voulu résoudre le problème qu'en faisant du css mais malheureusement, je passerai trop de temps sur ce problème.

L'aviateur. Même sans mon code html, mon css veut dire quelque chose. (tu ne vois pas les largeurs de mes colonnes là ? XD) Par contre si par ta phrase, tu voulais signifier qu'il ne sera pas fonctionnel, je suis d'accord. ;)
0
Smoking bird Messages postés 870 Date d'inscription mardi 11 mars 2008 Statut Membre Dernière intervention 10 juillet 2011 58
24 mars 2010 à 18:09
un reset css est une technique css qui permet de rétablir tous les css de tous les éléments à des valeurs par défaut clairement définies par l'auteur de la page, avant qu'il ne fasse ses 'vrais css' à côté :). En gros, c'est comme un peintre qui vérifie que ses pinceaux n'ont pas de poils qui dépassent, et qui coupe ceux qui débordent^^.

* {
float:left;
display:block;
width:auto;
min-width:120px;
height:auto;
min-height:inherit;
list-style-type:none;
border:1px solid #502020;
}

C'est un exemple très grossier, mettre ça tout en haut de ta première page de css t'assure que tous les éléments que tu bidouilleras auront de base:
-un flottement à gauche,
-un affichage type block
-une largeur automatique, avec un minimum de 120px
-une hauteur automatique avec un minimum égal à l'élément parent
-pas de style de puce
-un bord solide de 1px de large tirant plus sur le rouge^^.
Evidemment, ce reset là n'est qu'un exemple et n'est pas propre, il n'a pas beaucoup de sens puisqu'il s'adresse à tous les éléments, et que tous les éléments n'ont pas forcément ces propriétés, ou besoin de ces propriétés. Le reset css est une technique pour s'assurer de la "pureté" des css qu'on écrit, et qui protège également des éventuels styles survenus de nulle part (navigateur ou utilisateur par exemple^^). Très pratique^^.

Pas de bol pour le dix pouces :D (ni pour le windows xp encore installé d'ailleurs^^). La web developper toolbar pour firefox te permettra d'éditer en direct tes css, le résultat s'affichant sans rechargement de page ni upload de fichier sur le serveur ou quoi que ce soit. Pouvoir éditer des css en live est très confortable quand on est confronté à un problème inextricable^^ on perd beaucoup moins de temps et on prend plus de libertés :p :), franchement, essais la, et si elle ne bouffe pas trop ta lisibilité, tu peux l'adopter :D

Pour ton armement 'lourd', je t'invite à laisser tomber: il existe pas mal de résolutions différentes, et proposer un css pour chacune d'entre elles est bien plus lourd à mettre en place comparé à la résolution via de bons css de ton problème^^. Si ton site est online, donne moi l'adresse que j'y jette un oeil^^. De plus, en tant qu'utilisateur je trouverais ça rebutant de me prendre un panneau de demande de résolution à chaque accès au site :)
0
avion-f16 Messages postés 19243 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 8 avril 2024 4 496
23 mars 2010 à 17:24
Sans ton code HTML ton CSS ne veut rien dire.
-3