JSFiddle - React, Tailwind, and code Playground

HTML

<form class="stars-rating"  method="post" target="invisible-iframe-or-something-AJAX-like">
   <p>
       <b>Текущий рейтинг: </b>
       <span class="rating">3</span>
       * (из
       <span class="fallback">
           <span>*</span>
           <span>*</span>
           <span>*</span>
           <span>*</span>
           <span>*</span>
       </span>)
   </p>
   <p>
       Ваша оценка:
       <input type="submit" name="rate" value="1*" title="*">    
       <input type="submit" name="rate" value="2*" title="**">
       <input type="submit" name="rate" value="3*" title="***">
       <input type="submit" name="rate" value="4*" title="****">
       <input type="submit" name="rate" value="5*" title="*****">
   </p>
</form>

CSS

.stars-rating b, .stars-rating .rating, .stars-rating  input {
    height: 17px;
    background:  url(http://sticker-book.com/images/star-rating-sprite.png) repeat-x;
}

.stars-rating {
    height: 17px;
    width: 80px;
    position: relative;
}

.stars-rating * {
    position: absolute;
    top: 0;
    left: 0;
    text-indent: -32000px;
}

.stars-rating b, .stars-rating p {
    width: 80px;
}

.stars-rating b {
    background-position: 0 -17px;
}

.stars-rating .rating {
    width: 48px;
    background-position: 0 2px;
}

.stars-rating:hover .rating {
    background-position: 0 -17px;
}

.stars-rating input {
    border: 0  none;
    background-position: 0 100px;
    width: 16px;
    z-index: 5;
    cursor: pointer;
    font-size: 0;
    color: #fff;
}

.stars-rating  input+input {
    width: 32px;
    z-index: 4;
}

.stars-rating input+input+input {
    width: 48px;
    z-index: 3;
}

.stars-rating input+input+input+input {
    width: 64px;
    z-index: 2;
}

.stars-rating  input+input+input+input+input {
    width: 80px;
    z-index: 1;
}

.stars-rating  input:hover {
    background-position: 0 -35px; 
}

/* при отключенной графике покажем просто текстовые значения  */
.stars-rating .fallback {
    z-index: -1;
    width: 80px;
    background: none;
}

.stars-rating .fallback span {
    text-indent:  0;
    float: left;
    position: static;
    width: 16px;
    font-size: 12px;
    line-height: 20px;
    text-align: center;
    color: #888;
}