Necesito hacer un cálculo numérico basado en las propiedades CSS. Sin embargo, cuando uso esto para obtener información:
$(this).css('marginBottom')
devuelve el valor '10px'. ¿Hay un truco para conseguir justo el número de parte del valor, no importa si es px
o %
o em
o lo que sea?
javascript
jquery
css
parsing
Tim Sheiner
fuente
fuente
/[^-\d\.]/g
parseInt
ignorará automáticamente las unidades.Por ejemplo:
fuente
parseInt
tener en cuenta el caso en el que recibe un valor no entero, como en la respuesta de maximelebreton .Con el método replace, su valor css es una cadena y no un número.
Este método es más limpio, simple y devuelve un número:
fuente
%
,em
)Incluso si marginBottom se define en em, el valor dentro de parseFloat arriba estará en px, ya que es una propiedad CSS calculada.
fuente
fuente
px
pero se le daem
, debe convertir.Utilizo un complemento jQuery simple para devolver el valor numérico de cualquier propiedad CSS individual.
Se aplica
parseFloat
al valor devuelto por elcss
método predeterminado de jQuery .Definición de complemento:
Uso:
fuente
Supongamos que tiene una propiedad de margen inferior establecida en 20px / 20% / 20em. Para obtener el valor como un número, hay dos opciones:
Opción 1:
La función parseInt () analiza una cadena y devuelve un entero. No cambie los 10 que se encuentran en la función anterior (conocida como "radix") a menos que sepa lo que está haciendo.
El resultado de ejemplo será: 20 (si el margen inferior se establece en px) para% y em dará el número relativo en función del tamaño del elemento principal / fuente actual.
Opción 2 (personalmente prefiero esta opción)
El resultado de ejemplo será: 20 (si el margen inferior se establece en px) para% y em dará el número relativo en función del tamaño del elemento principal / fuente actual.
La función parseFloat () analiza una cadena y devuelve un número de coma flotante.
La función parseFloat () determina si el primer carácter de la cadena especificada es un número. Si es así, analiza la cadena hasta que alcanza el final del número y devuelve el número como un número, no como una cadena.
La ventaja de la opción 2 es que si obtiene números decimales devueltos (por ejemplo, 20.32322px) obtendrá el número devuelto con los valores detrás del punto decimal. Útil si necesita que se devuelvan números específicos, por ejemplo, si su margen inferior está configurado en em o %
fuente
parseint
truncará cualquier valor decimal (por ejemplo,1.5em
da1
).Pruebe una
replace
función con regex, p. Ej.fuente
Id por:
fuente
margin
es negativo o positivo!La forma más simple de obtener el ancho del elemento sin unidades es:
Fuente: https://api.jquery.com/width/#width2
fuente
Puede implementar este complemento jQuery muy simple :
Definición de complemento:
Es resistente a los
NaN
valores que pueden ocurrir en la versión anterior de IE (en su0
lugar, volverá )Uso:
¡Disfrutar! :)
fuente
var result; return isNaN(result = parseFloat(this.css(p))) ? 0 : result;
Para mejorar la respuesta aceptada, use esto:
fuente
Si es solo para "px", también puedes usar:
fuente
Deben eliminar unidades mientras se conservan los decimales.
fuente
utilizar
que devuelven una matriz. el primer índice devuelve el valor del margen inferior (ejemplo 20 para 20px) y el segundo índice devuelve la unidad del margen inferior (ejemplo px para 20px)
fuente