<style>
.info{
width:94%;
}
</style>
现在使用JQuery
这样做$('.info').css('width');
返回 94px 而非pixles中的等效值(在我的情况下 500px 。)
如果我将css中的宽度设置为 105%,则JQuery会将其返回为 105px 。
父容器的高度和宽度分别为600px和500px。
答案 0 :(得分:13)
我认为可能的原因是,在您尝试获取尺寸时,元素的容器会被隐藏。
我对嵌套的div和表有类似的情况。
请参阅以下小提琴,我设法重现行为:
我仍然认为,当无法实际计算元素的维度时,jQuery会将百分比作为整数返回(没有%
符号)。
更改#another-cell
的宽度(以%表示),并在隐藏表时看到它返回相同的值而不带%
符号。
答案 1 :(得分:0)
实际上,它似乎并非如此:see this fiddle。
HTML:
<div id="info"></div>
的CSS:
html, body {
position: relative;
width: 500px;
}
#info {
width: 94%;
}
JS:
$( function() {
document.write( $('#info').css('width') );
});
相对于信息宽度是多少?是宽度为100px的元素吗?
答案 2 :(得分:0)
它返回的宽度取决于它所写入的HTML的哪个部分。意思是说,如果它写在tag中,那么94%的百分比将反映该特定div的94%。
但是,如果同一标签中的另一个标签已经使用了一定数量的定义宽度,那么如果在信息标签之前定义的标签,信息甚至可能会获得更小的空间。
请放弃更多实际代码以获得更好的答案
答案 3 :(得分:0)
解释此行为的唯一方法是您有多个具有类info
的元素
当发生这种情况并且您执行$('.info').css('width');
时,jQuery将返回集合中第一个元素的width
。
如果是这种情况,您可能需要更具体地使用选择器。
答案 4 :(得分:-1)
使用.css()
时,每个broswer将以文本方式返回不同但逻辑上相等的值,例如#FFF,#fffff和rgb(255,255,255)而不是使用.css('width')
使用.width()
根据jQuery:http://api.jquery.com/width/
.css(width)和.width()之间的区别在于后者 在前者返回无单位像素值(例如,400) 返回单位完整的值(例如,400px)。宽度() 当需要在a中使用元素的宽度时,建议使用方法 数学计算。