28172 sujets

CSS et mise en forme, CSS3

Bonjour à tous,

J'ai pour projet de coder complètement un thème pour wordpress, mais je n'ai pas beaucoup de connaissances en css. Le développement de mes compétences est le 1er objectif, le second est de pouvoir utiliser le thème plus tard (genre dans longtemps, quand des amis à moi m'auront aider à transformer mon contenu rédigé dans les div pour y mettre du php et donc du contenu dynamique).

En ce qui concerne la page d'accueil du site, voici le rendu que j'aimerais :
upload/57135-exemplepag.png
Il faut imaginer la présence d'un header, d'un top-menu et d'un footer (+ 2-3 fioritures que j'ajouterais plus tard ^^)

Je n'arrive pas du tout à mettre mon bloc rouge et mon bloc orange l'un au dessus de l'autre !!
Ce serait tellement facile avec un tableau ^^ Mais non, j'essaie de coder proprement ...

Aperçu et modif : http://codepen.io/anon/pen/KwojJK

Explications :
- En gris : div "content"
- En bordeaux : div "bignews"
- En rouge : div "listcdp"
- En orange : div "listarticles"
- En verts : divs "littlenews"

J'ai essayé avec "float" et cela marche bien pour le positionnement sauf que forcément mon "content" ne s'adapte plus en hauteur, ce qui fait que je ne peux pas ajouter de footer après.
J'arrive à mettre mon bloc rouge à droite de mon bloc bordeaux mais mon bloc orange ne veut pas se mettre au dessous du bloc rouge !

Les conditions que j'imagine pour que le site fonctionne correctement :
- "Content" ne doit pas faire la totalité de la largeur de la page, il a une largeur minimale et une largeur maximale. Dans tous les cas, je l'espère centré horizontalement par rapport à la fenêtre de l'utilisateur.
- Lorsque l'utilisateur réduit sa fenêtre, la totalité des div à l'intérieur doivent se modifier jusqu'à un certain point (min-width). Je ne peux donc pas leur donner de valeurs en pixels, je pense essayer avec des % mais vu que j'ajoute du margin, cela me décale tout et je n'arrive pas à tomber juste pour que la largeur totale de mes deux blocs verts AVEC margin central soit exactement égale à la largeur de mon bloc bordeaux "bignews"

Puisque je le veux dynamique, je ne peux pas utiliser "position:absolute".

Est-ce un problème de "display" ? J'ai regardé ce tuto sur le site mais je suis perdu parce que je n'ai pas qu'une ligne a géré mais bien un encastrement de plusieurs div de tailles différentes (je suis maso ...)

Autre problème : Pour l'instant je "teste" donc mes divs n'ont pas de hauteur fixe. Je leur en ai donné une pour me faire un "aperçu" mais la hauteur finale sera conditionnée par le PHP à l'intérieur.

On est d'accords que si je décidais que ma page d'accueil avait des dimensions fixes ce serait BEAUCOUP plus simple et résolu avec "position:absolute" en un rien de temps ?
Belerian a écrit :
Ce serait tellement facile avec un tableau ^^ Mais non, j'essaie de coder proprement ...

Encore une victime de la secte des anti table!!

Quand le web a démarré, nous étions heureux d'avoir les tables pour faire des pages à deux dimensions (c'est ça une "table") et pas seulement du flot de texte linéaire.

Quand on a inventé le CSS, nous ne l'avons bien entendu utilisé qu'avec parcimonie, ne serait ce que parce que les utilisateurs étaient bloqués sur les anciennes version des navigateurs. N'oublions pas que d'une part les mises à jour étaient payantes et que d'autre part le web était utilisé dans les entreprises qui ne changent de version de logiciel que tous les 3 ans en moyenne.

Les tenants de la nouvelle religion ont lancé l'anathème contre les pratiquants de l'ancienne, qui ne voyaient pas pourquoi ils devaient essayer d'utiliser à tout prix une nouvelle techno mal définie et mal supportée pour réaliser avec difficulté ce qui marchait très bien avec l'ancienne. Les arguments volaient bas, du genre expliquer que si on ne savait pas faire quelque chose en CSS c'est que ça ne servait à rien. Vingt ans après, la guerre de religions n'est pas terminée.
Je vous recommande la lecture de Gulliver à Lilliput, sur la guerre entre les petit-boutiens et les gros-boutiens: ce qui compte, c'est de manger l'œuf à la coque, peu importe le bout par lequel on l'ouvre!

Moyennant quoi coder "proprement" c'est coder de façon que le programme soit facile à maintenir. Je suis bien d'accord que si on sait le faire en CSS sans avoir à réinventer la roue et le fil à couper le beurre, c'est plus pratique à maintenir que de devoir revenir au code HTML.

Je reprends souvent de vieilles solutions bancales réalisées à coups de HTML et JavaScript lorsque la lecture de ce forum (ou d'un autre) m'indique une solution élégante à laquelle je n'avais pas pensé, ou qui ne fonctionne proprement qu'avec une version récente des navigateurs.
Si tu trouves une solution CSS a ton problème, je serai très heureux de la connaître et de l'inclure dans ma propre boîte à outils.

PS j'ai trouvé les prémisses d'une autre guerre du même tonneau à propos de l'utilisation de la souris: il paraîtrait que la souris serait ringue depuis que les utilisateurs de tablette sont devenus une part importante du marché.
Modifié par PapyJP (21 Feb 2015 - 11:14)
@Belerian
J'ai pris ton layout et je l'ai adapté avec différentes solutions possibles (voir les fiddles) :
- Display inline-block
- Float
- Display table
- Flexbox

Chacune de ces méthodes a ces avantages et inconvénients/contraintes, je t'invite a lire les articles d'alsa pour les connaître, mais comme tu le vois les manières d'éviter la balise <table> sont multiples.
Modifié par Freez (21 Feb 2015 - 14:19)
Merci beaucoup,

En attendant pour avancer j'avais mis tout cela dans un tableau du coup ^^

Je vais pouvoir faire les modifications adéquates =)
C'est gentil d'avoir pris le temps de faire les modifs sur plusieurs solutions.

A bientôt (très probablement ^^)