radiobutton
要素は、可能な限り、このタスクに適しています。少しカスタマイズするだけです。 これが問題の始まりです。 事実、
radiobutton
と
checkbutton
radiobutton
checkbutton
のレンダリングはブラウザではなくOSによって制御されます。 したがって、ほとんどのCSSプロパティ(たとえば、
background-color
)はそれらに影響しません。
インターネット上で、私は
radiobutton
をカスタマイズする多くの方法を見つけましたが、それらはすべて私には複雑すぎるように思えたので、私自身の方法を考え出すことにしました。
私の考えは、ユーザーが
label
クリックすると、
radiobutton
切り替わるという事実に基づいています。 したがって、
radiobutton
ではなく
label
カスタマイズできます。
HTMLコードの例を考えてみましょう。
<input type="radio" name="color" value="#0000ff" id="blue"/> <label for="blue" class="blue"></label> <input type="radio" name="color" value="#00ffff" id="cyan"/> <label for="cyan" class="cyan"></label>
ここでは珍しいことは何もありません。 通常の
radiobutton
とそれらへの署名。
今CSS:
// radiobutton input[type="radio"]{display: none;} // label label{ width: 20px; height: 20px; } label.blue{background-color: blue;} label.cyan{background-color: #00ffff;} // input[type="radio"]:checked+label{ border: black solid 2px; }
ここで、
radiobutton
を非表示にし、
label
方法を描画します。 マークされた状態
input[type="radio"]:checked+label
label
を描画し
input[type="radio"]:checked+label
すべてがシンプルでエレガントです。
1つの「しかし」ではない場合、これは投稿を終了する可能性があります。
リンゴに向かって腐ったトマトのペア
特別な開発パスを持つ企業が1つもなければ、世界は美しく、美しいものになるでしょう。 これはAppleであり、そのユーザーが
label
を突く権利を否定しています。 その結果、私の方法はiPhoneとiPadで機能しません。 最も興味深いのは、Windows上のSafariがすべてを正しく噛むことです。 残念ながら、チェックするために手元にあるiMacはありませんでした。
特に流行に敏感な人には、JSを使用する必要がありました(コードはjQueryと組み合わせて使用するように設計されています)。
var deviceAgent = navigator.userAgent.toLowerCase(); var iOS = deviceAgent.match(/(iphone|ipod|ipad)/); if (iOS) { $('label').click(function (event) { $('#' + $(event.target).attr('for')).attr('checked', true).change(); }); }
使用例
Long Twitは、テキストを画像にレンダリングしてTwitterに送信するシンプルなサービスです。 テキストと背景の色を選択できます。