Bonjour
Après vous avoir embêté pendant un bout de temps avec mes questions, je vous propose une solution complète de gestion dynamique de la résolution en php. Elle se base sur le fait qu'on peut écrire une feuille de style avec une extension .php au lieu de .css.
Elle nécessite absolument l'emploi de javascript pour récupérer la résolution de l'écran.
Le principe :
1. on détecte la résolution avec javascript
2. on la stocke dans deux variables de session (verticale, horizontale)
3. on passe par la feuille de style écrite en php
4. on adapte toutes les dimensions grâce à des fonctions php.
Vous êtes prêts ? Alors, en avant pour le code !
Le fichier resolution.php (écrit pour une résolution de développement de 1280*1024)
Le fichier fonctions.php (le retour est minimisé à 7, car en-dessous l'affichage n'est pas toujours bon)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35 <?php session_start(); if (isset($_GET['resolX'])) { $_SESSION['ratioX'] = $_GET['resolX']/1280; $_SESSION['ratioY'] = $_GET['resolY']/1024; } if (@$_SESSION['SAUT'] != 'OUI') { //test de la resolution if (empty($_SESSION['ratioX']) && empty($_SESSION['SAUT'])) { echo ' <SCRIPT language="JavaScript"> function screen_mode() { var w = "resolX=" + screen.width + "&resolY=" + screen.height; return w; } document.location.href ="http://monsite/resolution.php?" + screen_mode(); </SCRIPT> '; } else { $_SESSION['SAUT'] = 'OUI'; $redirection = "Location: index.php"; header($redirection); } } ?>
La feuille de style style.php : notez l'utilisation des fonctions resizeX() et resizeY() qui permettent d'adapter la taille horizontales et verticales des polices, des largeurs, etc. J'ai fait exprès d'adapter horizontalement la taille des polices, sinon l'écrasement est trop important. En effet, les ratios en X et en Y sont respectivement de 1.25 et de 1.33 lors du passage de 1280*1024 à 1024*768.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 <? function resizeX($nombre) { if(isset($_SESSION['ratioX'])) { $nombre = $nombre * $_SESSION['ratioX']; $nombre = max($nombre, 7); } return $nombre; } function resizeY($nombre) { if(isset($_SESSION['ratioY'])) { $nombre = $nombre * $_SESSION['ratioY']; $nombre = max($nombre, 7); } return $nombre; } ?>
et maintenant le fichier index.php
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 <?php session_start(); include("../fonctions.php"); ?> * { margin: 0; font-family: arial,sans-serif,"Lucida Grande", Tahoma, Helvetica, Sans-Serif"Trebuchet MS", Verdana, ; } div { font-size:<?php echo resizeX(11);?>pt; } .tableau10 { width=100%; height: <?php echo resizeY(10);?>px; border-width: 1px 1px 1px 4px; border-style: solid; border-color: #E4EBF6; background: #fff; overflow: none; border-radius:3px; }
Voila, c'est tout.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 <?php //si la résolution n'a pas été détectée, on redirige if (@$_SESSION['SAUT'] != 'OUI' ) { $redirection = "Location: resolution.php"; header($redirection); } ?> <html> <head> <link rel="stylesheet" type="text/css" href="./scripts/style.php"> </head> <body> <table width=<?php echo resizeX(1200);?>px> <td> Ce tableau fait 1200 pixels de largeur en 1280*1024, mais seulement 960 en 1024*768 </td> </table> </body> </html>
N'hésitez pas à me faire part de vos commentaires.







Répondre avec citation






Partager