前言:最近在做一個網站,為了統一風格,需要自定義checkbox的樣式。所以花了點時間參考了 研究了一下。感覺上面的方法略微麻煩。所以自己重新寫了下面的程式碼,歡迎大家指教。同時,感謝w3cplus提供的原始教程和圖片。
(1)主要的原理是:
使用clip屬性,將checkbox的預設顯示框隱藏,然後,使用bg.png 中的圖片來顯示他的狀態(選中/未選中);當每一次點選時,jquery檢查是否選中,如果未選中,則將圖片替換為選中狀態;否,則相反。(目測,比w3cplus上的程式碼少了一些。)
在這裡就不寫radio的樣式了。畢竟大同小異。詳細建議點選 w3cplus 。
(2)效果圖如下:
點選前:
點選後:
(3)主要程式碼(最後有一個原始碼連結):
主要的HTML程式碼:
<form > <label for="checkbox_1"><input type="checkbox" id="checkbox_1" value="1">第一個選項</label> <label for="checkbox_2"><input type="checkbox" id="checkbox_2" value="2">第二個選項</label> </form>
接下去是CSS樣式:
<style type="text/css"> form { width: 300px; margin:20px auto; padding: 20px; background-color: #0064cd; display: relative; background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #049cdb), color-stop(100%, #0064cd)); background-image: -webkit-linear-gradient(#049cdb, #0064cd); -webkit-border-r+adius: 10px; -moz-border-radius: 10px; -khtml-border-radius: 10px; border-radius: 10px; -webkit-box-shadow: 0 5px 12px rgba(0,0,0,.4); -moz-box-shadow: 0 5px 12px rgba(0,0,0,.4); -khtml-box-shadow: 0 5px 12px rgba(0,0,0,.4); box-shadow: 0 5px 12px rgba(0,0,0,.4); } label{ display: block; margin: 20px; padding: 0px 25px; height: 1.5em; background: url("bg.png") no-repeat; background-position: 0 -100px; overflow: hidden; } label.check{ background-position: 0 -150px; } label input{ position: absolute; clip: rect(0 0 0 0); } </style>
最後是jquery程式碼:
<script src="jquery-1.9.0.min.js"></script> <script type="text/javascript"> $(function(){ $("label").click(function(){ if ($(this).hasClass("check")) { $(this).removeClass("check"); return false; }else{ $(this).addClass("check"); return false; } }); }); </script>
附:下載地址:http://vdisk.weibo.com/s/sYYrp7G62yQT