jQuery如何获取元素的边距和填充?

Tom*_*Tom 96 jquery margin padding

只是想知道 - 如何使用jQuery - 我可以得到一个元素格式化总填充和边距等?即30px 30px 30px 30px或30px 5px 15px 30px等

我试过了

var margT = jQuery('img').css('margin');
var bordT = jQuery('img').css('border');
var paddT = jQuery('img').css('padding');
Run Code Online (Sandbox Code Playgroud)

但这不起作用?http://jsfiddle.net/q7Mra/

Dan*_*ort 188

var bordT = $('img').outerWidth() - $('img').innerWidth();
var paddT = $('img').innerWidth() - $('img').width();
var margT = $('img').outerWidth(true) - $('img').outerWidth();

var formattedBord = bordT + 'px';
var formattedPadd = paddT + 'px';
var formattedMarg = margT + 'px';
Run Code Online (Sandbox Code Playgroud)

查看jQuery API文档以获取有关每个文档的信息:

这是编辑后的jsFiddle显示结果.

您可以对高度执行相同类型的操作以获取其边距,边框和填充.

  • 这非常有用; 如果左边距和右边距/填充值不同,你想要做什么,例如,只需要左边距或填充值? (4认同)
  • 您需要更新您的问题,以便明确说明.否则我们会浪费时间为你不想解决的问题编写解决方案:).在您的问题中准确解释您想要的返回值.你要的元件的_total_边距和填充,而不是个别边距值(其可以是用于`余量-left`和`余量-right`不同,并且可以是`em`或`px`. (2认同)
  • 它是,但这是我对你的问题的编辑,而不是你原来的问题:) (2认同)

Eli*_*ria 98

根据jQuery文档,不支持速记CSS属性.

根据"总填充"的含义,您可以执行以下操作:

var $img = $('img');
var paddT = $img.css('padding-top') + ' ' + $img.css('padding-right') + ' ' + $img.css('padding-bottom') + ' ' + $img.css('padding-left');
Run Code Online (Sandbox Code Playgroud)

  • 不要这样拉出来.如果一个是'auto`或'2%`或`inherit`怎么办? (24认同)
  • [更新](http://api.jquery.com/css/):从jQuery 1.9开始,将样式属性数组传递给.css()将导致属性 - 值对的对象.例如,要检索所有四个渲染的边框宽度值,可以使用`$(elem).css(["borderTopWidth","borderRightWidth","borderBottomWidth","borderLeftWidth"]). (4认同)
  • 你是对的非数字值.我认为Dan Short的答案更加强大. (3认同)

Rav*_*rsT 16

jQuery.css()返回大小(以像素为单位),即使CSS本身在em中指定它们,或者以百分比形式指定,或者等等.它附加单位('px'),但你仍然可以使用parseInt()它们将它们转换为整数(或者parseFloat(),对于像素分数有意义的地方).

http://jsfiddle.net/BXnXJ/

    $(document).ready(function () {
    var $h1 = $('h1');
    console.log($h1);
    $h1.after($('<div>Padding-top: ' + parseInt($h1.css('padding-top')) + '</div>'));
    $h1.after($('<div>Margin-top: ' + parseInt($h1.css('margin-top')) + '</div>'));
});
Run Code Online (Sandbox Code Playgroud)