label要素の中に「input type="radio"」とspan要素を入れ、「display:none」を使って、本来のradioボタンの形状を消します。:checked擬似クラスでチェックされているボタンを判定し、隣接セレクタでそれに隣接するspan要素を選び、:before疑似要素、:after疑似要素を使って、きれいなradioボタン形状を再描画しています。

サンプル

サンプルのhtmlのソース

<ul>
	<li><label><input type="radio" name="city" class="rbtn"><span class="mark"></span>東京</label></li>
	<li><label><input type="radio" name="city" class="rbtn"><span class="mark"></span>大阪</label></li>
	<li><label><input type="radio" name="city" class="rbtn"><span class="mark"></span>名古屋</label></li>
</ul>

サンプルのCSSのソース

  div.wrap ul li input.rbtn {
	display: none;
	}
  div.wrap ul li input.rbtn + .mark:before {
	position: absolute;
	content: "";
	top: 50%;
	left: -15px;
	margin-top: -15px;
	width: 30px;
	height: 30px;
	background: #FFFFFF;
	border-radius: 50%;
	border: 5px solid #fdc096;
	box-sizing: border-box;
	}
  div.wrap ul li input.rbtn:checked + .mark:before {
	border: 5px solid #ea721f;
	}
  div.wrap ul li input.rbtn:checked + .mark:after {
	position: absolute;
	content: "";
	top: 50%;
	left: -5px;
	margin-top: -5px;
	width: 10px;
	height: 10px;
	border-radius: 50%;
	background: #ea721f;
	box-sizing: border-box;
	}
※引用、参考:http://jsdo.it/japan.deep/Ai76
戻るボタン