我已经根据我网站上的人气统计数量实施了三星评级系统,但现在我的客户想要将这三颗星(默认蓝色)的颜色改为红色,蓝色和绿色,这表示受欢迎程度。 / p>
我使用CSS精灵实现了这个星级评分系统,其中我在一个精灵中包含了两个星形图像 - 金色和灰色,并使用一些逻辑显示这些。适用于一种颜色,但如何为每颗星实现三种颜色?
HTML
<div class="star-box">
<li>
<span class="stars"><?php echo $position;?></span>
</li>
</div>
PHP
if( !isset($_SESSION['ranking']) || $_SESSION['ranking']['points'] <= 1000 ) {
if( !isset($_SESSION['ranking']['points']) || $_SESSION['ranking']['points'] == '' ) {
$position = '0px';
$position = 0.00;
} else {
$position = ($_SESSION['ranking']['points'] * 0.14).'px';
$position = 0.75;
}
$str1 = 'class="active" ';
$str1 .= ' style="background-position:'.$position.' 9px;"';
}
if( $_SESSION['ranking']['points'] > 1000 && $_SESSION['ranking']['points'] <= 5000 ) {
if( !isset($_SESSION['ranking']['points']) || $_SESSION['ranking']['points'] == '' ) {
$position = '0px';
$position = 0.00;
} else {
$position = ($_SESSION['ranking']['points']*0.035).'px';
$position = 1.40;
}
}
的jQuery
$(function() {
$('span.stars').stars();
});
$.fn.stars = function() {
return $(this).each(function() {
// get the value
var val = parseFloat($(this).html());
// make sure that the value is in (0 - 5) range, multiply to get width
val = Math.round(val * 4) / 4;
var size = Math.max(0, (Math.min(5, val))) * 16;
// create stars holder
var $span = $('<span />').width(size);
// replace the numerical value with stars
$(this).html($span);
});
}
CSS
span.stars, span.stars span {
display: block;
background: url(../../images/stars.png) 0 -16px repeat-x;
width: 50px;
height: 20px;
text-indent: -9999px;
}
span.stars span {
background-position: 0 0;
}
SPRITE IMAGE:
答案 0 :(得分:0)
查看本教程中的淘宝文章,了解如何使用可应用于代码的星级评分系统http://learn.knockoutjs.com/#/?tutorial=custombindings
答案 1 :(得分:0)
您可以使用会话变量等直接使用php / css文件控制CSS。您可以根据逻辑设置星形颜色,精灵位置。
链接到您的CSS
<link rel='stylesheet' type='text/css' href='css/style.php' />
你的css / php文件
<?php
header("Content-type: text/css; charset: UTF-8");
$CSSposition = $position;
?>
span.stars span {
background-position: <?php echo $CSSposition ?>;
}
这是指向php / css文档教程click here
的链接