自动生成星级评分?

时间:2011-05-04 22:59:29

标签: php jquery html

我正在尝试找到一些方法将数字1 - 5转换为星级,这也可以容纳小数,如4.3或3.34,并且非常精确(如在Amazon.com上)。评级不必是可用的,它只需要是静态图像。有什么帮助吗?

我可以使用PHP或jQuery,无论它需要什么。

5 个答案:

答案 0 :(得分:5)

您可以使用透明星形切口创建一个白色的图像。然后将它放在给定长度的黄色div的顶部。让我们说你的图像是100px宽。如果你有一个3星评级你会使黄色div 100 *(3/5)和3个星星将被填写。

编辑: 一个类似的想法。你可以拥有一张包含全部5颗星的图像。将此图像放在具有overflow:hidden的div中。然后以与上面相同的方式设置div的宽度。 div越小,你看到的星星越少。

EDIT2: 小提琴只是为了好玩。您可以要求的所有粒度。 http://jsfiddle.net/qFMyC/

答案 1 :(得分:3)

这一定足以满足您的目的:

http://www.fyneworks.com/jquery/star-rating/#tab-Testing

答案 2 :(得分:2)

我之前写过这个年龄。我很痴迷于不使用JS。它需要一些工作,但我认为这正是你正在寻找的。

http://yefomit.com/internet/simple_css_rater

答案 3 :(得分:0)

我希望你的意思是将1 -5值转换为实际的星形表示。

这取决于你想要的粒度,我认为亚马逊的精确到十分之一(0.1),这可能是服务器端节省客户端负载并利用缓存图像;但它可以在客户端完成。

@kingjiv发布了一个很好的客户端解决方案,但对于服务器端:

如果您不太担心粒度,可以创建11个图像0,0.5,1,1.5等,并将值传递给图像src属性。这将提供正确的图像,并且它们可以很好地缓存,以便在您的页面上反复使用。

如果你想在代码服务器端创建它们,那么你想要真正细化它们,每次准备好在创建之后将它们缓存,以便以后快速服务。使用这种方法,您可以达到您想象的任何精度。

对于PHP我建议看看Imagik

答案 4 :(得分:0)

我过去所做的就是创建2个div并将它们放在一起。

在底部div上,您将宽度设置为等于5星的宽度。因此,如果您的星形宽度为50px,则底部div为250px宽。

在顶部div上,您使用具有不同颜色的相同星形。然后你将php或javascript中div的宽度设置为50 * $ decimalStarRating。