Comportement de div dans div

Eléphant du PHP | 396 Messages

25 juil. 2005, 12:06

Bonjour tout le monde,

J'essaye de me mettre au CSS pour oublier les frameset mais je me tire les cheveux...

Code : Tout sélectionner

div conteneur ------------------------------------------------- | div gauche | div droite | | | | | | | | | | | | | | | | | | | -------------------------------------------------
Je veux donc contenir dans mon div 'conteneur' les 2 autres div.
En gros div 'gauche' est le menu et div 'droite' le contenu.
Je veux que 'conteneur' ait une taille fixe donc le lui donne des attributs width et height.

Le problème vient de 'droite'.
Je voudrais que son height soit de 100% avec un overflow:auto; pour que si le contenu tienne dans le height de 'conteneur', on n'ait pas d'ascenseur. Et que si il y a beaucoup de contenu, l'ascenceur apparaisse et permette de se balader dans 'droite' tout en restant dans les dimensions de 'conteneur'.

Sous firefox, pas de problème, il "comprend" que droite est placé dans 'conteneur' et applique le 100% de 'droite' pour qu'il occupe la hauteur de 'conteneur' (l'ascenceur n'apparaissant que si nécessaire).
Mais sous IE, il comprend le 100% de 'droite' comme 100% de la page et deborde en bas si le contenu est trop important.

Comment faire pour que 'droite' soit vraiment compris comme un élément de 'conteneur' et ne puisse en aucun cas dépasser en hauteur ou en largeur?

Merci d'avance.

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

25 juil. 2005, 12:11

Je te poserais une question hors sujet par rapport à ta question :

est-ce que tu t'es bien renseigné sur les div ?

Tu es en train de perdre tous les avantages du div avec ce que tu fait

Pourquoi tout mettre dans un div global ? Si tu cherches à rafraichir juste une partie, pourquoi un div droite et un div gauche ?

Si c'est du positionnement, pourquoi div ?

Il ne faut pas "remplacer" les frameset par des div mais "adapter" une archi framset vers une archi CSS
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphant du PHP | 396 Messages

25 juil. 2005, 12:14

En fait je met un conteneur pour utiliser ses bordures pour encadrer le tout.

Cela dit, comme je débute avec CSS, je suis conscient que je fais certainement un peu nimporte quoi ;)

Eléphant du PHP | 396 Messages

25 juil. 2005, 12:26

En fait ma question pourrait se résumer à ça :

Pourquoi si j'insere un bloc dans un conteneur et que je lui met 100% en dimension, celui ci va deborder de son conteneur?
On ne peut pas definir "100% de son parent"?

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

25 juil. 2005, 14:11

C'est un pb d'interpretation de IE

quand tu donnes une taillle relative, il doit prendre celle du parent et non la totale, mais IE ne l'entend pas pareil ...

Il y a aussi la taille des boites qu'il ne prend pas correctement

jete un oeil ici : http://openweb.eu.org/articles/dimensions_boites_css/
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphant du PHP | 396 Messages

25 juil. 2005, 16:16

Merci pour le lien.

Vivement que tous les navigateurs s'accordent sur les normes à respecter :evil:

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

25 juil. 2005, 16:19

Merci pour le lien.

Vivement que tous les navigateurs s'accordent sur les normes à respecter :evil:
Mis à part IE, les navigateurs sont assez proches et assez valide W3C

Vivement que MS décide de s'accorder aux norme :roll:
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphant du PHP | 396 Messages

25 juil. 2005, 16:38

Merci pour le lien.

Vivement que tous les navigateurs s'accordent sur les normes à respecter :evil:
Mis à part IE, les navigateurs sont assez proches et assez valide W3C
Mis à part le navigateur utilisé par 70 ou 80% des gens :?
Là franchement c'est à me demander si je vais pas rester avec des tableaux pour le moment

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

25 juil. 2005, 16:41

C'est pour ça que réaliser un site web est un savant mélange de choix et de travail.

Mais tu peut réduire les div utilisés afin d'éviter ton problème

Le div ne doit être utilisé que quand tu n'as pas d'autre conteneur sous la main
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphant du PHP | 396 Messages

25 juil. 2005, 16:52

En fait pour mon problème à proprement parlé, je me suis debrouillé sans conteneur, en fixant les blocs 'gauche' et 'droite' en position absolue et en mettant une background-image au body ce qui affiche le contour d'un conteneur fictif avec une bordure à droite.
Je n'ai pas contre pas trouvé de solution pour la bordure basse du conteneur et le bloc 'droite' "descend" autant qu'il a de contenu :s
En plus je suis obligé de mettre les positions absolues en prenant en compte les décalages de quelques pixels dans l'affichage entre navigateurs et ça rend pas tout à fait ce que je voulais au final.
Bref, je suis pas convaincu par ce que ca donne... :(

ViPHP
fab
ViPHP | 2657 Messages

25 juil. 2005, 18:42

petit message un peu hors sujet mais c'est pour la bonne cause
un div dans un autre c'est un trop
article intéressant : http://openweb.eu.org/humeurs/calques_perdent/

Eléphant du PHP | 396 Messages

25 juil. 2005, 19:12

Ok mais comment faire un cadre autour des autres blocs?
Ou alors on fait un bloc avec une bordure qui ne contient pas les autres et qui est juste là pour sa bordure?
Mais là le problème que je vois c'est pour positionner les autres blocs à l'interieur pour que leurs dimensions correspondent parfaitement avec la fameuse bordure...

Mammouth du PHP | 19672 Messages

25 juil. 2005, 19:29

Petit lien de référence, je crois que ça va résoudre ton problème ;)
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 396 Messages

25 juil. 2005, 19:29

Pour illustrer ce que je veux faire, regarde l'index de ce forum.
Un fond, un conteneur avec bordure, et des blocs à l'intérieur.
Avec un tableau et un cellpadding, on gère bien l'espacement entre les blocs et le conteneur, mais en CSS, cette gestion me parrait bien difficile.

EDIT : j'ai posté en même temps que ton post Cyrano, je regarde le lien, merci :)

Eléphant du PHP | 396 Messages

25 juil. 2005, 19:36

http://css.alsacreations.com/modeles/modele11.htm
Ca ressemble à ce que je faire merci Cyrano.
Je regarderais plus tard comment on fait ça.
Juste une remarque, ils ont mis des <div> dans le <div> conteneur :p