使用jQuery获得CSS位置百分比

我正在尝试使用jQuery获取元素的CSS(顶部和左侧):

$(element).css('top'); 

但不是像它应该的“12%”,我得到了像素。
我如何获得百分比?

HTML:

    .parWrapper { position:absolute; top: 40% }    
Wrap1
Wrap2
Wrap3
Wrap4
Wrap5

你可以这样做:

 $(element).position().top / $(element).parent().height() * 100 

关于你的先例评论,如果你想使用css(’top’),不要忘记解析它。

我自己也遇到过这种情况,并认为它很奇怪。

代替:

  $(element).css('top'); 

我已经做了:

  element.style.top 

没有jQuery,并为您提供了它所用类型的实际值(百分比,ems等)

这也是一个选择:

 $(element)[0].style.top 

有一种(非常简单)的方法来做到这一点!
即使使用样式表。
关键是要防止jquery通过暂时隐藏父级来计算值。

 $(element).parent().hide(); var top = $(element).css("top"); $(element).parent().show(); console.log(top); 

瞧!

如果您只想使用不使用“%”的数字

 top = parseFloat(top); 

顺便说一句:别担心,隐藏和重新显示是如此之快,它对您的用户来说是不可见的。

由你自己计算:

 ($(element).css('top') / parentHeight) * 100; 

我需要计算类似的东西,但在我的情况下,它是左边的%,你可以更新下面的代码,如果你想要垂直百分比值,使用窗口高度 –

 getLeftPercent = function() { var leftStr = $('#my-obj').css('left'), pxPos = leftStr.indexOf('px'), leftVal = leftStr.substr(0, pxPos), leftPercent = (leftVal / $(window).width() * 100).toString(), dotPos = leftPercent.indexOf('.'), leftPercentStr = dotPos == -1 ? leftPercent + '%' : leftPercent.substr(0, dotPos) + '%'; return leftPercentStr; };