jQuery a des fonctions height () et width () qui retournent la hauteur ou la largeur en pixels sous forme d'entier ...
Comment puis-je obtenir un remplissage ou une valeur de marge d'un élément en pixels et sous forme d'entier en utilisant jQuery?
Ma première idée a été de faire ce qui suit:
var padding = parseInt(jQuery("myId").css("padding-top"));
Mais si le remplissage est donné en ems par exemple, comment puis-je obtenir la valeur en pixels?
En examinant le plugin JSizes suggéré par Chris Pebble, j'ai réalisé que ma propre version était la bonne :). jQuery retourne toujours la valeur en pixels, donc la simple analyse en entier était la solution.
Merci à Chris Pebble et Ian Robinson
javascript
jquery
css
Malik Amurlayev
la source
la source
parseInt
. Citant MDN: " radix Un entier compris entre 2 et 36 qui représente le radix (la base dans les systèmes numériques mathématiques) de la chaîne mentionnée ci-dessus. Spécifiez 10 pour le système numérique décimal. Spécifiez toujours ce paramètre pour éliminer la confusion du lecteur et garantir un comportement prévisible . Des implémentations différentes produisent des résultats différents lorsqu'une base n'est pas spécifiée, la valeur par défaut étant généralement 10. » Voir: developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…Réponses:
Vous devriez pouvoir utiliser CSS ( http://docs.jquery.com/CSS/css#name ). Vous devrez peut-être être plus précis, comme "padding-left" ou "margin-top".
Exemple:
CSS
JS
Le résultat est 10px.
Si vous souhaitez obtenir la valeur entière, vous pouvez effectuer les opérations suivantes:
la source
JSizes
plugin de l'autre réponse (que j'ai fini par utiliser) retourne un entier lorsque la valeur de retour est passéeParseInt(...)
, juste FYI.parseInt($('a').css('margin-top').replace('px', ''))
.css()
retournera- t-il toujours la valeur avec "px" à la fin?Comparez les hauteurs / largeurs extérieures et intérieures pour obtenir la marge totale et le rembourrage:
la source
that.outerHeight(true) - that.outerHeight()
donnerait les marges verticales totales, car externeHeight () inclurait les rembourrages et les bordures mais exclurait les marges. Voir api.jquery.com/outerWidth/ .La fonction parseInt a un paramètre "radix" qui définit le système numérique utilisé lors de la conversion, donc appeler
parseInt(jQuery('#something').css('margin-left'), 10);
renvoie la marge gauche sous forme d'entier.C'est ce que JSizes utilise.
la source
parseInt('auto', 10);
(auto
est validemargin-left
).VEUILLEZ ne pas aller charger une autre bibliothèque juste pour faire quelque chose qui est déjà nativement disponible!
jQuery
.css()
convertit les% et les em en leur équivalent pixel pour commencer, etparseInt()
supprimera le'px'
de la fin de la chaîne retournée et le convertira en un entier:http://jsfiddle.net/BXnXJ/
la source
Voici comment obtenir les dimensions environnantes:
Faites attention à ce que chaque variable,
paddingTopBottom
par exemple, contienne la somme des marges des deux côtés de l'élément; à savoirpaddingTopBottom == paddingTop + paddingBottom
. Je me demande s'il existe un moyen de les obtenir séparément. Bien sûr, s'ils sont égaux, vous pouvez diviser par 2 :)la source
IE 7
. Voir: stackoverflow.com/questions/590602/…Cette fonction simple le fera:
Usage:
la source
auto
,inherit
et les%
valeursNaN
cela dépend du navigateur. Pour autant que je sache, jQuery ne se normalise pas.css()
contrairement à.width()
&.height()
Parse int
renvoie 0 pour 0px
la source
Vous pouvez simplement les récupérer comme avec n'importe quel attribut CSS :
Vous pouvez les définir avec un deuxième attribut dans la méthode css:
EDIT: Si vous avez besoin uniquement de la valeur en pixels, utilisez
parseInt(val, 10)
:la source
ok juste pour répondre à la question d'origine:
vous pouvez obtenir le remplissage comme un entier utilisable comme ceci:
Si vous avez défini une autre mesure comme px, remplacez simplement "ems" par "px". parseInt interprète la chaîne de caractères comme une valeur erronée, il est donc important de la remplacer par ... rien.
la source
Vous pouvez également étendre vous-même le framework jquery avec quelque chose comme:
Ajoutant ainsi une fonction sur vos objets jquery appelée margin (), qui retourne une collection comme la fonction offset.
fx.
la source
N'utilisez pas string.replace ("px", ""));
Utilisez parseInt ou parseFloat!
la source
J'utilise probablement github.com/bramstein/jsizes plugin jquery pour les rembourrages et les marges de manière très confortable, merci ...
la source
Adopté sans vergogne de Quickredfox .
mettre à jour
Modifié en
parseInt(val, 10)
car il est plus rapide queparseFloat
.http://jsperf.com/number-vs-plus-vs-toint-vs-tofloat/20
la source
Pas pour necro mais j'ai fait cela qui peut déterminer les pixels en fonction d'une variété de valeurs:
De cette façon, nous prenons en compte le dimensionnement et l'auto / héritage.
la source
parseInt()
c'est faux, la largeur ou la hauteur peuvent être des points flottants.