0

このページのラジオ ボタンを画像に変更しようとしています
http://www.pazzle.co.uk/index.php?main_page=product_info&cPath=6_1&products_id=3

私はそれを行うためにこのチュートリアルを使用しています:
http://ryanfait.com/resources/custom-checkboxes-and-radio-buttons/

このスクリプトはうまくいかないようです。ラジオ ボタンを画像に変更するためのより良い解決策はありますか?

4

1 に答える 1

2

そのチュートリアルはかなり古く、キーボードのサポートがなく、スクリプトは非常に複雑に見えます...このjQueryプラグインjq-customRadioCheck を試してください。

次のような画像スプライトが必要です: http://i.imgur.com/KSNpJ.png

HTML:

<label><input type="checkbox"/>Checkbox</label>
<label><input type="radio"/>Radio</label>

jQuery:

;(function(){
$.fn.customRadioCheck = function() {

  return this.each(function() {

    var $this = $(this);
    var $span = $('<span/>');

    $span.addClass('custom-'+ ($this.is(':checkbox') ? 'check' : 'radio'));
    $this.is(':checked') && $span.addClass('checked'); // init
    $span.insertAfter($this);

    $this.parent('label').addClass('custom-label')
      .attr('onclick', ''); // Fix clicking label in iOS
    // hide by shifting left
    $this.css({ position: 'absolute', left: '-9999px' });

    // Events
    $this.on({
      change: function() {
        if ($this.is(':radio')) {
          $this.parent().siblings('label')
            .find('.custom-radio').removeClass('checked');
        }
        $span.toggleClass('checked', $this.is(':checked'));
      },
      focus: function() { $span.addClass('focus'); },
      blur: function() { $span.removeClass('focus'); }
    });
  });
};
}());

CSS:

.custom-label {
  display: inline-block;
  margin-right: .8em;
  cursor: pointer;
}
.custom-radio,
.custom-check {
    vertical-align: middle;
    display: inline-block;
    position: relative;
    top: -.15em; /* Adjust to for best fit */
    margin: 0 .4em;
    width: 20px;
    height: 20px;
    background: url(customRadioCheck.png) 0 0 no-repeat;
}
.custom-radio { background-position: 0 -20px; }
.custom-check.focus { background-position: -20px 0; }
.custom-radio.focus { background-position: -20px -20px; }
.custom-check.checked { background-position: -40px 0; }
.custom-radio.checked { background-position: -40px -20px; }
.custom-check.checked.focus { background-position: -60px 0; }
.custom-radio.checked.focus { background-position: -60px -20px; }

デモ: http://jsfiddle.net/elclanrs/BQp2F/

于 2012-10-08T02:42:10.657 に答える