O jQuery possui as funções height () en width () que retornam a altura ou largura em pixels como número inteiro ...
Como posso obter um valor de preenchimento ou margem de um elemento em pixels e como inteiro usando jQuery?
Minha primeira ideia foi fazer o seguinte:
var padding = parseInt(jQuery("myId").css("padding-top"));
Mas se o preenchimento é fornecido no ems, por exemplo, como posso obter o valor em pixels?
Olhando para o plugin JSizes sugerido por Chris Pebble, percebi que minha própria versão era a correta :). O jQuery retorna sempre o valor em pixels; portanto, apenas a análise foi feita em número inteiro.
Agradecimentos a Chris Pebble e Ian Robinson
javascript
jquery
css
Malik Amurlayev
fonte
fonte
parseInt
. Citando MDN: " radix Um int entre 2 e 36 que representa o radical (a base nos sistemas de números matemáticos) da cadeia de caracteres acima mencionada. Especifique 10 para o sistema de números decimais. Sempre especifique este parâmetro para eliminar a confusão do leitor e garantir um comportamento previsível. Implementações diferentes produzem resultados diferentes quando um radical não é especificado, geralmente padronizando o valor para 10. " Veja: developer.mozilla.org/pt-BR/docs/Web/JavaScript/Reference/…Respostas:
Você deve poder usar CSS ( http://docs.jquery.com/CSS/css#name ). Pode ser necessário ser mais específico, como "padding-left" ou "margin-top".
Exemplo:
CSS
JS
O resultado é 10px.
Se você deseja obter o valor inteiro, pode fazer o seguinte:
fonte
JSizes
plug-in da outra resposta (que acabei usando) retorna um número inteiro quando o valor de retorno é passadoParseInt(...)
, apenas FYI.parseInt($('a').css('margin-top').replace('px', ''))
.css()
ainda retornará o valor com "px" no final?Compare a altura / largura externa e interna para obter a margem total e o preenchimento:
fonte
that.outerHeight(true) - that.outerHeight()
daria as margens verticais totais, porque outerHeight () incluiria preenchimentos e bordas, mas excluiria margens. Consulte api.jquery.com/outerWidth/ .A função parseInt possui um parâmetro "radix" que define o sistema numérico usado na conversão, portanto, a chamada
parseInt(jQuery('#something').css('margin-left'), 10);
retorna a margem esquerda como um número inteiro.É isso que o JSizes usa.
fonte
parseInt('auto', 10);
(auto
é válidomargin-left
).POR FAVOR, não carregue outra biblioteca apenas para fazer algo que já esteja disponível de forma nativa!
O jQuery's
.css()
converte% 'e em's em seu equivalente de pixel para começar eparseInt()
removerá'px'
o final da string retornada e o converterá em um número inteiro:http://jsfiddle.net/BXnXJ/
fonte
Veja como você pode obter as dimensões circundantes:
Preste atenção que cada variável,
paddingTopBottom
por exemplo, contém a soma das margens nos dois lados do elemento; ou seja,paddingTopBottom == paddingTop + paddingBottom
. Gostaria de saber se existe uma maneira de obtê-los separadamente. Claro, se eles são iguais, você pode dividir por 2 :)fonte
IE 7
. Veja: stackoverflow.com/questions/590602/…Esta função simples fará isso:
Uso:
fonte
auto
,inherit
e%
valoresNaN
depende do navegador. Até onde eu sei, o jQuery não normaliza.css()
ao contrário.width()
& #.height()
Parse int
retorna 0 para 0 px
fonte
Você pode simplesmente pegá-los como em qualquer atributo CSS :
Você pode configurá-los com um segundo atributo no método css:
EDIT: Se você precisar apenas do valor de pixel, use
parseInt(val, 10)
:fonte
ok apenas para responder à pergunta original:
você pode obter o preenchimento como um número inteiro utilizável como este:
Se você definiu outra medida como px, substitua "ems" por "px". parseInt interpreta o stringpart como um valor errado, portanto é importante substituí-lo por ... nothing.
fonte
Você também pode estender a estrutura do jquery com algo como:
Adicionando uma função aos objetos jquery, denominada margin (), que retorna uma coleção como a função offset.
fx.
fonte
Não use string.replace ("px", ""));
Use parseInt ou parseFloat!
fonte
Eu provavelmente uso o plugin jquery github.com/bramstein/jsizes para preenchimentos e margens de maneira muito confortável, Obrigado ...
fonte
Vergonhosamente adotado da Quickredfox .
atualizar
Alterado para,
parseInt(val, 10)
pois é mais rápido queparseFloat
.http://jsperf.com/number-vs-plus-vs-toint-vs-tofloat/20
fonte
Não para necro, mas eu fiz isso que pode determinar pixels com base em uma variedade de valores:
Dessa forma, levamos em conta o dimensionamento e a herança automática.
fonte
parseInt()
está errado, a largura ou a altura podem ser pontos flutuantes.