改變checkbox和radio的默認樣式


改變checkbox的默認樣式總共有兩種方法,大體思路都是一樣的,先將checkbox隱藏,然后用一個樣式元素來偽裝成checkbox,主要的不同之處在於如何設置選中后的樣式。

第一種方法是使用圖片,將不同狀態下的樣式集合到一張圖片上,根據改變background-positon來改變樣式,類似於css sprite,之前隨筆中的icheck就是這個原理bootstrap中的icheck.js插件,這種方法的兼容性比較好,但是不夠靈活。

第二種方法是使用transform繪制選中后的樣式,這樣就可以根據自己的喜好隨意修改樣式了,但是兼容性不太強。

下圖代碼是第二種方法,其中紅色方框部分為transform的繪制過程。

1.html結構是這樣的:

label將樣式元素span和checkbox綁定起來

2.css是這樣的:

.input:checked+.span:after實現樣式切換

3.源碼:

 1 <!doctype html>
 2 <html>
 3 <head>
 4      <meta charset="utf-8">
 5      <title>demo</title>
 6      <style>
 7      .label{position: relative;}
 8      .input{display:none}
 9      .span{display: inline-block;width: 16px;height: 16px;border: 1px solid #fd8845;}
10      .input:checked+.span:after{
11          content: "";
12          position: absolute;
13          width: 9px;
14          height: 4px;
15          border: 2px solid #fd8845;
16          border-top-color: transparent;
17          border-right-color: transparent;
18          -ms-transform: rotate(-60deg); 
19          -moz-transform: rotate(-60deg); 
20          -webkit-transform: rotate(-60deg); 
21          transform: rotate(-45deg);}
22      </style>
23 </head>
24 <body>
25      <div>
26          <label class="label">
27              <input class="input" type="checkbox" name="">
28              <span class="span"></span>
29          </label>
30      </div>
31 </body>
32 </html>
View Code

 4.補充一段radio的css源碼(HTML結構和checkbox是一樣的):

 1 .radioLabel{position: relative;}
 2 .radioInput{display: none;}
 3 .radioSpan{display: inline-block;width: 1em;height: 1em;border:1px solid red;border-radius: 50%;}
 4 .radioInput:checked+.radioSpan:after{
 5     content: "";
 6     position: absolute;
 7     top: 47%;
 8     left: 29%;
 9     width: .4em;
10     height: .4em;
11     border-radius: 50%;
12     background-color: red;
13 }
View Code

 5.補充二者的效果圖:

checkbox:

radio:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM