js+css实现星级评分(支持小数点后一味)

       最近在学php,要整一个星级评分的效果的,找了很久,找到一个非常好的js实例。支持小数点一味显示,像百度啥的,都啥半分的。不爽!!要么就来3.8分,哈哈……

       原理上,是采用js+css实现,先整一张图片,如图two_stars2,两颗星星,一颗亮,一颗暗,我们要做的就是用js和css控制图片显示的位置,从而达到评分的效果的。采用两层div,后一层全部用暗星拼接,顶层用亮星,并且控制其长度,从而达到小数点后一位支持的效果。这个要用到jquery,这个是个好玩意的,web开发者应该要学着用的,我也正在学的。

代码:

css:

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:

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:

Code<div class="user_rate">
    <div class="big_rate_bak">
        <b rate="2" οnclick="javascript:up_rate(20);"> </b>
        <b rate="4" οnclick="javascript:up_rate(40);"> </b>
        <b rate="6" οnclick="javascript:up_rate(60);"> </b>
        <b rate="8" οnclick="javascript:up_rate(80);"> </b>
        <b rate="10" οnclick="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>

最终实现效果:

image,漂亮吧!

转载于:https://www.cnblogs.com/bigfu2012/archive/2012/05/11/2496763.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值