Changer la police d'écriture à l'aide d'un bouton
Résolu/FerméCaetera Messages postés 233 Date d'inscription mercredi 19 août 2009 Statut Membre Dernière intervention 18 octobre 2024 - 15 nov. 2022 à 18:52
- Changer la police d'écriture à l'aide d'un bouton
- Changer dns - Guide
- Police écriture facebook - Guide
- Changer la police d'écriture instagram - Guide
- Police aptos - Accueil - Bureautique
- Changer police heure iphone - Guide
7 réponses
9 nov. 2022 à 18:11
Bonjour,
Oui tu peux utiliser une fonction sur un évenement onclick pour venir changer le style d'un élément ou du document entier
document.body.style.fontFamily = "courier" // ou pour sélectionner un élément particulier document.querySelector('.ta-classe')
Modifié le 9 nov. 2022 à 21:32
Bonjour,
Merci pour la réponse, malheureusement ça ne fonctionne pas, je ne comprends pas pourquoi
Peut-être est-ce parce que j'ai paramétré la police d'écriture Tongari en CSS et qu'il y a un conflit quelque part ?
J'ai également essayé :
document.getElementsByTagName("p")
Sans succès non plus, en écrivant de cette manière :
document.getElementsByTagName('p').style.fontfamily = 'OpenDyslexic'
10 nov. 2022 à 01:00
Le CSS est appliqué sur un élément, et c'est cet élément qu'il faut récupérer pour lui changer la police.
Peut-tu nous partager ton CSS et le HTML associé ?
10 nov. 2022 à 16:59
Voici mon CSS :
@font-face { font-family: 'Tongari'; src: url('https://static1.squarespace.com/static/5d6ffee77121db00017382cf/t/5fadb1f5dd1d4d0520e6013f/1605218805377/tongari-regular.woff') }; h1, h2, p { font-family: 'Tongari'; color: white; }
Je précise que j'utilise squaspace
J'ai bien intégré et défini la police OpenDyslexic comme suit :
@font-face { font-family: 'OpenDyslexic'; src: url('https://static1.squarespace.com/static/5d6ffee77121db00017382cf/t/63642c053e07f53779e987b8/1667509253648/OpenDyslexic-Regular.otf') };
Et concernant le bouton en lui-même j'ai utilisé l'évènement onclick comme ceci :
onclick="document.getElementsByTagName('p').style.fontfamily = 'OpenDyslexic'"
Modifié le 10 nov. 2022 à 23:44
Ok merci !
Alors pour l'utilisation de la police, je te recommande ceci :
body { font-family: 'Tongari'; } h1, h2, p { color: white; }
Comme ça tu n'as qu'un élément à cibler par ton JS
onclick="document.querySelector('body').style.fontFamily = 'OpenDyslexic'"
parce que ton getElementsByTagName il renvoie un tableau d'éléments, il faudrait appliquer le .style sur chacun d'entre eux !
J'espère que c'est plus clair maintenant.
(et c'est fontFamily avec la majuscule)
Modifié le 11 nov. 2022 à 15:00
Oh génial ! Ça marche très bien, merci beaucoup
J'aimerais aller un peu plus loin, est-il possible, de cliquer une nouvelle fois pour revenir à la police d'origine ?
Peut-être qu'il faut écrire une fonction pour cela ?
J'ai pour l'instant défini onclick comme-ci : (ID étant AdaptFont)
onclick="document.querySelector('body').style.fontFamily = 'OpenDyslexic' ; document.getElementById('AdaptFont').innerHTML = 'Lire avec Tongari' ; document.getElementById('AdaptFont').style.fontFamily = 'Tongari'"
Je me demandais s'il est possible d'ajouter quelque chose pour réinitialiser le bouton, une sorte de "click again" ou de "unclick"
Est-il possible de rajouter de la "temporalité" dans onclick ? Est-ce que cette ligne suivante pourrait réinitialiser l'évènement ?
document.getElementById('AdaptFont').onclick = null
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionModifié le 11 nov. 2022 à 15:41
J'ai tenté une fonction mais sans succès, je ne suis pas à l'aise, je ne sais pas trop comment les paramétrer cependant j'ai tenté ceci, sans succès, l'erreur qui m'est renvoyée est "script désactivé" :
<script type="text/javascript"> function FonctionFont('AdaptFont') { if (document.querySelector('body').style.fontFamily = 'Tongari') { document.querySelector('body').style.fontFamily = 'OpenDyslexic' ; document.getElementById('AdaptFont').innerHTML = 'Lire avec Tongari' ; document.getElementById('AdaptFont').style.fontFamily = 'Tongari'; } else { document.querySelector('body').style.fontFamily = 'Tongari' ; document.getElementById('AdaptFont').innerHTML = 'Lire avec OpenDyslexic' ; document.getElementById('AdaptFont').style.fontFamily = 'OpenDyslexic'; } } </script>
En ayant paramétré l'évènement onclick comme ceci :
onclick="FonctionFont('AdaptFont')"
11 nov. 2022 à 17:22
Deux choses à propos de ton code :
- dans le "if" il faut faire une comparaison (== ou ===) et pas une assertion (=)
- tu as mis un paramètre dans la fonction mais tu ne l'utilises pas :
onclick="maFonction('truc')" // et le récupérer avec function maFonction(variableTruc) { element.blabla.fontFamily = variableTruc }
// ou plus simplement une bascule onclick="toggle()" function toggle() { si police == A: assigner la police B sinon assigner la police A } // et une autre fonction pour réinitialiser onclick="reset()" // dans laquelle tu mets la police par défaut
11 nov. 2022 à 18:16
Merci beaucoup, ça fonctionne, tout est ok ! Génial
J'ai utilisé la bascule avec onclick=toggle()
Dans le if existe-t-il une différence entre == et === ? Grossièrement c'est la même chose ?
Ok, je comprends le paramètre non utilisé dans la fonction, merci pour toutes ces précisions et le temps qui m'a été consacré :)
Salut,
la différence entre == (compare si égalité) et ===(compare si égalité stricte) est que l'égalité avec == est plus tolérante que l'égalité stricte.
Par exemple avec une égalité "simple" si les deux côtés(à gauche et à droite de double égal) sont égales mais avec une tolérance dans la comparaison:
'0' == 0 //-- compare la chaîne de caractère 0 et le nombre 0 ==> renvoi true
alors que
'0' === 0 //-- une chaîne de caractères est différente d'un nombre ==>renvoi false
Ce n'est qu'un exemple illustrant la différence entre l'égalité "simple" et l'égalité stricte mais il y en a beaucoup d'autres ou le double égal est plus permissif et le triple égal nécessite que les deux termes de la comparaison soient strictement identiques. Donc les deux ont leur utilité selon le contexte(être plus permissif pour tester ou nécessiter une stricte égalité des termes).
Le paramètre c'est ce qu'il y a entre crochet. Cela devrait être une variable et non, une chaîne de caractère. Il est inutile s'il n'est pas utilisé.
<span>FonctionFont('AdaptFont')</span>
Plutôt que nommer vos fonctions FontionsFont donner des noms qui signifient quelque chose, une fonction se reconnaît facilement lors de la création puisque précédé du mot clé "function" et quand utilisé le nom est suivit de parenthèse avec ou sans paramètres : FonctionFont(); ou FonctionFont('chaîne de caractères');
Par exemple ici:
function changerFont(){
//--ce que fait la fonction ...
}
et en relisant même dans plusieurs mois(ou par quelqu'un d'autre) on comprends facilement ce que fait la fonction. C'est une habitude simple et pratique qui rends le code lisible et compréhensible facilement donc autant ne pas s'en priver.
Exemple d'une fonction utilisant un paramètre correctement(et explicitement au passage):
function remplacerFont(nouvellePolice){ document.querySelector('body').style.fontFamily=nouvellePolice } //-- s'utilise comme ceci: remplacerFont('arial')/** attribue au body le style font-family='arial' et remplace ou supplante le précédent */
note: il est mieux de passer par .addEventListener (plutôt que par l'attribut onclick) et d'utiliser des classes pour changer le style, comme déjà indiqué par Grandasse_
Les deux sont plus souples, plus clair et facile à changer.
addEventListener parce que le code n'est pas séparé en 2 parties(une dans les balises script et l'autre en attribut d'une balise HTML), de plus en utilisant une fonction nommé on peut changer ou supprimer ce que fait le bouton par exemple en remplaçant la fonction par une autre dans le addEventListner(il me semble qu'avant d'utiliser un toggle c'était votre première idée). Ce n'est pas vraiment faisable en attribut d'élément HTML (ou alors il faut se compliquer la vie).
En utilisant une classe pour une police et une autre pour l'autre il suffit de chnager le CSS pour changer la police et de plus vous pouvez rajouter d'autres propriétés CSS.
Notez aussi qu'il est important si vous mettez des polices exotiques ou non conventionelles(comme ici) d'ajouter des polices de remplacements.
Si l'utilisateur n'a pas dans les fichiers police de son ordinateur les polices Tongari ou OpenDyslexic cela ne sert strictement à rien puisqu'il ne verra aucunee des polices.
Donc en changeant la classe CSS cela devient plus simple:
.policeBase{
font-family: tongari, arial;
}
policeAlternative{
font-family: OpenDislexic, times;
}
Et donc l'expression dans la fonction devient:
document.querySelector('body').className=policeAlternative;
et pour remettre(et dans un toggle):
document.querySelector('body').className=policeBase;
Plus simple(et plus rapide à taper) que de devoir réécrire les 2 polices à chaque fois en utilisant .style.FontFamily=...
15 nov. 2022 à 18:52
Merci pour toutes ces précisions, c'est très apprécié