
Envoyé par
boteha
J'ai peur que le javascript ralentisse l'affichage
pas d'une façon significative tenant en compte la puissance actuelle des ordi, ce sera très négligeable. par contre faire des boucles en php pour extraire la plus longue chaine puis convertir en px c'est aussi un temps de calcul en plus coté serveur, sans parler de la faisabilité de la chose (comment connaitre la taille avant le rendu, avec la police de caracteres et autres ??)

Envoyé par
boteha
Je suppose que les fonctions ne sont pas supportées par tous les navigateurs
il suffira d'adapter ton code javascript, en plus avec le W3C DOM tout le monde s'est mis d'accord sur une seule spécification.
javascript me parait etre la meilleur solution, mais comme tu n'est pas à l'aise avec je ne pourrai te l'imposer
donc je te propose une DEUXIEME astuce qui consiste avant tout à abandonner la mesure de ta chaine en pixel
:
1- tu récupère la plus grande taille (pour mon exemple on va dire que c X)
2- tu prend UNE chaine (avec une taille <X) qui sera ajoutée à ta liste et tu la complète avec des espaces en utilisant la fonction str_pad($laChaineAAjouteeALaListe, X);
1 2
| $input = "Alien";
echo str_pad($input, 10); // affiche "Alien " |
4-mais parceque les navigateurs html ne tiennent pas compte des espaces lors du rendu, il va faloir appliquer une seconde manip :
$laChaineAAjouteeALaListe = str_replace(" "," ",$laChaineAAjouteeALaListe);
AINSI puisque tu aura dans tes listes des chaines avec le même nbr de caractères, tes liste auront la même largeur
dans le cas ou tu voudra récupérer les éléments de ta listes pour un une autre utilisation, tu peut utiliser la fonction trim ou ltrim afin de supprimer les espaces en trop (après remplacement des   par des espaces comme on les connais).
je sais que l'astuce est un peu tiré par les cheveux, mais mesurer la taille en pixel n'en ai pas moins obsolète
Partager