J'écris une simple jQuery qui pour changer la taille de la police d'un élément par un certain pourcentage. Le problème que j'ai, c'est que lorsque je reçois la taille avec JQuery's $ ('# el'). CSS ("Font-Taille") Retourne toujours une valeur de pixel, même lorsqu'il est défini avec EM's. Lorsque j'utilise la propriété El.style.font-Taille de Javscript, il ne retournera pas une valeur tant que l'on n'a pas été explicitement définie par la même propriété. P>
Y a-t-il une manière que je puisse obtenir la valeur de la taille de la police d'origine CSS Set avec JavaScript? Comment votre méthode est-elle conviviale? P>
Merci d'avance! P>
4 Réponses :
Ce plug-in jquery semble être le truc: p>
J'ai eu ce problème une fois. J'utilise cette fonction pour obtenir la valeur INT d'un attribut CSS, s'il en existe un.
function PBMtoInt(str)
{
return parseInt(str.replace(/([^0-9\.\-])+/,"")!=""?str.replace(/([^0-9\.\-])+/,""):"0");
}
Parseint jette déjà tout ce qui suit le premier caractère non numérique, il s'agit donc d'équivalent: Val = parseint (STR); retour (val == nan)? 0: val;
Tous vos navigateurs cible à l'exception d'IE vous rendront compte à vous le " style calculé " de l'élément. Dans votre cas, vous ne veux pas em> pour savoir ce que la taille de la taille Seulement IE peut obtenir ce droit avec son Donc, en un mot, ce que vous voulez est un navigateur croisé impossible. Seulement IE peut le faire (à condition que vous suiviez Bypass jQuery pour accéder à la propriété). Votre solution de réglage de la valeur en ligne (par opposition à une feuille de style) est la meilleure que vous puissiez faire, car le navigateur n'a pas besoin de calculer quoi que ce soit. P> px code> est pour la taille de la police code>, mais vous voulez plutôt que la valeur définie votre feuille de style (s). P>
CurrentStyle code> . Malheureusement, JQuery dans ce cas fonctionne contre em> vous et vous obtient même à savoir signaler la taille calculée dans px code> (il utilise Ce piratage par Dean Edwards pour le faire, vous pouvez vérifier la source vous-même). P>
Ne dites jamais "impossible" :-) (sauf si vous êtes vraiment sûr vraiment sûr)
en chrome: retourne un objet cssrulelist code>. Besoin de faire un peu plus d'expérimentation avec cela, mais on dirait si m csssttyle code> at règles [n] code> remplace celui-ci at règles [m] code>. Donc: P> for(var i = rules.length - 1; i >= 0; --i) {
if(rules[i].style.fontSize) {
return /.*(em|ex|ch|rem|vh|vw|vmin|vmax|px|in|mm|cm|pt|pc|%)$/.exec(rules[i].style.fontSize)[1];
}
}
Dans quel navigateur se produisent-il?
Safari Webkit 4 Nightly, FF 3.5 (OS X / Win), Ie 6, Chrome 2 (gagnant)