使用jQuery获得CSS位置百分比

时间:2011-03-08 09:13:05

标签: jquery css

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

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

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

HTML:

<head>
<script type="text/javascript" src="http://code.jquery.com/jquery-1.4.1.min.js"></script>
<style type="text/css">
.parWrapper {
    position:absolute;
    top: 40%
}
</style>
</head>
<body>
<div> 
    <div id="crap" class="parWrapper" style="left:50%">
    Wrap1   
    </div>

    <div class="parWrapper">
    Wrap2
    </div>

    <div class="parWrapper">
    Wrap3   
    </div>

    <div class="parWrapper">
    Wrap4   
    </div>

    <div class="parWrapper">
    Wrap5   
    </div>

</div>

</body>

7 个答案:

答案 0 :(得分:15)

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

而不是:

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

我刚刚做了:

 element.style.top

没有jQuery并且为你提供了你所做类型的实际价值(百分比,ems等)

答案 1 :(得分:14)

你可以这样做:

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

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

答案 2 :(得分:10)

这也是一个选择:

$(element)[0].style.top

答案 3 :(得分:3)

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

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

瞧!

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

top = parseFloat(top);
顺便说一句:不用担心,隐藏和重新显示的速度非常快,对用户来说是不可见的。

答案 4 :(得分:1)

由您自己计算:

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

答案 5 :(得分:1)

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

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

答案 6 :(得分:0)

您可以尝试一下。您可以更改“ element”和“ parent”以与您的项目兼容。

var parent_height = $(element).parent().height(); // Height of parent. If you do something related to "width", get parent's width.

var top_val_px   = $(element).css('top');
var top_val_only = top_val_px.slice(0,-2); // Remove "px" part
var top_Percentage = (top_val_only/parent_height) * 100; // Percentage will be a close value.

我使用了类似的代码,并且有效。

相关问题