ラジオボタンをカスタマイズの例

.ragio_custom input{
    display: none;
}
.ragio_custom label{
    display: inline-block;
    position: relative;
    cursor: pointer;
    margin-left: 20px;
    padding: 10px 20px;
    border-radius: 2px;
    color: #3e4956;
    font-size: 14px;
    text-align: center;
    line-height: 1;
}
.ragio_custom label:before{
    position: absolute;
    content: "";
    top: 50%;
    left: -10px;
    width: 20px;
    height: 20px;
    margin-top: -10px;
    background: #e2e2e2;
    border:1px solid #999;
    border-radius: 50%;
}
.ragio_custom input[type="radio"]:checked + label:after {
    position: absolute;
    content: "";
    top: 50%;
    left: -4px;
    width: 8px;
    height: 8px;
    margin-top: -4px;
    border-radius: 50%;
    background: #e82c83;
}
<div class="ragio_custom">
	<input type="radio" name="radio1" id="select1" value="1" checked=""><label for="select1"><img src="images/plan/1.jpg" class="radio_img" alt="選択肢1"/></label>
	<input type="radio" name="radio1" id="select2" value="2"><label for="select2"><img src="images/plan/2.jpg" class="radio_img" alt="選択肢2"/></label>
	<input type="radio" name="radio1" id="select3" value="3"><label for="select3"><img src="images/plan/3.jpg" class="radio_img"  alt="選択肢3"/></label>
	<input type="radio" name="radio1" id="select4" value="4"><label for="select4"><img src="images/plan/4.jpg" class="radio_img" alt="選択肢4"/></label>
</div> 

ラジオボタン 

drawer.js アンドロイドでメニューがスクロールしない 

腹立たしいほどハマってしまったので、記録したい。
元は、iScroll.js と drawer.js のハンバーガーメニューがAndroidで動かない
https://qiita.com/YujiHatanaka/items/64b6a6c8facb3a2f69b5

内容——–

iScroll.js と drawer.js のハンバーガーメニューがAndroidで動かない
JavaScript
iscroll.js
概要

drawer.jsを使った、スマホ用バーガーメニュー実装で、新しいAndroidのChromeにおいて長いメニューがスクロールしない症状がありました。スクロールは、全くしない訳では無く、フリックで素早く動かすと若干スクロールするものの、通常のタップ移動では指を離したタイミングでメニューが閉じてしまいます。この不具合の修正を試みました。
詳細

Androidでは、2016年末頃からスクロール動作を滑らかにするために、addEventListenerにイベントを登録する際、デフォルトでそのイベント内部の preventDefault を実行しないモードになりました。
jQuery の on() でイベントを登録している場合、addEventListener の第3引数に {passive: false} を加えられるようなオプションは無いため、drawer.js内部で on()を使用している箇所をaddEventListener を使って書き直す必要があります。加えて何かとバグの多いiscroll.js ではAndroidのタッチ動作をうまく検出出来ていない様子なので、スマホだけに表示させる画面、という前提で動作するよう修正試みました。
修正ポイント
drawer.js(v3.2.2)
19行目

iScroll.js のデフォルトオプションを定義している部分。preventDefaultが基本ONになるようにしている。
修正前
drawer.js

preventDefault: false

修正後
drawer.js

preventDefault: true,

107行目

修正前
drawer.js

if (touches) {
$this.on(‘touchmove.’ + namespace, function disableTouch(event) {
event.preventDefault();
});
}

修正後
drawer.js

if (touches) {
document.addEventListener(‘touchmove.’ + namespace, function disableTouch(event) {
event.preventDefault();
}, {passive: false});
}

iscroll.js(v5.2.0)
42行目

内部でaddEventListnerを addEventとしてエイリアスを作っている部分があるので、ここで Android対応の書き方にする。
修正前
iscroll.js

me.addEvent = function (el, type, fn, capture) {
el.addEventListener(type, fn, !!capture);
};

修正後
iscroll.js

me.addEvent = function (el, type, fn, capture) {
el.addEventListener(type, fn, {passive: false});
};

191行目

マウスポインタの場合の処理だが、スマホのみで使う前提なので、タッチイベントと同じものとして扱わせる。

修正前
iscroll.js

pointerdown: 3,
pointermove: 3,
pointerup: 3,

修正後
iscroll.js

pointerdown: 1,
pointermove: 1,
pointerup: 1,

331行目

ポインター、マウスなどをdisableにする処理だが、条件分岐がAndroidの場合、望んだとおりにならないようなので、タッチデバイスしか扱わないのとChromeのデバッグ環境でも動くことを考えて修正。

修正前
iscroll.js

disablePointer : !utils.hasPointer,
disableTouch : utils.hasPointer || !utils.hasTouch,
disableMouse : utils.hasPointer || utils.hasTouch,

修正後
iscroll.js

disablePointer : false,
disableTouch : false,
disableMouse : false,

482行目、622行目

e.preventDefault();をコメントアウト

これは
IScroll.prototype = {の中の
_start: と
_end: のpreventDefault を無効にしている。

以上で Android と iPhoneで正常動作するようになった。
参考

Android Chrome beta (v.56) でdocumentに対するtouchイベントのpreventDefaultが効かない
(http://qiita.com/ru_shalm/items/4d79e94b5d9c7c88607d)
一連の根本的な原因、ChromeのaddEventListenerについての挙動について説明があります。

Passive Event Listeners によるスクロールの改善
(https://blog.jxck.io/entries/2016-06-09/passive-event-listeners.html)
さらに詳細な情報があって、理解が深まります。

この問題が起きているときに、Chromeブラウザのデバッグコンソールに以下のメッセージがでます。
Unable to preventDefault inside passive event listener due to target being treated as passive.