最近在学php,要整一个星级评分的效果的,找了很久,找到一个非常好的js实例。支持小数点一味显示,像百度啥的,都啥半分的。不爽!!要么就来3.8分,哈哈……
原理上,是采用js+css实现,先整一张图片,如图
,两颗星星,一颗亮,一颗暗,我们要做的就是用js和css控制图片显示的位置,从而达到评分的效果的。采用两层div,后一层全部用暗星拼接,顶层用亮星,并且控制其长度,从而达到小数点后一位支持的效果。这个要用到jquery,这个是个好玩意的,web开发者应该要学着用的,我也正在学的。
代码:
css:
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
Code.user_rate {font-size:14px; position:relative; padding:10px 0;}
.user_rate p {margin:0; padding:0; display:inline; height:20px; overflow:hidden; position:absolute; top:0; left:100px; margin-left:95px;}
.user_rate p span.s {font-size:20px; line-height:20px; float:left; font-weight:bold; color:#DD5400;}
.user_rate p span.g {font-size:18px; display:block; float:left; color:#DD5400;}
/*rating*/
.big_rate_bak {width:95px; height:20px; text-align:left; position:absolute; top:3px; left:95px; display:inline-block; background:url(images/two_stars2.jpg) left -21px repeat-x;}
.big_rate_bak b {display:inline-block; width:19px;float:left; height:20px; position:relative; z-index:1000; cursor:pointer; overflow:hidden;}
.big_rate_up {width:95px; height:20px; position:absolute; top:0; left:0; background:url(images/two_stars2.jpg) left top;}
js:
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
Code//页面加载初始化分数
$(function(){
get_rate(100);
})
//鼠标单击,在div上移动和脱离焦点的方法。
function get_rate(rate){
//获得分值
rate=rate.toString();
var s;//十位
var g;//个位
$("#g").show();
if (rate.length>=3){
s=10;
g=0;
$("#g").hide();
}else if(rate=="0"){
s=0;
g=0;
}else{
s=rate.substr(0,1);
g=rate.substr(1,1);
}
//显示分数
$("#s").text(s);
$("#g").text("."+ g);
//width:(parseInt(s)+parseInt(g)/10) * 9.5,height:20,其中width计算方法,前面括号里的可以不变,后边的乘数是你(图片的宽度*显示的星数/100),height,图片的高度的一半
$(".big_rate_up").animate({width:(parseInt(s)+parseInt(g)/10) * 9.5,height:20},1000);//用jquery实现渐进效果
$(".big_rate_bak b").each(function(){
//鼠标移动事件
$(this).mouseover(function(){
$(".big_rate_up").width($(this).attr("rate") * 9.5 );
$("#s").text($(this).attr("rate"));
$("#g").text("");
}).click(function(){
$("#f").text($(this).attr("rate"));
$("#my_rate").show();
})
})
//div失去焦点事件
$(".big_rate_bak").mouseout(function(){
$("#s").text(s);
$("#g").text("."+ g);
$(".big_rate_up").width((parseInt(s)+parseInt(g)/10) * 9.5);
})
}
//执行方法
function up_rate(rate){
$(".big_rate_up").width("0");
get_rate(rate);
}
前台html:
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
Code<div class="user_rate">
<div class="big_rate_bak">
<b rate="2" onclick="javascript:up_rate(20);"> </b>
<b rate="4" onclick="javascript:up_rate(40);"> </b>
<b rate="6" onclick="javascript:up_rate(60);"> </b>
<b rate="8" onclick="javascript:up_rate(80);"> </b>
<b rate="10" onclick="javascript:up_rate(100);"> </b>
<div class="big_rate_up"></div>
</div>
<p><span id="s" class="s"></span><span id="g" class="g"></span></p>
</div>
最终实现效果:
,漂亮吧!