Вы могли бы бросить свой собственный довольно легко. Начните с разметки так:
<fieldset>
<input type="radio" name="weather" value="sunny" />
<input type="radio" name="weather" value="cloudy" />
<input type="radio" name="weather" value="rainy" />
<input type="radio" name="weather" value="class-3-kill-storm" />
</fieldset>
Без включенного javascript пользователи получат вышеуказанное (возможно, вы захотите добавить некоторые элементы ярлыка, чтобы люди знали, на что они нажимали;). Затем выполните цикл по всем из них и создайте <a>
элементы, которые вам понадобятся для ваших иконок:
$('input[name=weather]').each(function() {
var radio = $(this);
radio.css({display: 'none'});
var icon = $('<a class="icon ' + this.value + '"></a>');
icon.click(function(e) {
// stop default link click behaviour
e.preventDefault();
// unmark any previously selected image and mark clicked selected
icon.siblings('.icon').removeClass('selected');
icon.addClass('selected');
// set associated radio button's value
radio.attr('checked', 'true');
});
$(this).parent().append(icon);
});
Причина, по которой я использую <a>
, заключается в том, что IE должным образом учитывает псевдокласс :hover
CSS. Также в этой заметке я использую CSS-спрайты, чтобы вы могли объединить свои серые и полноцветные изображения в одно изображение высотой 40px с серой версией вверху.
CSS для <a>
будет выглядеть примерно так:
a.icon {
float: left;
/* width and height of your weather icons */
width: 20px;
height: 20px;
background-repeat: no-repeat;
background-position: 0 0;
}
a.selected,
a:hover.icon {
background-position: 0 -20px;
}
.sunny{
background-image: url(sunny.png);
}
.rainy {
background-image: url(rainy.png);
}
/* remaining weather styles */
Вы можете увидеть версию, использующую цвета фона в действии здесь .