Bonjour à tous,

Je me mets à la page ces derniers temps concernant le CSS et surtout le CSS3, afin de bosser sur un projet où je dois réaliser un web design, assez sommaire, pour sa version bêta.

Après pas mal de lectures, je me retrouve un peu perdu quand au choix des techniques à utiliser pour la mise en page du site.

Le projet est un jeu par navigateur et demande donc une mise en page assez compliquée car beaucoup d'éléments doivent être positionnés comme il faut.

- Un Top menu en position: fixed top
- Bannière sous le top menu pour du "kikoo lol joli"
- Un espace horizontal pour y mettre les ressources du jeu et compagnie
- Un menu vertical pour le jeu lui-même
- La page elle-même
- Le footer en fixed bottom

Ce n'est pas horrible à réaliser, mais un petit peu complexe pour un codeur PHP comme moi qui n'a vraiment pas l'habitude de se pencher sur le design d'un site.

J'en suis resté à l'emploi du float et un peu du position: fixed, mais après ces lectures, je ne sais plus trop vers quoi me tourner.

- Le bon vieux float et position: fixed
- Le display: table dont j'ai lu pas mal d'articles
- Le dispay: inline, block, inline-block
- Miser sur Flexbox et Grid layout, mais je ne sais pas si le second sera possible dans 3,6,9,12 mois.

Le premier est relativement simple à maîtriser pour moi car je l'ai déjà utilisé (à petites doses) il y a pas mal de temps pour comprendre un peu tout ca. C'est ce que j'ai utilisé pour me faire une idée de la mise en page après l'avoir réalisée sur papier (Je suis encore plus nul avec Photoshop, que pour réaliser un design en HTML/CSS). Je suis arrivé à un résultat pas trop moche mais, je trouve, assez lourd à gérer.

Le deuxième, je ne l'utilise que pour certains éléments. J'ai donc du mal à concevoir tout un site en utilisable du display: table. On a abandonné la mise en page par tableaux, pourquoi recommencer mais avec du CSS? Malgré tout, c'est séduisant car le positionnement des éléments semble plus aisé de prime abord.

Le troisième, ca me semble vraiment compliqué à mettre en oeuvre pour une mise en page complète comme j'en ai besoin. Les white-space et compagnie, ca demande beaucoup de petites astuces et de prise de tête, il me semble.

Pour le dernier, ca semble alléchant. Du Flex pour les menus et certains éléments. Du Grid layout pour la mise en page elle-même. Mais le gros soucis, c'est que le premier est un peu bordélique avec les préfixes et syntaxes, ainsi que la compatibilité. Le deuxième est tout simplement non-supporté pour le moment à part par IE10. Et aucune idée de quand on pourra l'utiliser pour la compatibilité que je désire. Voir même inutilisable à cause d'IE9 car je n'ai entendu nul part un JS qui le rende compatible pour lui, comme avec Flex.


Je ne désire une compatibilité qu'avec IE9+ et les navigateurs récents, la communauté gamer étant, en général, assez à jour là-dedans (même si certains jouent du boulot avec des IE7/8. C'est mal!). Je ne dois donc pas choisir la solution la plus compatible, mais la plus simple à mettre en oeuvre, pour moi, et adaptée à mes besoins.

Je ne cherche pas du responsive à tout prix non plus puisque c'est un design pour une bêta. Je compte engager un web designer dont c'est le métier pour la release et qu'il s'embête lui-même là-dessus! Je ferai d'ailleurs appel à Alsa.fr pour cela, si il y a des designers capables de faire le thème sur lequel le jeu se base ^^


Donc Quid?! On garde l'alambiqué float+position? Le display: table qui semble plus simple mais qui revient à revenir à une mise en page par tableaux? Miser sur l'avenir avec Flex et Grid?


Merci à ceux qui prendront le temps de se pencher sur la question et de m'éclairer sur les avantages/inconvénients de chaque style et m'aider à m'orienter.
Bonjour,

Je pense que le plus "simple" serait d'utiliser float+position car le flexbox a 3 syntaxes différentes (en plus des préfixes) selon la version du navigateur.

Mais ce n'est que l'avis d'un amateur Smiley lol
Salut,

Et bien moi j'ai plutôt tendance à faire l'inverse en ce moment : PHP, PDO, MySQL et Cie...

Ouf, ça me repose des prises de tête de l'intégration web !

Bref, pour ce qui est de votre problème, pour le positionnement, moi j'utilise display:block/inline-block et autre table-cell (qui n'ont rien à voir avec les anciens tableaux puisqu'ils s'agit d'une propriété css qui peut donc être changée en fonction d'un media queries par exemple, mais bon : tout les dev que j'ai croisés disent ça...).

Sinon (pour un développeur qui ne voudrait pas se prendre la tête avec l'intégration par exemple) vous pourriez aussi passer par un framework comme Bootstrap. Quoi qu'il en soit je vous recommande l'utilisation d'une grille, soit toute prête, soit personnalisée. il vous suffira de mettre une class sur la <div>, l'<article> ou la <section> concernés et hop, le tout est joué (enfin il faut avoir une compréhension globale de son code tout de même).
J'ai déjà tenté l'aventure Bootstrap et j'ai fini par revenir à une approche "tout par moi-même".

En effet, Bootstrap m'aurait permis de ne pas me prendre la tête à faire un truc "potable", mais il a un gros défaut.

Il est quand même vachement fait pour des sites qui misent sur un look aéré et de présentation.
La grille donne d'énormes "gut", le placement de petits éléments (Ex: Afficher 3 ressources, chacune dans un petit cadre) est malaisé.

Et le modifier ou surcharger est compliqué quand on débute avec le CSS.

Au final, si je mets de côté les jolis effets de Bootstrap, j'ai eu bien plus rapidement un résultat en partant de rien.


Pourquoi utiliser le table-cell plutôt que le float? Un avantage conséquent? Je suis un gros dev PHP, donc j'ai du mal à situer la différence entre les tableaux pour mise en page et le table-cell. Ca gomme des problèmes qu'on pouvait avoir avec les tableaux, mais ca revient au même principe. Ce n'était pas justement ce principe qui posait problème avant? Ou juste le code HTML généré pour faire cette mise en page?


Pour le Flex et le Grid, j'ai barré l'idée. Je ne trouve rien pour rendre le Flex possible pour IE9 et vraiment rien trouvé pour le Grid Layout non plus. Même si je peux très bien me passer des quelques % de I8-, je peux pas laisser à la rue ceux qui resteront sur IE9 quand le 10 sera dispo en version stable Smiley decu

Dommage, ca me plaisait bien après les quelques tests que j'ai fais...
Deumus a écrit :
Au final, si je mets de côté les jolis effets de Bootstrap, j'ai eu bien plus rapidement un résultat en partant de rien.

Ça c'est pas faux. Mais on peut utiliser des éléments pour se créer une feuille de style de base, à l'origine de tous nos projets. Que l'on complètera avantageusement avec une grille css.
Deumus a écrit :
Pourquoi utiliser le table-cell plutôt que le float? Un avantage conséquent? Je suis un gros dev PHP, donc j'ai du mal à situer la différence entre les tableaux pour mise en page et le table-cell. Ca gomme des problèmes qu'on pouvait avoir avec les tableaux, mais ca revient au même principe. Ce n'était pas justement ce principe qui posait problème avant? Ou juste le code HTML généré pour faire cette mise en page?

Comme le dit Goetter, l'un des avantages du table-cell, c'est que "deux frères auront la même hauteur", intéressant pour les colonnes (on évite les colonnes factices et autre bidouillages).
Deumus a écrit :
Pour le Flex et le Grid, j'ai barré l'idée. Je ne trouve rien pour rendre le Flex possible pour IE9 et vraiment rien trouvé pour le Grid Layout non plus. Même si je peux très bien me passer des quelques % de I8-, je peux pas laisser à la rue ceux qui resteront sur IE9 quand le 10 sera dispo en version stable.

Jamais utilisé, trop tôt pour l'instant...
Modifié par Olivier C (16 Dec 2012 - 18:37)
oui, pour ma feuille de style de base, j'ai picoré sur KNACSS (merci Goetter), mais en cherchant à comprendre quoi fait quoi. Au final, j'ai Normalizr et quelques petites choses de bases.

Pour le reste, c'est voir ce qui me plaît dans l'immédiat sur Bootstrap et voir comment cela a été fait. Vraiment pas facile! Du coup, j'ai lu et cherché à côté. Ca m'apprends tellement de choses que je passe mon temps à faire et refaire. Ce n'est pas plus mal, je finis par faire la même chose qu'au début mais avec beaucoup moins de CSS et du HTML bien propre.


Le gros soucis du table-cell, où alors je n'ai pas trouvé comment faire, c'est aussi que je désire un menu de navigation à droite et non à gauche, mais en gardant le menu avant le contenu dans le code HTML. Je m'y prends peut-être mal, mais ca me semble plus simple d'avoir le menu en premier dans le code au cas où (pour l'affichage sans CSS, ...).


Pour la grille, c'est surtout pour du responsive, je me trompe? Désirant séparer la version desktop de la version mobile par deux CSS bien distincts, il y a vraiment un intérêt? Car je me suis retrouvé plutôt prisonnier avec Bootstrap et son grid.
Bien en fait, ce que j'ai récupéré sur Bootstrap c'est a peu près du Normalize, à deux ou trois règles près, et puis j'ai ajouté quelques modifs perso en plus. Enfin seulement j'ajoute les styles propres au site que je veux coder (je code en modules, plus facile à repérer, et je peux en récupérer certains par la suite, pour d'autres projets).
a écrit :
je finis par faire la même chose qu'au début mais avec beaucoup moins de CSS et du HTML bien propre.

C'est le but de ces frameworks, faire une sorte de - attention les oreilles du développer - "css orienté objet". Je ne plaisante pas : le terme est consacré, mais bien sûr pas l'objet dans le sens où on l'entend en php ou en C++...
a écrit :
mais ca me semble plus simple d'avoir le menu en premier dans le code au cas où (pour l'affichage sans CSS

Un contenu sans css, pourquoi pas si on est puriste ? mais bon, aujourd'hui, un média qui ne l'interprète pas... ça n'arrive pas tous les jours.

Pour le table-cell, vous n'êtes pas obligé d'en mettre de partout. Je l'ai utilisé sur mon site, mais seulement pour le contenu central entre le header et le footer, comprenant la colonne principale et une sidebar. Je fais aussi mes thème en responsive, allez voir dans mon code source si ça vous intéresse (par contre la feuille de style de production est minifiée, pour avoir la feuille non compressée il faut remplacer le ".min.css" du permalien par ".css").
Modifié par Olivier C (17 Dec 2012 - 00:49)
Je ne cherche pas à faire plusieurs sites. ^^

Comme je l'ai dis, c'est un projet personnel et je ne joue le web designer que pour avoir une interface viable pour une bêta ouverte. Un vrai web designer coûte bien trop cher sans savoir si ce qui a été fait va plaire assez pour rentabiliser l'investissement.

Si cette bêta est concluante, j'investirai, mais pas avant. Donc d'ici là, je me débrouille et je n'ai pas peur de partir de rien, ou presque. Pour dire, je n'ai aucune couleur, car je n'ai absolument aucune imagination dans ce domaine. C'est du fond blanc et de la typo noire, ainsi que les border Smiley langue

Par besoin de réutiliser, donc, par la suite pour d'autres projets.
Deumus a écrit :
Je ne cherche pas à faire plusieurs sites.

Certes. Il n'empêche, c'est plus simple pour la maintenance du code.