Eu preciso fazer um cálculo numérico com base nas propriedades CSS. No entanto, quando eu uso isso para obter informações:
$(this).css('marginBottom')
retorna o valor '10px'. Existe um truque apenas para obter o número de peça do valor, não importa se é px
ou %
ou em
ou qualquer outra coisa?
javascript
jquery
css
parsing
Tim Sheiner
fonte
fonte
/[^-\d\.]/g
parseInt
irá ignorar automaticamente as unidades.Por exemplo:
fonte
parseInt
considerar o caso em que você recebe um valor não inteiro - como na resposta de maximelebreton .Com o método de substituição, seu valor css é uma sequência e não um número.
Este método é mais limpo, simples e retorna um número:
fonte
%
,em
)Mesmo que marginBottom definido em em, o valor dentro de parseFloat acima será em px, pois é uma propriedade CSS calculada.
fonte
fonte
px
mas recebe,em
precisa converter.Eu uso um plugin jQuery simples para retornar o valor numérico de qualquer propriedade CSS única.
Aplica-se
parseFloat
ao valor retornado pelocss
método padrão do jQuery .Definição de Plugin:
Uso:
fonte
Vamos supor que você tenha uma propriedade na margem inferior definida como 20px / 20% / 20em. Para obter o valor como um número, existem duas opções:
Opção 1:
A função parseInt () analisa uma sequência e retorna um número inteiro. Não altere os 10 encontrados na função acima (conhecida como "raiz"), a menos que você saiba o que está fazendo.
A saída de exemplo será: 20 (se a margem inferior estiver definida em px) para% e em será exibida o número relativo com base no tamanho atual do elemento pai / fonte.
Opção 2 (eu pessoalmente prefiro esta opção)
A saída de exemplo será: 20 (se a margem inferior estiver definida em px) para% e em será exibida o número relativo com base no tamanho atual do elemento pai / fonte.
A função parseFloat () analisa uma sequência e retorna um número de ponto flutuante.
A função parseFloat () determina se o primeiro caractere na cadeia especificada é um número. Se for, analisa a sequência até chegar ao final do número e retorna o número como um número, não como uma sequência.
A vantagem da opção 2 é que, se você retornar números decimais (por exemplo, 20.32322px), receberá o número retornado com os valores atrás do ponto decimal. Útil se você precisar retornar números específicos, por exemplo, se sua margem inferior estiver definida em ou %
fonte
parseint
truncará quaisquer valores decimais (por exemplo,1.5em
fornece1
).Tente uma
replace
função com regex, por exemplofonte
Id ir para:
fonte
margin
é negativo ou positivo!A maneira mais simples de obter a largura do elemento sem unidades é:
Fonte: https://api.jquery.com/width/#width2
fonte
Você pode implementar este plugin jQuery muito simples :
Definição de Plugin:
É resistente a
NaN
valores que podem ocorrer na versão antiga do IE (retornará0
)Uso:
Aproveitar! :)
fonte
var result; return isNaN(result = parseFloat(this.css(p))) ? 0 : result;
Para melhorar a resposta aceita, use o seguinte:
fonte
Se for apenas para "px", você também pode usar:
fonte
Deve remover as unidades enquanto preserva os decimais.
fonte
usar
que retornam uma matriz. o primeiro índice retorna o valor da margem inferior (exemplo 20 para 20 px ) e o segundo índice retorna a unidade da margem inferior (exemplo px para 20 px )
fonte