28172 sujets

CSS et mise en forme, CSS3

Bonjour.

Tout d'abord je suis nouveau sur ce forum, je souhaite bonjour et merci au habitués des forums Alsacreations qui, derrières leurs écrans, mon beaucoup aidés lorsque j'avais besoin d'aide. je me suis inscris uniquement car j'ai besoin de poser une question quelque peu fondamentale (hé hé).

Bref, intéressons-nous un peu à mon problème.

http://www.scrapy.net/alsacreations/

Comme vous le voyez, il y a un menu en "position: fixed" (ie6 a un petit script JS pour l'émuler, c'est pas très jolie mais c'est ce qu'il y a pour le moment. Mieux vaut ça qu'un code non valide un peu foireux). Il faut savoir que ce menu, ainsi que la page, est centré.

Malheureusement, dès qu'une div contient un instruction CSS "position", et que le tout est en "margin: auto;", aussitôt que l'on redimensionne la fenêtre (IE6 uniquement), il ne refresh pas automatiquement.

Essayez par vous même, ouvrez http://www.scrapy.net/alsacreations/ sur votre navigateur IE6 en pleine écran, plus redimensionnez votre fenêtre. La seul manière de recentrer le site et de faire F5. Ce n'est pas le javascript qui cause ce problème, j'ai essayé sans.

Une idée pour éviter ce problème ? Je ne peux supprimer les "position:", j'en ai besoin pour le menu. Si vous avez une solution, si possible, qu'elle ne soit pas en javascript, qu'elle puisse être valide et compatible entre les navigateurs (du moins nous nous sommes compris).

Merci.
Modifié par Scrapy (10 Sep 2008 - 07:47)
Oups,

Je viens de m'apercevoir que la partie "CSS et mise en forme" était plus adapté à ma question (si un admin peut régler ça...)

Merci.
Hello Scrapy et bienvenue Smiley cligne ,

Scrapy a écrit :
Je viens de m'apercevoir que la partie "CSS et mise en forme" était plus adapté à ma question
C'est fait !

Personnellement je ne m'embêterais pas avec ce "bon vieux IE6" et je le laisserais tout simplement faire défiler le header avec le reste de la page... ce qui n'aurait rien de choquant comme comportement.

Bon... comme je sens déjà que tu n'es pas d'accord avec cette suggestion Smiley lol , il me semble qu'il suffit de rajouter un refresh de la page lors d'un redimensionnement (pour IE < 7 uniquement) du genre
<body onresize="window.location.href=unescape(window.location.pathname);">

A+
Salut !
Heyoan a écrit :
Personnellement je ne m'embêterais pas avec ce "bon vieux IE6" et je le laisserais tout simplement faire défiler le header avec le reste de la page... ce qui n'aurait rien de choquant comme comportement.

Yeap, ce qui n'ont pas activé le JS sur IE6 auront ce résultat. Par contre ce n'est pas ça le problème, le soucis c'est que cela sagit que d'une mauvaise interprétation CSS d'IE6 du margin: auto avec un position, et non du position: fixed simplement.

J'aimerais pouvoir qu'un utilisateur d'IE6 avec javascript désactivé puisse simplement avoir une page centré quelque soit la taille de sa fenêtre s'il la redimensionne (pfiou).

J'espère que tu m'as compris.

Merci déjà pour ton aide, je sais que si j'y arrive pas, le refresh auto à chaque redimension de la fenêtre sera fait en javascript. Mais j'aimerais (franchement) éviter ça.
Modifié par Scrapy (10 Sep 2008 - 08:38)
Scrapy a écrit :

J'espère que tu m'as compris.
Yep ! Mais je ne vois pas de solution... Smiley hmm

Pour en revenir au header en position fixed il pose tout de même de gros problèmes d'accessibilité quel que soit le navigateur : il suffit de réduire la largeur de la fenêtre et il est alors impossible de cliquer sur le lien Contact (pour ne citer que lui) .
Oui, le design est d'une largeur de 1000px, un scrollbar apparait pour les résolutions < que 1024x768 (désolé, ce site ne m'appartient pas, j'ai des exigences à tenir pour un client (le header en position: fixed est une exigence aussi.)).

J'ai un écran large, pour voir le bug sous IE6 du margin auto, il faut une résolution supérieur a 1024x758. J'ai oublié de le préciser.
Modifié par Scrapy (10 Sep 2008 - 09:16)
Scrapy a écrit :
Oui, le design est d'une largeur de 1000px, un scrollbar apparait pour les resolution < que 1024x768 (désolé, ce site ne m'appartient pas, j'ai des exigences à tenir pour un client (le header en position: fixed est une exigence aussi.)).
J'ai bien vu le scrollbar mais avec la position:fixed le header ne scrolle pas (testé avec FF). Smiley cligne

Si c'est une contrainte du client il me semble que le positionnement du header devrait être full Javascript.
Modifié par Heyoan (10 Sep 2008 - 09:18)
Le header qui reste fixe est une exigence du client. "Position: fixed;" est la commande idéale pour tout les navigateurs excepté IE6. IE6 a donc son module javascript.

L'idée de faire le header fixe en javascript pour tout les navigateur est bonne, seulement, il y a 2 contraintes. Comme je l'ai dis plus haut, c'est une exception (pour IE6 par exemple Smiley biggrin ), car ce n'est pas vraiment propre visuellement. Et puis, il faut que cela soit visible sur un maximum de navigateur, et beaucoup de gens n'ont pas le javascript activé de base partout.
Modifié par Scrapy (10 Sep 2008 - 09:23)
Scrapy a écrit :
Le header qui reste fixe est une exigence du client. "Position: fixed;" est la commande idéale pour tout les navigateurs excepté IE6. IE6 a donc son module javascript.
Hem... Comme j'ai l'impression de parler créole je te joins une image ! Smiley biggol

upload/8634-swisschekup.png

Comme tu peux le voir, avec FF2 ou FF3 j'ai beau scroller à droite le header ne se déplace pas et est donc inaccessible.
Là Heyoan tu exagères, fais un effort quand même ! Si en 800x600 on dépasse effectivement pas "Collaborateurs privilégiés" dans le menu, par contre en agrandissant les textes 3x on affiche bien la suite du menu "Combien" et "Contact" sous la ligne Smiley smile

En gros Scrapy ton problème principal réside dans le fait que l'entête placée "positionned" et fixe en largeur à 1000px rend toute utilisation sur un écran inférieur strictement impossible. Si l'exigence client est de rendre le site inconsultable, je ne vois pas l'intérêt d'en faire un ? A côté de ça le fait de devoir faire F5 sur IE6 si on resize la fenêtre est plutôt bénin comme problème, non ?
Alors comme la société est spécialisée dans l'analyse et la recherche de troubles éventuels, elle pourrait commencer par elle-même et oublier cette exigence aux effets désatreux ?
Modifié par Arsene (17 Oct 2008 - 17:30)
Arsene a écrit :
Là Heyoan tu exagères, fais un effort quand même ! Si en 800x600 on dépasse effectivement pas "Collaborateurs privilégiés" dans le menu, par contre en agrandissant les textes 3x on affiche bien la suite du menu "Combien" et "Contact" sous la ligne Smiley smile
hihihi ! Smiley ravi

C'est vrai ! Et du coup ce n'est pas "complètement" inaccessible !
Heyoan a écrit :
hihihi ! Smiley ravi

C'est vrai ! Et du coup ce n'est pas "complètement" inaccessible !


Ouaip, merci pour le coup d'oeil je n'avais pas remarqué le problème de la résolution inférieur depuis le début du développement.
Sinon un compromis possible (puisque les clients sont parfois tenaces Smiley langue ) : n'affecter le position:fixed que par le biais de Javascript et seulement après avoir vérifié que la largeur de la page est suffisante. Et du même coup ça répond à ton premier problème puisque ça t'oblige à gérer le "onresize".


Edit: et pendant la présentation au client, s'assurer que son écran est assez large pour qu'il ne se rende compte de rien ! Smiley biggrin
Modifié par Heyoan (10 Sep 2008 - 10:01)
Arsene a écrit :
En gros Scrapy ton problème principal réside dans le fait que l'entête placée "positionned" et fixe en largeur à 1000px rend toute utilisation sur un écran inférieur strictement impossible. Si l'exigence client est de rendre le site inconsultable, je ne vois pas l'intérêt d'en faire un ? A côté de ça le fait de devoir faire F5 sur IE6 si on resize la fenêtre est plutôt bénin comme problème, non ?


Ce n'étais pas le problème principale, mais c'est bien de souligner ça ouaip Smiley ohwell .
Modifié par Scrapy (10 Sep 2008 - 10:06)
Heyoan a écrit :
Sinon un compromis possible (puisque les clients sont parfois tenaces Smiley langue ) : n'affecter le position:fixed que par le biais de Javascript et seulement après avoir vérifié que la largeur de la page est suffisante. Et du même coup ça répond à ton premier problème puisque ça t'oblige à gérer le "onresize".


Edit: et pendant la présentation au client, s'assurer que son écran est assez large pour qu'il ne se rende compte de rien ! Smiley biggrin


Ouaip si seulement c'était possible. avec IE6, le position: fixed émulé en javascript clignote quand on scroll. Ça c'est déjà pas très propre... Alors pour une présentation au client c'est... bof.
Modifié par Scrapy (10 Sep 2008 - 10:05)
Sinon, tant qu'à faire, un document en deux <div> de hauteurs fixes, l'un pour l'entête-menu et l'autre en overflow scroll permettant de défiler le contenu sans toucher au positionnement du haut ?
En passant tu pourrais également remplacer le width:1000px par max-width:1000px et faire en sorte que ton menu soit fluide : déjà en remplaçant le paragraphe et les liens par UL + LI + A et en affectant un float:left à tes LI.