Apenas me perguntando - como usar jQuery - posso obter elementos formatados com preenchimento total e margem, etc? ou seja, 30px 30px 30px ou 30px 5px 15px 30px etc.
eu tentei
var margT = jQuery('img').css('margin');
var bordT = jQuery('img').css('border');
var paddT = jQuery('img').css('padding');
Mas isso não funciona? http://jsfiddle.net/q7Mra/
Respostas:
De acordo com a documentação do jQuery , propriedades CSS abreviadas não são suportadas.
Dependendo do que você entende por "preenchimento total", pode ser capaz de fazer algo assim:
fonte
auto
ou2%
ouinherit
?$( elem ).css([ "borderTopWidth", "borderRightWidth", "borderBottomWidth", "borderLeftWidth" ]).
Verifique os documentos da API jQuery para obter informações sobre cada um:
Aqui está o jsFiddle editado mostrando o resultado.
Você pode realizar o mesmo tipo de operações para a Altura para obter sua margem, borda e preenchimento.
fonte
margin-left
emargin-right
, e podem serem
oupx
.height
nãowidth
?jQuery.css()
retorna tamanhos em pixels, mesmo que o próprio CSS os especifique em em, ou como uma porcentagem, ou o que for. Ele anexa as unidades ('px'), mas você pode usarparseInt()
para convertê-las em inteiros (ouparseFloat()
, para onde as frações de pixels fizerem sentido).http://jsfiddle.net/BXnXJ/
fonte
Isso funciona para mim:
Exemplo de resultado:
Para fazer um total:
fonte
Fronteira
Eu acredito que você pode obter a largura da borda usando
.css('border-left-width')
. Você também pode buscar superior, direita e inferior e compará-los para encontrar o valor máximo. A chave aqui é que você precisa especificar um lado específico.Preenchimento
Veja jQuery calcular padding-top como inteiro em px
Margem
Use a mesma lógica de borda ou preenchimento.
Como alternativa, você pode usar outerWidth . O pseudo-código deve ser
margin = (outerWidth(true) - outerWidth(false)) / 2
. Observe que isso só funciona para encontrar a margem horizontalmente. Para encontrar a margem verticalmente, você precisaria usar outerHeight .fonte
Eu tenho um trecho que mostra como obter os espaçamentos dos elementos com jQuery:
fonte
Se o elemento que você está analisando não tiver nenhuma margem, borda ou qualquer outra definição, você não poderá devolvê-lo. No topo, você poderá obter 'auto', que normalmente é o padrão.
Pelo seu exemplo, posso ver que você tem
margT
como variável. Não tenho certeza se está tentando obter margem superior. Se for esse o caso, você deve usar.css('margin-top')
.Você também está tentando obter a estilização de 'img' que resultará (se você tiver mais de um) em uma matriz.
O que você deve fazer é usar o
.each()
método jquery.Por exemplo:
fonte
Retorna:
Obter valor:
Editar:
use o plugin jquery: jquery.sizes.js
fonte