あなたはかなり簡単に自分自身を転がすことができます。次のようなマークアップから始めます。
<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);
});
私が を使用している理由は、IE がCSS 疑似クラス<a>
を適切に尊重するからです。:hover
また、CSS スプライトを使用しているため、灰色の画像とフルカラーの画像を 1 つの高さ 40 ピクセルの画像に結合し、上部に灰色のバージョンを配置します。
の 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 */
背景色を使用したバージョンの動作をここで見ることができます。