28173 sujets

CSS et mise en forme, CSS3

Bonjour,

Je sais que cela a été abordé souvent mais la solution toujours proposée, soit le height à 1% ne peut fonctionner en l'occurance.
J'ai préparé un petit schéma de mon site Web qui vous fera rapidement comprendre comment cela fonctionne.

http://ixzed.free.fr/screenshit.gif

Cette image a été prise sous IE. Sous Mozilla, la bordure rouge est par-dessus la bordure verte et il n'y a donc aucun problème.
Tandis que sous IE, la bordure n'est pas par-dessus à cause de mon menu en float (décalage de 3px vers la droite). Lorsque le menu est fini, on remarquera que le décalage cesse (lors de la création d'un nouveau paragraphe bien entendu).

Si je n'applique pas l'attribut height à 1%, le résultat est partiellement le même excepté que le décalage se termine au milieu d'un paragraphe plutôt qu'entre deux paragraphes.

Vous pourriez alors me demander l'intérêt de superposer deux bordures. Si le texte est plus toujours plus grand que le menu, l'intérêt est moindre. Mais, dans certains cas, si le menu est plus grand que le texte, alors il y a aura un problème car ma bordure n'ira pas jusqu'en bas. C'est donc pour cela que j'ai deux bordures superposées, que je mets habituellement de la même couleur.

Donc, la solution proposée au décalage de 3px vers la droite sous IE par rapport aux floats ne règle pas totalement le problème. Elle décale le bloc au complet plutôt que d'en décaler qu'une partie, ce qui règle généralement le cas.
J'ai tenté d'appliquer une marge négative mais ça ne fonctionne pas. Et, même si ça fonctionnait, les paragraphes qui sont plus bas que la hauteur du menu serait alors décalé vers le menu...
J'ai tenté également de mettre une position relative, ce qui fonctionne partiellement avec l'attribut left à -4px. Le problème est encore une fois que mes paragraphes plus bas sont aussi décalés.

La technique facile serait de me faire deux classes, une pour les paragraphes qui sont à la hauteur du menu et une pour ceux qui sont plus bas que mon menu. Cependant, si mon site a 150 pages et que j'ajoute un lien dans mon menu, je dois vérifier chacune de ces pages au cas où le décalage ne correspondrait plus. Je pourrais encore me faire répondre que je pourrais me créer une fonction PHP toute faite, mais vous comprendrez que je préfère largement une solution purement CSS.

Si quelqu'un a des suggestions, je suis preneur.
Merci d'avance,

D@n!eL_
Modifié par D@n!eL_ (07 May 2006 - 05:53)
Salut

Pour donner le layout :
Pour IE <6 il faut _height: 1%;
Ne pas oublier le "_" pour exclure les autres navigateurs que IE
Et pour IE 6 & 7 il faut zoom: 1;

Il faut aussi donner le layout a ton menu (voir au lien du menu si ils sont forcé en bloc)
A tu essayer d’encadrer tes p d’un div global pour les données

A+

PS : si ça ne fonctionne pas, met un lien pour ta page
Modifié par gege71 (06 May 2006 - 22:07)
Merci infiniement de ton aide.
Le zoom 1 n'a aucun effet. J'utilise IE6.
Le height à 1% sur mon menu ne change rien.

J'ai donc opté pour un div container.
Ça fonctionne.
Le margin-left négatif ne fonctionne pas mais je l'ai mis en position relative avec un left à -4px pour que les bordures soient superposées et tout fonctionne.
J'ai dû me garder un margin-left de 150px pour les autres navigateurs. IE l'ignore à cause de la position relative. J'ai ajouté des tirets entre les 3 arguments nécessaires (position, left et height).

Je désire donc savoir si, sur IE5, ça va être OK sans aucune modification particulière, et IE7 bien sûr.
Pour MAC... ça me dérange moins un peu !
Même IE5... c'est surtout IE7 disons.
On peut downloader IE7 ?
Je pourrais tester moi-même...

Enfin, merci d'avance !
Modifié par D@n!eL_ (06 May 2006 - 22:33)
Attends attends, tu veux donner le layout à tes paragraphes, mais pourquoi faire ?

Normalement, sans le height: 1%;, tes paragraphes sont censés passer sous le menu flottant, et seul le texte est repoussé. Avec la marge à gauche, on évite ce chevauchement, et donc on devrait avoir les deux bordures qui se superposent, bien que le Three Pixel Jog décale le texte des paragraphes de 3px.

Donner le layout aux paragraphes avec ce height: 1%, ça revient à passer en Tree Pixel Jog phase 2 :
http://www.test.blog-and-blues.org/haslayout/tests/float6.html

Mais dans cette histoire, je ne suis pas sûr d'avoir compris pourquoi on n'a pas mis tous les paragraphes dans une seule div de contenu, pour mettre la bordure rouge à cette div, et se simplifier grandement la vie. Smiley sweatdrop
J'ai ajouté le conteneur, c'est ce qui est arrivé.
Je suis bête un peu, j'ignore pourquoi je n'ai pas pensé à ça.

Mais y reste que je voulais savoir si ce bug existait également sous IE5 ou IE7.
Cela signifie-t-il qu'avec un underscore en avant des attributs concernés, mon site sera OK sous toutes les versions d'IE ?
Il me semblait que l'underscore ne fonctionnait que sous IE6, c'était là un peu l'objet de ma question, car si tel est le cas, eh bien sous IE5.5 il ne voit pas ces nouvelles propriétés.