1. 程式人生 > >美化修改radio、checkbox的樣式

美化修改radio、checkbox的樣式

原理:大致原理都是使用原生的checkbox或input標籤,在其後面設定相關聯的label元素。給<input>元素設定為透明,然後通過定位讓使用者看到的是<label>元素,利用css的原生屬性來判斷使用者的操作,設定選中後的label樣式,即input[type=checkbox]:checked+label{}

一、利用css3偽元素實現樣式修改

html:

 <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:

.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+

html

 <div class="radio-item">
        <input type="radio" name="zhiye" id="" value=""/>
        <label>
            <i class="disc"></i>
            <i class="active"></i>
        </label>
        <span>視覺設計師</span>
    </div>
    <div class="radio-item">
        <input type="radio" name="zhiye" id="" value=""/>
        <label>
            <i class="disc"></i>
            <i class="active"></i>
        </label>
        <span>互動設計師</span>
    </div>
    <div class="radio-item">
        <input type="radio" name="zhiye" id="" value=""/>
        <label>
            <i class="disc"></i>
            <i class="active"></i>
        </label>
        <span>前端工程師</span>
    </div>

CSS樣式

.radio-item {
    position: relative;
    width: 132px;
    height: 44px;
    line-height: 44px;
    float: left;
    margin-right: 12px;
}

.radio-item input {
    width: 120px;
    height: 44px;
    opacity: 0;
    appearance: none;
    position: absolute;
    left: 0;
    top: 0;
}

.radio-item label {
    position: absolute;
    left: 0;
    top: 0;
    width: 120px;
    height: 36px;
    line-height: 36px;
    padding: 4px 6px;
    background-color: #EFEFEF;
    border-radius: 6px;
    z-index: -1;
    display: flex;
    align-items: center;
}

.radio-item label i {
    display: inline-block;
    margin-left: 6px;
}

.radio-item label i.disc {
    width: 8px;
    height: 8px;
    background: #333;
    border-radius: 100%;
}

.radio-item label i.active {
    width: 12px;
    height: 6px;
    border-left: 2px solid #FFFFFF;
    border-bottom: 2px solid #FFFFFF;
    transform: rotate(-45deg);
    display: none;
}

.radio-item span {
    margin-left: 32px;
}

.radio-item input:checked + label {
    background: #3698DB;
    color: #FFFFFF;
}

.radio-item input:checked + label i.disc {
    display: none;
}

.radio-item input:checked + label i.active {
    display: block;
}

.radio-item input:checked + label + span {
    color: #FFFFFF;
}

二、利用圖片實現樣式修改

實現思路 1.設定input 屬性hidden對該input進行隱藏

<input type="radio" name="type" id="adviceRadio1" value="1" checked hidden/>

2.藉助label for標籤通過id繫結input ,這樣在點選label時實際就是點選了input


<input type="radio" name="type" id="adviceRadio1" value="1" checked hidden/>
<label for="adviceRadio1" class="advice"></label>

3.定義label的樣式,設定未選中狀態的背景圖

.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外掛

awesome-bootstrap-checkbox是一款可以美化Bootstrap複選框和單選按鈕的外掛。它使用純CSS編寫,沒有任何的javascript檔案。它通過在原生Bootstrap元件的基礎上做一些小改動,即可完成漂亮的美化效果。

演示地址:http://awesome-bootstrap-checkbox.okendoken.com/demo/index.html

外掛下載:https://www.bootcdn.cn/pretty-checkbox/

注:需要引入awesome-bootstrap-checkbox.css、font-awesome.css以及font awesome對應的字型font檔案

pretty.css外掛

pretty.css是一款純css3漂亮的checkbox和radio美化效果。pretty.css可以和多種字型圖示結合使用,對原生的checkbox和radio進行美化,還可以製作按鈕點選時的動畫效果。

演示地址:http://www.htmleaf.com/Demo/201708164688.html

外掛下載:http://www.htmleaf.com/css3/ui-design/201708164687.html

相關推薦

美化修改radiocheckbox樣式

原理:大致原理都是使用原生的checkbox或input標籤,在其後面設定相關聯的label元素。給<input>元

使用背景圖修改radiocheckbox樣式

樣式 radio inpu posit log class png ext 設置 如果覺得設置樣式太麻煩,或者頁面上選中的樣式太復雜,也可以用背景圖去修改樣式<div class=""> <label><input type="radio

html修改radiocheckbox樣式 純CSS改寫checkbox樣式,讓複選框看起來更舒服一些

原生的checkbox、radio樣式不好看,試試把以下程式碼進去看看。 <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <link hr

radiocheckbox樣式修改

1.radio /* radio */ input[type="radio"]:checked {     background:url(../images/check2.png) -1px -2px;     background-size: 15px;     bor

美化瀏覽器的radiocheckbox樣式

先講一下原理:checkboxhack技術我們使用CSS一些特殊的選擇器,然後配合單選框以及複選框自帶的一些特性,可以實現元素的顯示隱藏效果。然後通過一些簡單的擴充套件,我們可以不使用任何JavaScr

【HTML】radiocheckbox樣式美化

僅提供記錄,怕忘記了 效果圖: <span style="font-size:14px;"><span class="radio-span"> <input ty

html中radiocheckbox選中狀態研究

radio blog 判斷 rop true 博文 for 屬性 .net 1、對radio 、checkbox 來說說,checked屬性可以保證頁面初始化被選中,但是通過js或者jquery 控制checked屬性並不能保證相應的被選中,同樣也不能通過checked屬性

禁用刪除新增選中設定selectradiocheckbox

1、操作select 1)、禁用option • 除前2個option,其他option都禁用** $("#selectId option:gt(1)").attr(“disabled”, “”); • 除第1個option,其他option都禁用 $("#selectId").fi

angularjs radiocheckboxng-repeat

radio使用ng-repeat如何預設選中: html: <div class="excels"> <label ng-repeat="y in mytypeData"> <input type="radio" ng-mod

Layui Layer在open彈出層中非同步載入資料和form表單radiocheckboxselect不渲染,不可點選的解決辦法

我們知道在使用layui的form表單元素中的radio、checkbox、select控制元件時需要使用layui.use([“form”])載入form表單模組,並使用時form.render()函式進行渲染。 而layer.open呼叫時的是靜態h

label模擬radiocheckbox,自定義radiocheckbox

最近做的專案選項框比較多,為了讓介面看起來更加美觀,決定自定義radio和checkbox,功能不變的情況下提高使用者體驗。這裡比較關鍵的一點是用到label的for屬性。 w3c的label介紹: <label> 標籤為 input 元素定義標註(標記)。 l

只用CSS修改radio的原點樣式

需要兩個label,第一個label配合input,第2個label才是input的內容 HTML: <input checked type="radio" id="radio-1" name

js取值控制radiocheckbox

<html> <head> <script type="text/javascript" src="./jquery.min.js"></script> </head> <body> <d

input的checkboxradio控制元件樣式美化

複選框 Checkbox 是 Web 應用常用控制元件,隨處可見,原生的複選框控制元件一般不能滿足我們的需求,設計師喜歡一些漂亮的圖片,用css做出此效果。 <input type="checkbox" id="gps_open_close" /> i

Jquery 操作Html 控件 CheckBoxRadioSelect 控件

技術分享 eat sel 操作 box dom元素 turn 第一個 input 在使用 Javascript 編寫前臺腳本的時候,經常會操作 Html 控件,比如 checkbox、radio、select,用 Jquery 庫操作其他會方便很多,下面用Jq對這些控件的操

validate針對checkboxradioselect標簽的驗證

成功 blank sele form 賦值 示例代碼 字母 parent appendto jquery.validate 是jquery的一個插件,用來輔助開發者在客戶端方便快捷的實現表單驗證,最終達到提高用戶體驗的目的。 示例代碼 <form id="fo

改變radio/checkbox樣式

pre 得到 select light AC inpu item OS checked 直接上代碼 .item input[type="radio" ] { width: 20px; height: 20px; backgr

css:層疊樣式美化頁面 修改標簽的樣式

外部文件 頁面 層疊 list 常用 層疊樣 分類 字體顏色 weight css:層疊樣式表 美化頁面 修改標簽的樣式 寫法分類: 1.內聯: <!--使用<link />標簽將css文件引入到html文件中--> <!--<

全選特效並修改checkbox樣式

after ack head eight display ont code itl java <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8">

微信小程序 - 更改radiocheckbox選中樣式

tar get www 下載源碼 gif 分享 ref 點擊下載 小程序 點擊下載源碼:示例-更改radio或checkbox選中樣式 微信小程序 - 更改radio和checkbox選中樣式