这是一个之前被问过的问题,但我希望我们能够解决它:我正在使用jQuery 1.4。如果我定义样式
#obj { margin: 0 auto; }
然后执行
$('#obj').css('marginLeft');
结果是以像素为计算单位的值。有没有办法在不解析document.styleSheets
的情况下,判断这些像素是否来自于auto
计算?
这是一个之前被问过的问题,但我希望我们能够解决它:我正在使用jQuery 1.4。如果我定义样式
#obj { margin: 0 auto; }
然后执行
$('#obj').css('marginLeft');
结果是以像素为计算单位的值。有没有办法在不解析document.styleSheets
的情况下,判断这些像素是否来自于auto
计算?
如果边距设置为百分比,也会触发此解决方案,但对于您的目的而言可能已经足够了。基本上,您需要记录在调整大小时更改的哪些边距。因此,您需要将调整大小之前的边距记录到一个数组中:
var aMargins = [];
$('.yourObjs').each(function(i,obj){
var objML = $(obj).css('marginLeft');
aMargins.push(objML);
});
var wW = $(window).width();
var wH = $(window).height();
window.resizeTo(wW - 5, wH);
$('.yourObjs').each(function(i,obj){
if ($(obj).css('marginLeft') != aMargins[i]) {
// your centering code here
}
}
window.resizeTo(wW,wH);
你无法从元素本身获取auto
,因为样式是层叠的,如果你有这个怎么办?
#obj { margin: 0 auto; }
div #obj { margin: 0 10px; }
这取决于页面以及它的级联方式,基本概念是你正在获取该元素上的计算样式属性,样式表中的内容并不重要,可能有20个样式表等。
基本上可以归结为:获取auto
与000px
是一个非常罕见的请求,并且需要大量额外的代码来解决,因此很容易判断“不,这不属于核心”。但是,有插件可以进行CSS解析。
简短回答:jQuery核心不能(没有代码)做到这一点,使用插件的jQuery或者通用JavaScript可以实现。
#obj
上是否激活了“auto”样式? - Trevor Burnham
auto
修改了margin-left
属性吗?还是你的意思是要检查原始样式表属性是否设置为auto
? - user113716