JSFiddle - React, Tailwind, and code Playground
by Wonderfoule
HTML
<select id="rating">
<option value="1">Mauvais</option>
<option value="2">Moyen</option>
<option value="3">Bien</option>
<option value="4">Très bien</option>
<option value="5">Excellent</option>
</select>
<div class="rateit bigstars" data-rateit-starwidth="32" data-rateit-starheight="32" data-rateit-backingfld="#rating"></div>
CSS
.rateit {
display: -moz-inline-box;
display: inline-block;
position: relative;
-webkit-user-select: none;
-khtml-user-select: none;
-moz-user-select: none;
-o-user-select: none;
-ms-user-select: none;
user-select: none;
-webkit-touch-callout: none;
}
.rateit .rateit-range
{
position: relative;
display: -moz-inline-box;
display: inline-block;
background: url(star.gif);
height: 16px;
outline: none;
}
.rateit .rateit-range * {
display:block;
}
/* for IE 6 */
* html .rateit, * html .rateit .rateit-range
{
display: inline;
}
/* for IE 7 */
* + html .rateit, * + html .rateit .rateit-range
{
display: inline;
}
.rateit .rateit-hover, .rateit .rateit-selected
{
position: absolute;
left: 0px;
}
.rateit .rateit-hover-rtl, .rateit .rateit-selected-rtl
{
left: auto;
right: 0px;
}
.rateit .rateit-hover
{
background: url(star.gif) left -32px;
}
.rateit .rateit-hover-rtl
{
background-position: right -32px;
}
.rateit .rateit-selected
{
background: url(star.gif) left -16px;
}
.rateit .rateit-selected-rtl
{
background-position: right -16px;
}
.rateit .rateit-preset
{
background: url(star.gif) left -48px;
}
.rateit .rateit-preset-rtl
{
background: url(star.gif) left -48px;
}
.rateit button.rateit-reset
{
background: url(delete.gif) 0 0;
width: 16px;
height: 16px;
display: -moz-inline-box;
display: inline-block;
float: left;
outline: none;
border:none;
padding: 0;
}
.rateit button.rateit-reset:hover, .rateit button.rateit-reset:focus
{
background-position: 0 -16px;
}
div.bigstars div.rateit-range
{
background: url(http://clients.wonderful.fr/test-rating/star-white32.png);
height: 32px;
}
div.bigstars div.rateit-hover
{
background: url(http://clients.wonderful.fr/test-rating/star-gold32.png);
}
div.bigstars div.rateit-selected
{
background:...
JavaScript
/*! RateIt | v1.0.22 / 05/27/2014 | https://rateit.codeplex.com/license
http://rateit.codeplex.com | Twitter: @gjunge
*/
(function ($) {
$.rateit = {
aria: {
resetLabel: 'reset rating',
ratingLabel: 'rating'
}
};
$.fn.rateit = function (p1, p2) {
//quick way out.
var index = 1;
var options = {}; var mode = 'init';
var capitaliseFirstLetter = function (string) {
return string.charAt(0).toUpperCase() + string.substr(1);
};
if (this.length === 0) { return this; }
var tp1 = $.type(p1);
if (tp1 == 'object' || p1 === undefined || p1 === null) {
options = $.extend({}, $.fn.rateit.defaults, p1); //wants to init new rateit plugin(s).
}
else if (tp1 == 'string' && p1 !== 'reset' && p2 === undefined) {
return this.data('rateit' + capitaliseFirstLetter(p1)); //wants to get a value.
}
else if (tp1 == 'string') {
mode = 'setvalue';
}
return this.each(function () {
var item = $(this);
//shorten all the item.data('rateit-XXX'), will save space in closure compiler, will be like item.data('XXX') will become x('XXX')
var itemdata = function (key, value) {
if (value != null) {
//update aria values
var ariakey = 'aria-value' + ((key == 'value') ? 'now' : key);
var range = item.find('.rateit-range');
if (range.attr(ariakey) != undefined) {
range.attr(ariakey, value);
}
}
arguments[0] = 'rateit' + capitaliseFirstLetter(key);
return item.data.apply(item, arguments); ////Fix for WI: 523
};
//handle programmatic reset
if (p1 == 'reset') {
var setup = itemdata('init'); //get initial value
...