jQuery以px为单位计算padding-top为整数

前端之家收集整理的这篇文章主要介绍了jQuery以px为单位计算padding-top为整数前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我找到的唯一解决方案是($(this).innerHeight() – $(this).height())/ 2

但是/ 2不是正确的选项,因为用户可以拥有padding-top:0px和padding-bottom:20px.

有没有办法做出更准确的填充值?

我正在考虑css(‘padding-top’),然后解析它,只需要int部分,但是值可以是“em”,而不是“px”

然后为每个值类型创建switch语句?对于一个,对于另一个?

这一切都有点复杂,需要更多的代码空间

解决方法

jQuery的主要优点之一是它是可插拔的,所以如果您有一个不需要立即满足的图书馆,有一个庞大的外观插件搜索.如果没有人做任何你想要的事情,那么自己动手很容易.
我认为正确的方式去这里,如果你找不到你想要的插件,最后一个:自己编写.

但是,请确保您自己清楚插件的规格.如果元素没有用于填充的CSS设置,该怎么办?是否应该在此元素上返回样式,或计算样式?对于无效的css会发生什么(比如’padding-top:10 unitsThatDontExist;’或’padding-left:two;’)?

get you started – 这是使用你自己的插件可能看起来像你的代码

var topPadding = $('#anElement').padding('top');

为了做到这一点,只需编写一个这样的插件

$.fn.padding(direction) {
    // calculate the values you need,using a switch statement
    // or some other clever solution you figure out

    // this now contains a wrapped set with the element you apply the 
    // function on,and direction should be one of the four strings 'top',// 'right','left' or 'bottom'

    // That means you could probably do something like (pseudo code):
    var intPart = this.css('padding-' + direction).getIntegerPart();
    var unit = this.css('padding-' + direction).getUnit();

    switch (unit)
    {
        case 'px':
            return intPart;
        case 'em':
            return ConvertEmToPx(intPart)
        default:
            // Do whatever you feel good about as default action
            // Just make sure you return a value on each code path
    }
};

猜你在找的jQuery相关文章