文章出處

由于原生的checkbox和radio的樣式太簡陋了,在設計頁面的時候,設計師往往會設計自己的checkbox和radio樣式。一半情況下,為了適應各個瀏覽器的兼容性,我們都會用其他的元素替代原生的checkbox和radio,然后用js實現選中和未選中時候的樣式,用來模擬checkbox和radio。

例如這種:

用其他元素模擬(以checkbox為例):

<div class='checkbox'></div>
$('.checkbox').click(function(){
    if($(this).hasClass("checked")){
              $(this).removeClass("checked");
    }else{
             $(this).addClass("checked");
    }
});

運用JS添加點擊事件,切換選中和未選中的狀態。

那么,能僅僅只用樣式,改變原生的checkbox的樣式呢?

 

使用CSS實現:


在表單元素中,為了擴大checkbox的點擊范圍,我們經常用label和checkbox相連,現在也可以運用這個關系,把樣式加在label上,隱藏checkbox(設置透明度,不能display:none,否則關聯會失效)。

html結構:

<input type="checkbox" id="mycheck" />
<lable for="mycheck">check me</label>

 

css樣式:

input[type="checkbox"] + label::before {
content: '\a0'; /* non-break space */
display: inline-block;
vertical-align: .2em;
width: .8em;
height: .8em;
margin-right: .2em;
border-radius: .2em;
background: silver;
text-indent: .15em;
line-height: .65;
}

 

利用偽元素::before給label添加樣式,利用CSS3的偽類選擇器:checked,:hover,:focus,:disabled設置不用狀態的樣式

 

input[type="checkbox"]:checked + label::before {
content: '\2713';
background: yellowgreen;
}

 

input[type="checkbox"]:focus + label::before {
box-shadow: 0 0 .1em .1em #58a;
}
input[type="checkbox"]:disabled + label::before {
background: gray;
box-shadow: none;
color: #555;
}

 

 

這樣,僅僅使用樣式就能顯示不同狀態下的checkbox樣式了。

 


文章列表


不含病毒。www.avast.com
arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()