Voici mon violon: http://jsfiddle.net/digitalpunch/A6V6e/4/
Fondamentalement, sélectionnez d'abord tous les éléments requis, de sorte que vous ne parcourez qu'une seule fois le DOM et que vous ayez un événement de manipulation dans votre zone de saisie. Testé dans Chrome. Fonctionne assez vite - j'ai utilisé beaucoup de texte dans le violon.
Bonne chance, Damo
[EDIT:] En raison de la demande du public est ici le code du violon:
Size: <input type="text" id="size_var"></input>
<p>Lorem ipsum dolor sit amet, consectetur adipi</p>
$(function() {
var $p = $('p');
var origSize = $p.css('font-size');
origSize = origSize.substr(0, origSize.length - 2);
$('#size_var').keyup(function() {
var multiplier = $(this).val();
var size = origSize;
size *= multiplier;
$p.css({
'font-size': size + 'px'
});
});
});
[EDIT 2:]
Au lieu de sélectionner la p, vous pouvez sélectionner des balises body ou même html et changer la taille des polices. Cela descendra en cascade (héritage) pour tous les enfants. Assurez-vous simplement qu'aucun autre élément enfant ne remplace la taille de la police. De cette façon, vous n'avez pas besoin de parcourir plusieurs éléments.
Il n'a pas besoin d'utiliser des tailles de police relatives, mais ce serait sûrement la solution la plus performante étant donné qu'il est plus ou moins natif. – mekwall
Si un descendant quelconque utilise une taille de police absolue, il ne sera pas mis à l'échelle de celui-ci et de tous ses descendants par rapport au corps. Il a donc besoin d'utiliser des tailles de police relatives pour que cette solution fonctionne. – Quentin
Pour cette solution oui, mais il n'est pas nécessaire de résoudre son problème. S'il a besoin d'utiliser des tailles de police fixes, alors ma solution fonctionnera. C'est à gruber :) – mekwall