Bonjour à tous,
Voilà quelques jours que j’écume les forums du net à la recherche de d’un moyen d’adapter une mise en page css à la résolution du client, et ce avec un but précis : faire qu’une page soit vue exactement de la même façon quelque soit la résolution de l'écran de celui qui la regarde.
Aujourd’hui j’ai en grande partie résolu ce problème, mais je voudrais faire part de mon étonnement face aux réactions de nombreuses personnes sur les forums, qui s’empressent de donner les liens de quelques tutoriaux (en disant : « c’est la seule façon… ») qui expliquent comment réaliser des mises en page fluides ou encore élastiques, qui ne sont en fin de compte que des solutions à défaut de mieux, du bricolage et qui, dans certaines conditions se comportent de façon très peu satisfaisante… par exemple, si on réduit la taille de la fenêtre du navigateur sur une page fluide c’est la catastrophe, et en plus on ne peut même pas bloquer une taille minimale puisque les propriétés min-width et min-height n’ont pas encore été implémentées dans la plupart des navigateurs.
Bref je ne comprend pas ces réactions, peut être est-ce la honte de développeurs expérimentés de dire « je ne sais pas comment faire », ou bien certains n’ont il pas bien assimilé le concept de résolution… je ne sais pas mais ce que j’espère, c’est que mon post ne sera pas mal accueillie sur ce forum, je désire simplement trouver une solution efficace à ce problème qui m’intéresse et s’emble-t-il intéresse de nombreuses autres personnes.
Ultime précision avant de rentrer dans les explications, cette méthode utilise du javascript ; bien sûr javascript peut être désactivé mais il est actif sur la très grande majorité des navigateurs modernes, à défaut il faudra utiliser une mise en page classique.
Donc voilà comment je m’y prends pour réaliser une mise en page CSS avec des tailles bloquées qui s’adapte quelque soit la résolution du client :
On commence par récupérer la résolution du client avec les fonctions javascript :
screen.width
screen.height
(Il existe une autre fonction qui permet de récupérer la résolution moins la taille des barres de menu et d’état : screen.availWidth screen.availHeigth).
Pour obtenir la taille réelle de la fenêtre du navigateur lorsqu’elle est maximisée avec le panneau historique fermé :
Pour IE :
-21 px de width
-182 px heigh
Soit pour 1024*768 = 1003*586
Pour modifier le style css d’un élément en javascript :
document.getElementById('id de l’élément').style.width = …
Donc nous savons comment récupérer la résolution de l’espace affichable et commet modifier le style en javascript, il nous reste à déterminer comment convertir la taille des éléments en fonction de la résolution :
Personnellement je fais comme suit :
Je fais ma mise en page fixe en px (pour certains sous éléments en % la mise en page restera fixe) sous ma résolution et lorsque le résultat me convient je fais une règle de trois et je l’applique à tout les éléments avec une fonction javascript qui est chargée avec Onload dans la balise body
Exemple :
document.getElementById('main').style.width = (765 * doc_width ) / 1003 +'px'
doc_widht est une variable dans laquelle j’ai mis la largeur affichable.
Le résultat est parfait, j’ai testé sous toutes les résolutions, et même sur un téléphone portable
Le principal problème réside dans la taille des polices, pour le moment je les définis en « em » et je leur applique la même règle de calcule mais elles ne s’affiche pas exactement de la même façon alors si quelqu’un à une idée pour ce point, je suis preneur, en attendant je continu à chercher.
Voilà si quelqu’un a des questions ou des critiques qu’ils n’hésite pas
Modifié par wyst (29 Jul 2006 - 08:07)
Voilà quelques jours que j’écume les forums du net à la recherche de d’un moyen d’adapter une mise en page css à la résolution du client, et ce avec un but précis : faire qu’une page soit vue exactement de la même façon quelque soit la résolution de l'écran de celui qui la regarde.
Aujourd’hui j’ai en grande partie résolu ce problème, mais je voudrais faire part de mon étonnement face aux réactions de nombreuses personnes sur les forums, qui s’empressent de donner les liens de quelques tutoriaux (en disant : « c’est la seule façon… ») qui expliquent comment réaliser des mises en page fluides ou encore élastiques, qui ne sont en fin de compte que des solutions à défaut de mieux, du bricolage et qui, dans certaines conditions se comportent de façon très peu satisfaisante… par exemple, si on réduit la taille de la fenêtre du navigateur sur une page fluide c’est la catastrophe, et en plus on ne peut même pas bloquer une taille minimale puisque les propriétés min-width et min-height n’ont pas encore été implémentées dans la plupart des navigateurs.
Bref je ne comprend pas ces réactions, peut être est-ce la honte de développeurs expérimentés de dire « je ne sais pas comment faire », ou bien certains n’ont il pas bien assimilé le concept de résolution… je ne sais pas mais ce que j’espère, c’est que mon post ne sera pas mal accueillie sur ce forum, je désire simplement trouver une solution efficace à ce problème qui m’intéresse et s’emble-t-il intéresse de nombreuses autres personnes.
Ultime précision avant de rentrer dans les explications, cette méthode utilise du javascript ; bien sûr javascript peut être désactivé mais il est actif sur la très grande majorité des navigateurs modernes, à défaut il faudra utiliser une mise en page classique.
Donc voilà comment je m’y prends pour réaliser une mise en page CSS avec des tailles bloquées qui s’adapte quelque soit la résolution du client :
On commence par récupérer la résolution du client avec les fonctions javascript :
screen.width
screen.height
(Il existe une autre fonction qui permet de récupérer la résolution moins la taille des barres de menu et d’état : screen.availWidth screen.availHeigth).
Pour obtenir la taille réelle de la fenêtre du navigateur lorsqu’elle est maximisée avec le panneau historique fermé :
Pour IE :
-21 px de width
-182 px heigh
Soit pour 1024*768 = 1003*586
Pour modifier le style css d’un élément en javascript :
document.getElementById('id de l’élément').style.width = …
Donc nous savons comment récupérer la résolution de l’espace affichable et commet modifier le style en javascript, il nous reste à déterminer comment convertir la taille des éléments en fonction de la résolution :
Personnellement je fais comme suit :
Je fais ma mise en page fixe en px (pour certains sous éléments en % la mise en page restera fixe) sous ma résolution et lorsque le résultat me convient je fais une règle de trois et je l’applique à tout les éléments avec une fonction javascript qui est chargée avec Onload dans la balise body
Exemple :
document.getElementById('main').style.width = (765 * doc_width ) / 1003 +'px'
doc_widht est une variable dans laquelle j’ai mis la largeur affichable.
Le résultat est parfait, j’ai testé sous toutes les résolutions, et même sur un téléphone portable
Le principal problème réside dans la taille des polices, pour le moment je les définis en « em » et je leur applique la même règle de calcule mais elles ne s’affiche pas exactement de la même façon alors si quelqu’un à une idée pour ce point, je suis preneur, en attendant je continu à chercher.
Voilà si quelqu’un a des questions ou des critiques qu’ils n’hésite pas
Modifié par wyst (29 Jul 2006 - 08:07)