jQuery tiene funciones height () en width () que devuelve la altura o el ancho en píxeles como entero ...
¿Cómo puedo obtener un valor de margen o margen de un elemento en píxeles y como entero usando jQuery?
Mi primera idea fue hacer lo siguiente:
var padding = parseInt(jQuery("myId").css("padding-top"));
Pero si el relleno se da en ems, por ejemplo, ¿cómo puedo obtener el valor en píxeles?
Al examinar el complemento JSizes sugerido por Chris Pebble, me di cuenta de que mi propia versión era la correcta :). jQuery devuelve siempre el valor en píxeles, por lo que solo analizarlo como entero fue la solución.
Gracias a Chris Pebble e Ian Robinson
javascript
jquery
css
Malik Amurlayev
fuente
fuente
parseInt
. Citando MDN: " radix Un int entre 2 y 36 que representa la raíz (la base en los sistemas de numeración matemática) de la cadena mencionada anteriormente. Especifique 10 para el sistema de numeración decimal. Siempre especifique este parámetro para eliminar la confusión del lector y garantizar un comportamiento predecible . Las diferentes implementaciones producen resultados diferentes cuando no se especifica una raíz, por lo general, el valor predeterminado es 10. " Ver: developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…Respuestas:
Debería poder usar CSS ( http://docs.jquery.com/CSS/css#name ). Es posible que deba ser más específico, como "padding-left" o "margin-top".
Ejemplo:
CSS
JS
El resultado es 10px.
Si desea obtener el valor entero, puede hacer lo siguiente:
fuente
JSizes
complemento de la otra respuesta (que terminé usando) devuelve un número entero cuando se pasa el valor devueltoParseInt(...)
, solo para su información.parseInt($('a').css('margin-top').replace('px', ''))
.css()
aún devolverá el valor con "px" al final?Compare la altura / anchura exterior e interior para obtener el margen total y el relleno:
fuente
that.outerHeight(true) - that.outerHeight()
daría los márgenes verticales totales, porque outsideHeight () incluiría rellenos y bordes pero excluiría los márgenes. Ver api.jquery.com/outerWidth/ .La función parseInt tiene un parámetro "radix" que define el sistema de numeración utilizado en la conversión, por lo que llamar
parseInt(jQuery('#something').css('margin-left'), 10);
devuelve el margen izquierdo como un entero.Esto es lo que usa JSizes.
fuente
parseInt('auto', 10);
(auto
es válidomargin-left
).¡NO cargue otra biblioteca solo para hacer algo que ya está disponible de forma nativa!
.css()
Para empezar, jQuery's convierte% 'sy em a su equivalente en píxeles, yparseInt()
eliminará'px'
el final de la cadena devuelta y lo convertirá en un entero:http://jsfiddle.net/BXnXJ/
fuente
Así es como puede obtener las dimensiones circundantes:
Tenga en cuenta que cada variable,
paddingTopBottom
por ejemplo, contiene la suma de los márgenes en ambos lados del elemento; es decir,paddingTopBottom == paddingTop + paddingBottom
. Me pregunto si hay una manera de obtenerlos por separado. Por supuesto, si son iguales, puedes dividir por 2 :)fuente
IE 7
. Ver: stackoverflow.com/questions/590602/…Esta simple función lo hará:
Uso:
fuente
auto
,inherit
y%
los valoresNaN
depende del navegador. Hasta donde yo sé, jQuery no se normaliza a.css()
diferencia de.width()
&.height()
Parse int
devuelve 0 para 0px
fuente
Simplemente puede tomarlos como con cualquier atributo CSS :
Puede configurarlos con un segundo atributo en el método css:
EDITAR: si solo necesita el valor de píxel, use
parseInt(val, 10)
:fuente
ok solo para responder la pregunta original:
puede obtener el relleno como un entero utilizable como este:
Si ha definido otra medida como px, simplemente reemplace "ems" con "px". parseInt interpreta el stringpart como un valor incorrecto, por lo que es importante reemplazarlo con ... nada.
fuente
También puede extender el marco jquery usted mismo con algo como:
Agregando así una función en sus objetos jquery llamada margin (), que devuelve una colección como la función offset.
fx.
fuente
No use string.replace ("px", ""));
Utilice parseInt o parseFloat!
fuente
Probablemente use github.com/bramstein/jsizes jquery plugin para rellenos y márgenes de una manera muy cómoda, gracias ...
fuente
Adoptada descaradamente de Quickredfox .
actualizar
Cambiado a
parseInt(val, 10)
ya que es más rápido queparseFloat
.http://jsperf.com/number-vs-plus-vs-toint-vs-tofloat/20
fuente
No para necro, pero hice esto que puede determinar los píxeles en función de una variedad de valores:
De esta manera, tenemos en cuenta el tamaño y el auto / herencia.
fuente
parseInt()
está mal, el ancho o la altura pueden ser puntos flotantes.