文章出處
文章列表
由于原生的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樣式了。
文章列表
全站熱搜
留言列表