Fyneworks jQuery星级评级插件 - 半评级

时间:2015-02-11 14:47:37

标签: javascript jquery css

我正在尝试为文章实施星级评分系统,并找到了this漂亮的插件。我已经用我自己的明星交换了默认的star.gif。如果我使用全星评级,一切正常。一旦我尝试使用分离星函数,星星就不再正确显示了。

星星本身的宽度为32px。

stars

半星应位于满星的右侧顶部。

以下if子句似乎负责计算位置:

// Prepare division control
if(typeof control.split=='number' && control.split>0){
    var stw = ($.fn.width ? star.width() : 0) || control.starWidth;
    var spi = (control.count % control.split), spw = Math.floor(stw/control.split);
    star
    // restrict star's width and hide overflow (already in CSS)
    .width(spw)
    // move the star left by using a negative margin
    // this is work-around to IE's stupid box model (position:relative doesn't work)
    .find('a').css({ 'margin-left':'-'+ (spi*spw) +'px' })
};

它嵌入在“for-each star”循环中。我用firebug调试了这个,计算似乎是正确的。每个第二颗星的左边距应为-16px。 出于某种原因,这不会在网站上显示。

有谁知道我做错了什么?我必须提到我对JS没有多少经验。

这是css:

div.rating-cancel, div.star-rating {
    background: none repeat scroll 0 0 transparent;
    cursor: pointer;
    display: block;
    float: left;
    height: 32px;
    overflow: hidden;
    text-indent: -999em;
    width: 17px;
}

div.rating-cancel, div.rating-cancel a {
    background: url("delete.gif") no-repeat scroll 0 -16px rgba(0, 0, 0, 0);
}

div.star-rating, div.star-rating a {
    background: url("star.gif") no-repeat scroll 0 0 rgba(0, 0, 0, 0);
}

div.rating-cancel a, div.star-rating a {
    background-position: 0 0;
    border: 0 none;
    display: block;
    height: 100%;
    width: 32px;
}

div.star-rating-on a {
    background-position: 0 -32px !important;
}

div.star-rating-hover a {
    background-position: 0 -64px;
}

div.star-rating-readonly a {
    cursor: default !important;
}

div.star-rating {
    background: none repeat scroll 0 0 transparent !important;
    overflow: hidden !important;
}

1 个答案:

答案 0 :(得分:0)

我真的不知道这里出了什么问题。首先,必须调整此设置中的宽度。然后人们可能想要摆脱浮动选项并在显示器上使用内联块。这样,以下组件将在新行中绘制。

div.rating-cancel, div.star-rating {
    background: none repeat scroll 0 0 transparent;
    cursor: pointer;
    display: inline-block;
    height: 32px;
    overflow: hidden;
    text-indent: -999em;
    width: 32px;
}

如果我用firebug改变了这个值,事情就没发生了。我用原始文件替换了css然后再添加了我需要的更改并且瞧,现在一切都很好。