S'il s'agit de:
- conserver un design unique de base pour plusieurs styles alternatifs
- en ne changeant que les tailles de polices entre les styles alternatifs,
... on procède de la manière suivante:
- le design est défini par une ou plusieurs CSS
permanentes, donc sans attribut title sur leur lien d'appel.
- la taille de police par défaut est définie dans une CSS
préférée distincte des CSS permanentes, donc avec un attribut title sur son lien d'appel.
- les tailles alternatives sont définies chacune dans une CSS
alternative distincte, donc avec un attribut rel="alternate stylesheet" et un attribut title propre à chacune, différent du title de la préférée.
Par exemple, pour 3 tailles de caractères possibles (défaut, grand, très grand):
<link rel="stylesheet" href="design.css" />
<link rel="stylesheet" href="taille1.css" title="défaut" />
<link rel="alternate stylesheet" href="taille2.css" title="grand" />
<link rel="alternate stylesheet" href="taille3.css" title="très grand" />
De cette manière, déjà, le mécanisme normal de choix de style dans Firefox, Mozilla et Opera marchera. C'est la base indispensable. Le style switcher, maintenant, n'est qu'un
hack qui va s'y ajouter, et non ne remplacer.
Pour ce style switcher en PHP, il suffit que le script de celui-ci modifie les liens pour que la taille par défaut passe en style alternatif et la taille choisie en style préféré. De la sorte, le style switcher reste compatible avec le mécanisme normal des styles alternatifs.
Par exemple, si l'utilisateur choisit le style "grand", le script doit écrire:
<link rel="stylesheet" href="design.css" />
<link rel="stylesheet" href="taille2.css" title="grand" />
<link rel="alternate stylesheet" href="taille1.css" title="défaut" />
<link rel="alternate stylesheet" href="taille3.css" title="très grand" />
Variante plus simple à gérer: llaisser inchangé la liste des styles alternatifs en y faisant figurer
tous les styles de taille, y compris celui liée par ailleurs comme préféré. Les liens par défaut deviennent:
<link rel="stylesheet" href="design.css" />
<link rel="stylesheet" href="taille1.css" title="défaut" />
<link rel="alternate stylesheet" href="taille1.css" title="défaut" />
<link rel="alternate stylesheet" href="taille2.css" title="grand" />
<link rel="alternate stylesheet" href="taille3.css" title="très grand" />
Et si l'utilisateur choisit la taille "grand", le script se contente de modifier l'appel vers la CSS préférée sans changer les autres liens:
<link rel="stylesheet" href="design.css" />
<link rel="stylesheet" href="taille2.css" title="grand" />
<link rel="alternate stylesheet" href="taille1.css" title="défaut" />
<link rel="alternate stylesheet" href="taille2.css" title="grand" />
<link rel="alternate stylesheet" href="taille3.css" title="très grand" />
L'important est que le style switcher laisse intact le mécanisme normal des styles alternatifs, pour ne pas aboutir à un hack qui bloque une fonctionnalité standard