使用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; };