CSS,星级评价先来个截图:
效果很简单,可能现在您现在脑子里已经有实现的思路了。下面先看一下我们通常情况下的实现方法: CSS: 代码
.jsstar { list-style: none; margin: 0px; padding: 0px; width: 100px; height: 20px; position: relative; } .jsstar li { padding:0px; margin: 0px; float: left; width:20px; height:20px; background:url(star_rating.gif) 0 0 no-repeat; }
HTML:
<p>Javascript + CSS实现</p> <ul class="jsstar"> <li title="一星"></li> <li title="二星"></li> <li title="三星"></li> <li title="四星"></li> <li title="五星"></li> </ul>
JS:(我用的是jquery)
<script type="text/javascript" src="http://img.jb51.net/jslib/jquery/jquery.js"></script> <script type="text/javascript"> $(document).ready(function(){ $(".jsstar >li").hover( function(){$(this).css({"background-position":"left bottom"}).prev().trigger("mouseover")}, function(){$(this).css({"background-position":"left top"}).prev().trigger("mouseout")}) .click(function(){alert($(this).attr("title"))}); }); </script>
这里是效果图:
是不是和上面的没什么区别,可是又一想如果用户禁掉了javascript岂不是效果很惨? 于是我们想到了用纯CSS实现,下面是代码: CSS: 代码
/*CSS Star start*/ .star-rating { list-style: none; margin: 0px; padding: 0px; width: 100px; height: 20px; position: relative; background: url(star_rating.gif) top left repeat-x; } .star-rating li { padding: 0px; margin: 0px; float: left; } .star-rating li a { display: block; width: 20px; height: 20px; text-decoration: none; text-indent: -9000px; z-index: 20; position: absolute; padding: 0px; } .star-rating li a:hover { background: url(star_rating.gif) left bottom; z-index: 1; left: 0px; } .star-rating a.one-star { left: 0px; } .star-rating a.one-star:hover { width: 20px; } .star-rating a.two-stars { left: 20px; } .star-rating a.two-stars:hover { width: 40px; } .star-rating a.three-stars:hover { width: 60px; } .star-rating a.three-stars { left: 40px; } .star-rating a.four-stars { left: 60px; } .star-rating a.four-stars:hover { width: 80px; } .star-rating a.five-stars { left: 80px; } .star-rating a.five-stars:hover { width: 100px; }
HTML:
<ul class='star-rating'> <li><a href='#' title='一星' class='one-star'>1</a></li> <li><a href='#' title='二星' class='two-stars'>2</a></li> <li><a href='#' title='三星' class='three-stars'>3</a></li> <li><a href='#' title='四星' class='four-stars'>4</a></li> <li><a href='#' title='五星' class='five-stars'>5</a></li> </ul>
看看上面CSS的行号您是不是吓了一跳,这么简单的效果竟然用了这么多代码?在我看来不用JS就只能一个效果一个样式了,如果您还有更简单更炫的效果请指教! 代码打包下载 CSS,星级评价
|