|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Nouveau Membre du Club
![]() Inscription : février 2010 Messages : 127 ![]() |
Bonsoir,
Cherchant comment mettre les hauteurs des div enfants en fonction des parents, je suis tombé sur le FAQ du site : Code :
Quelqu'un aurait-il une solution ? Merci |
||
|
|
00
|
|
|
#2 | |||||||
|
Membre expérimenté
![]() ![]() Duke Jikel Inscription : mai 2010 Messages : 339 ![]() |
Citation:
Et comment je fais si je ne veux pas de hauteur figée sur le parent principal ? Et là il n'y a pas 36 solutions : Soit tu oublies IE et tu fais à coup de display:table, soit tu passes par le petit hack des familles Aller hop démo ici : http://jsfiddle.net/Gatsu35/pJgUj/ Code :
Code :
|
|||||||
|
|
00
|
|
|
#3 |
|
Invité régulier
![]() Mab Inscription : juin 2010 Messages : 4 ![]() |
Bonjour,
Oui moi je veux bien une explication Merci |
|
|
00
|
|
|
#4 | ||||
|
Membre expérimenté
![]() ![]() Duke Jikel Inscription : mai 2010 Messages : 339 ![]() |
Première chose important, poser la structure :
Code :
Ensuite je défini un "#header" ici il ne sert à rien, juste pour la déco. Après j'attaque les colonnes, celle-ci seront contenues dans un div #content. Ce n'est pas un div de "trop" il m'est très utile pour conserver une consistance sur le site. Ensuite je pose mes colonnes, je mets #leftNav et #rightNav avant #main pour une raison de commodité, oui, #main prend le reste de la largeur et comme je ne le flotte pas il prend le reste de la place entre les 2 éléments flottés. #content et #main : C'est deux éléments vont avoir un traitement particulier. Je vais leur appliquer le contexte de formatage via "overflow:hidden" cela me permet de régler 2 problèmes : - #content fera la hauteur de son contenu, même si tous ses éléments sont flottés (float) - #main viendra se caller proprement par rapport à #leftNav et #rightNav, ainsi pas besoin d'appliquer de "margin-left" ou "margin-right" Pour IE, le contexte de formatage s'applique en forçant le "hasLayout", et pour ça je rajoute juste "zoom:1" Plus d'informations sur le contexte de formatage : http://www.blog-and-blues.org/articl...s_de_formatage #leftNav et #rightNav Je les float simplement : float:left, et float:right, ce qui vient les placer respectivement ) à gauche et à droite de #main. Alignement en hauteur Alors là j'utilise une technique de sioux En gros l'idée c'est de forcer les boîtes à avoir une énorme hauteur via le "padding-bottom:32000px", sauf que du coup la page va faire 32000px de haut, et c'est là que la technique magique apparaît. Grâce au "margin-bottom:-32000px", physiquement je retire le padding de 32000px avec mon margin-bottom négatif, du coup le bloc ne fait que la hauteur de son contenu. Sauf que, #content qui entoure les colonnes cache grâce au overflow:hidden le contenu virtuellement ajouté via le padding-bottom et supprimé via le margin-bottom. enlevez le overflow:hidden sur #content et vous comprendrez Je vais simplement résumer en disant que les colonnes s'alignent virtuellement mais pas physiquement. Au final notre CSS est ainsi : Code :
Bug avec les ancres (#blabla) Si vous avez un id dans votre page et que vous pointez via un lien internet (#ancre) le contenu de votre page vous aurez des effets indésirables du fait du overflow:hidden et de la mega hauteur que fait son contenu, c'est valable pour tous les navigateurs sauf IE6 et 7 Background avec un background-position:bottom Comme nos colonnes font virtuellement 32000px de haut, le background-image positionné en bottom ne s'affichera pas, sauf tout en bas du block donc 32000px plus bas. Je déconseille donc cette technique sur des gros sites à gros trafic avec énormément de contenus ou pages différentes. Résultat final http://jsfiddle.net/Gatsu35/pJgUj/ |
||||
|
|
00
|
|
|
#5 |
|
Invité régulier
![]() Mab Inscription : juin 2010 Messages : 4 ![]() |
OK Merci
|
|
|
00
|
|
|
#6 |
|
Nouveau Membre du Club
![]() Inscription : février 2010 Messages : 127 ![]() |
Parfait, merci.
|
|
|
00
|
|
|
#7 |
|
Nouveau Membre du Club
![]() Inscription : février 2010 Messages : 127 ![]() |
Hum, il y a une petit souci...
Dans ma div main j'ai des div en absolute qui normalement sorte de cadre, hors avec le overflow: hidden ces div n'apparaissent plus... ![]() Une image par toujours mieux : Sans overflow : ![]() Avec overflow : ![]() Une idée ? Merci. |
|
|
00
|
|
|
#8 |
|
Membre expérimenté
![]() ![]() Duke Jikel Inscription : mai 2010 Messages : 339 ![]() |
Je l'ai dis, cette technique est chiante et là tu rencontre le problème.
C'est pour ça que je suis passé à autre chose |
|
|
00
|
|
|
#9 |
|
Nouveau Membre du Club
![]() Inscription : février 2010 Messages : 127 ![]() |
Ok, très bien, merci
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com