欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

JS實(shí)現(xiàn)星星評(píng)分功能實(shí)例代碼(兩種方法)

 更新時(shí)間:2016年06月09日 10:30:36   作者:starof  
這篇文章主要介紹了JS實(shí)現(xiàn)星星評(píng)分功能實(shí)例代碼(兩種方法)的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下

一、方法1

1、用到圖片

2、結(jié)構(gòu)和樣式

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>Document</title>
 <style>
 ul {
  padding-left: 0;
  overflow: hidden;
 }
 ul li {
  float: left;
  list-style: none;
  width: 27px;
  height: 27px;
  background: url(img/star.gif)
 }
 ul li a {
  display: block;
  width: 100%;
  padding-top: 27px;
  overflow: hidden;
 }
 ul li.light {
  background-position: 0 -29px;
 }
 </style>
</head>
<body>
 <ul>
  <li class="light"><a href="javascript:;">1</a></li>
  <li><a href="javascript:;">2</a></li>
  <li><a href="javascript:;">3</a></li>
  <li><a href="javascript:;">4</a></li>
  <li><a href="javascript:;">5</a></li>
 </ul>
</body>
</html>

li加了light的class就會(huì)變成亮星,就是換了背景位置,把空心的星星變成了實(shí)心的。所以js實(shí)現(xiàn)的時(shí)候點(diǎn)亮就是給li加一個(gè)light的類名。

效果:

3、交互js

<script>
var num=finalnum = tempnum= 0;
var lis = document.getElementsByTagName("li");
//num:傳入點(diǎn)亮星星的個(gè)數(shù)
//finalnum:最終點(diǎn)亮星星的個(gè)數(shù)
//tempnum:一個(gè)中間值
function fnShow(num) {
 finalnum= num || tempnum;//如果傳入的num為0,則finalnum取tempnum的值
 for (var i = 0; i < lis.length; i++) {
  lis[i].className = i < finalnum? "light" : "";//點(diǎn)亮星星就是加class為light的樣式
 }
}
for (var i = 1; i <= lis.length; i++) {
 lis[i - 1].index = i;
 lis[i - 1].onmouseover = function() { //鼠標(biāo)經(jīng)過(guò)點(diǎn)亮星星。
  fnShow(this.index);//傳入的值為正,就是finalnum
 }
 lis[i - 1].onmouseout = function() { //鼠標(biāo)離開(kāi)時(shí)星星變暗
  fnShow(0);//傳入值為0,finalnum為tempnum,初始為0
 }
 lis[i - 1].onclick = function() { //鼠標(biāo)點(diǎn)擊,同時(shí)會(huì)調(diào)用onmouseout,改變tempnum值點(diǎn)亮星星
  tempnum= this.index;
 }
}
</script>

這樣設(shè)計(jì)的一個(gè)關(guān)鍵點(diǎn)在于,mouout時(shí)保存一個(gè)值用于讓星星變暗,初始為0(0顆星變亮就是全暗),不點(diǎn)擊的話只要鼠標(biāo)離開(kāi)所有星星都是暗的,click事件會(huì)觸發(fā)一次mouseover和一次mouseout,所以點(diǎn)擊時(shí)改變tempnum確定鼠標(biāo)離開(kāi)時(shí)幾顆星亮,這個(gè)值會(huì)一直保持,直到下次點(diǎn)擊時(shí)改變它。

最終效果:

二、方法2

1、用到圖片

2、效果如下

3、完整代碼如下

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>demo of starof</title>
 <style>
 ul{padding:0;margin: 0;}
 li{list-style: none;}
 /*星星評(píng)分*/
 .scoremark{width:154px;position:relative;margin-top:50px;}
 .scoremark .score {
  float: right;
  display: block;
  margin: 0 0 0 10px;
  font-size: 18px;
  line-height: 22px;
  font-weight: bold;
  color: #f70;
 }
 .scoremark .star {
  float: right;
  display: block;
  position: relative;
  width: 116px;
  height: 20px;
  background: url(img/star.png) no-repeat 0px -20px;
 }
 .scoremark .ystar {
  position: absolute;
  top: 0;
  left: 0;
  width: 116px;
  height: 20px;
  background: url(img/star.png) no-repeat 0px 0px;
 }
 .scoremark .star ul {
  width: 120px;
  height: 20px;
  position: absolute;
  top: 0;
  left: 0;
 }
 .scoremark .star ul:hover {
  background: url(img/star.png) no-repeat 0px -20px;
 }
 .scoremark .star li {
  float: left;
  width: 24px;
  height: 20px;
 }
 .scoremark .star li a {
  display: block;
  width: 24px;
  height: 20px;
  overflow: hidden;
  text-indent: -9999px;
  position: absolute;
  z-index: 5;
 }
 .scoremark .star li a:hover {
  background: url(img/star.png) no-repeat 0px 0px;
  z-index: 3;
  left: 0
 }
 .scoremark .star a.one-star {
  left: 0;
 }
 .scoremark .star a.one-star:hover {
  width: 24px
 }
 .scoremark .star a.two-stars {
  left: 24px;
 }
 .scoremark .star a.two-stars:hover {
  width: 48px
 }
 .scoremark .star a.three-stars {
  left: 48px;
 }
 .scoremark .star a.three-stars:hover {
  width: 72px
 }
 .scoremark .star a.four-stars {
  left: 72px;
 }
 .scoremark .star a.four-stars:hover {
  width: 96px
 }
 .scoremark .star a.five-stars {
  left: 96px;
 }
 .scoremark .star a.five-stars:hover {
  width: 120px;
 }
 .scoremark .tips {
  position: absolute;
  top: -28px;
  left: 0;
  width: 40px;
  height: 21px;
  color: #333;
  line-height: 20px;
  padding: 0 0 5px 0;
  text-align: center;
  background: url(img/ico.png) no-repeat;
  z-index: 6;
  font-size: 12px;
 }
 </style>
 <script src="http://code.jquery.com/jquery-2.2.4.min.js" integrity="sha256-BbhdlvQf/xTY9gja0Dq3HiwQF8LaCRTXxZKRutelT44=" crossorigin="anonymous"></script>
</head>
<body>
 <div id="scoremark" class="scoremark scores">
      <em class="score">8.0</em>
      <span class="star">
       <span class="ystar" style="width:80%"></span>
       <ul>
        <li><a href="javascript:void(0)" data-name="很差" class="one-star">1</a></li>
        <li><a href="javascript:void(0)" data-name="較差" class="two-stars">2</a></li>
        <li><a href="javascript:void(0)" data-name="一般" class="three-stars">3</a></li>
        <li><a href="javascript:void(0)" data-name="較好" class="four-stars">4</a></li>
        <li><a href="javascript:void(0)" data-name="很好" class="five-stars">5</a></li>
       </ul>
      </span>
      <div style="left: 0px; display: none;" class="tips"></div>
   </div>
<script>
//星星評(píng)分
starScore($(".scoremark"));
function starScore(star){
 star.find(".star ul li a").mouseenter(function(){
  var txt = $(this).attr("data-name");
  var x = $(this).parent("li").index();
  star.find(".tips").html(txt).css("left",-6+x*24).show();
 });
 star.find(".star ul li a").mouseleave(function(){
  star.find(".tips").html("").css("left",0).hide();
 }); 
}
</script>
</body>
</html>

4、原理

4.1html結(jié)構(gòu)

<div id="scoremark" class="scoremark scores">
      <em class="score">8.0</em>
      <span class="star">
       <span class="ystar" style="width:80%"></span>
       <ul>
        <li><a href="javascript:void(0)" data-name="很差" class="one-star">1</a></li>
        <li><a href="javascript:void(0)" data-name="較差" class="two-stars">2</a></li>
        <li><a href="javascript:void(0)" data-name="一般" class="three-stars">3</a></li>
        <li><a href="javascript:void(0)" data-name="較好" class="four-stars">4</a></li>
        <li><a href="javascript:void(0)" data-name="很好" class="five-stars">5</a></li>
       </ul>
      </span>
      <div style="left: 0px; display: none;" class="tips"></div>
   </div>

簡(jiǎn)單描述下原理:主要是多層背景的覆蓋關(guān)系

首先是結(jié)構(gòu):.star下面包含了兩層,一層是ystar,一層是ul。

4.1、實(shí)現(xiàn)4個(gè)星星的評(píng)分效果

外層.star定寬,背景圖為空心灰色的星星。

里面.ystar代表點(diǎn)亮的星星,它的背景是實(shí)心的黃色星星,如果有4顆亮星,就設(shè)置.ystar的寬度為80%。2顆為40%。

4.2、實(shí)現(xiàn)鼠標(biāo)hover上去星星點(diǎn)亮的效果

主要是通過(guò)css控制。關(guān)鍵是通過(guò):hover實(shí)現(xiàn)的。

ul:hover時(shí)加上了空心灰色的星星背景圖。

a:hover時(shí),寬度變成前幾個(gè)星星的寬度。

這樣在hover時(shí),其實(shí)有4層背景,比如第二個(gè)星星hover時(shí),從下到上依次是

.star 暗星100%寬度.ystar 亮星 80寬度ul 暗星100%寬度.two-stars 40%寬度

4.3、鼠標(biāo)hover顯示tip

通過(guò)js獲取a的data-name實(shí)現(xiàn)。

以上所述是小編給大家介紹的JS實(shí)現(xiàn)星星評(píng)分功能實(shí)例代碼(兩種方法)的詳細(xì)內(nèi)容,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)歡迎給我留言,小編會(huì)及時(shí)回復(fù)大家的,在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!

相關(guān)文章

最新評(píng)論