如今前端頁面效果日益豐富,默認的input組件樣式顯然不能知足設計需求。前段時間開發項目中恰好接觸到相關的需求,在此特意整理下修改radio、CheckBox樣式的方法。
原理:大體原理都是使用原生的checkbox或input標籤,在其後面設置相關聯的label元素。給<input>元素設置爲透明,而後經過定位讓用戶看到的是<label>元素,利用css的原生屬性來判斷用戶的操做,設置選中後的label樣式,即input[type=checkbox]:checked+label{}javascript
html代碼css
<p>您的性別:</p> <div class="radio-sex"> <input type="radio" id="sex1" name="sex"> <label for="sex1"></label> <span>男</span> </div> <div class="radio-sex"> <input type="radio" id="sex2" name="sex"> <label for="sex2"></label> 女 </div>
css樣式html
.radio-sex { position: relative; display: inline-block; margin-right: 12px; } .radio-sex input { vertical-align: middle; margin-top: -2px; margin-bottom: 1px; /* 前面三行代碼是爲了讓radio單選按鈕與文字對齊 */ width: 20px; height: 20px; appearance: none;/*清楚默認樣式*/ -webkit-appearance: none; opacity: 0; outline: none; /* 注意不能設置爲display:none*/ } .radio-sex label { position: absolute; left: 0; top: 0; z-index: -1; /*注意層級關係,若是不把label層級設爲最低,會遮擋住input而不能單選*/ width: 20px; height: 20px; border: 1px solid #3582E9; border-radius: 100%; } .radio-sex input:checked+label { background: #3582E9; } .radio-sex input:checked+label::after { content: ""; position: absolute; left: 8px; top: 2px; width: 5px; height: 12px; border-right: 1px solid #fff; border-bottom: 1px solid #fff; transform: rotate(45deg); }
優勢:充分藉助了CSS3的優點,無需使用js和圖片,僅用純CSS3就可搞定前端
缺點:兼容性較差,僅支持IE9+java
案例:
css3
實現思路
1.設置input 屬性hidden對該input進行隱藏web
<input type="radio" name="type" id="adviceRadio1" value="1" checked hidden/>
2.藉助label for標籤經過id綁定input ,這樣在點擊label時實際就是點擊了inputbootstrap
<input type="radio" name="type" id="adviceRadio1" value="1" checked hidden/> <label for="adviceRadio1" class="advice"></label>
3.定義label的樣式,設置未選中狀態的背景圖app
.advice{ height: 12px; width: 12px; display: inline-block; background-image: url('https://caiyunupload.b0.upaiyun.com/newweb/imgs/icon-unchecked.png'); background-repeat: no-repeat; background-position: center; vertical-align: middle; margin-top: -4px; }
4.使用相鄰選擇器設置選中狀態label的樣式字體
input[type="radio"]:checked + .advice{ background-image: url('https://caiyunupload.b0.upaiyun.com/newweb/imgs/icon-checked.png'); }
以上是radio單選框的實現代碼,checkbox也是相似 將input type定義成checkbox便可
awesome-bootstrap-checkbox是一款能夠美化Bootstrap複選框和單選按鈕的插件。它使用純CSS編寫,沒有任何的javascript文件。它經過在原生Bootstrap組件的基礎上作一些小改動,便可完成漂亮的美化效果。
演示地址:http://awesome-bootstrap-chec...
插件下載:https://www.bootcdn.cn/awesom...
注:須要引入awesome-bootstrap-checkbox.css、font-awesome.css以及font awesome對應的字體font文件
pretty.css是一款純css3漂亮的checkbox和radio美化效果。pretty.css能夠和多種字體圖標結合使用,對原生的checkbox和radio進行美化,還能夠製做按鈕點擊時的動畫效果。
演示地址:http://www.htmleaf.com/Demo/2...
插件下載:https://www.bootcdn.cn/pretty...
小編知道的方法先介紹到這裏,你們若有更好的方法歡迎留言討論。