Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537
在之前的一篇文章《默認(rèn)的input標(biāo)簽太丑?教你如何使用CSS寫出帶動畫的樣式》中有講過如何實(shí)現(xiàn)一個漂亮的input標(biāo)簽樣式。
既然已經(jīng)折騰了,今天這篇文章我們就繼續(xù)折騰,看看如何通過CSS3實(shí)現(xiàn)一個帶動畫的checkbox樣式?
CSS3
感興趣的可以自行去github上看源文件,地址如下:
https://github.com/zhouxiongking/article-pages/blob/master/articles/beautifulCheckbox/beautifulCheckbox.html
checkbox作為多選框,在form表單中的使用頻率是非常高的,例如問卷調(diào)查的多選題,個人興趣愛好的選擇時都會用到多選框。
而瀏覽器默認(rèn)的checkbox樣式都很丑,看起來就是一個小小的方框,雖然Bootstrap已經(jīng)有好看的checkbox樣式,但是它不支持動畫,在交互上仍然存在缺陷,所以我們就試圖自己寫出一個帶動畫的checkbox效果。
首先我們來看看checkbox的動態(tài)效果圖(中間的黑色圓圈實(shí)際為錄制GIF圖時產(chǎn)生的,請忽略)
checkbox效果圖
接下來我們具體分析下頁面的元素組成,主要包括以下部分。
默認(rèn)的checkbox標(biāo)簽,將其display設(shè)置為none,隱藏起來。
label標(biāo)簽,表現(xiàn)為實(shí)際顯示的動態(tài)選中和未選中效果。
我們需要達(dá)到的效果是,在未選中checkbox時,默認(rèn)為灰色的邊框,白色的背景;在選中checkbox時,改變背景色,出現(xiàn)白色的打勾動畫效果。
在這部分,我們來具體分析下頁面的代碼組成。
HTML
首先是頁面的HTML部分代碼,如上一部分所示,頁面其實(shí)只有兩個元素組成,這兩個元素放在一個容器下,故HTML代碼如下所示。
HTML部分代碼
CSS
我們來看看CSS部分的代碼,因?yàn)镃SS部分代碼比較多,我們一一來分析。
首先是外層container的樣式,同時對頁面的html和body也做一些簡單處理,代碼如下所示。
container樣式
其次是checkbox標(biāo)簽的樣式,因?yàn)樵腸heckbox除了在傳輸數(shù)據(jù)時有用處,在頁面呈現(xiàn)上并沒有作用,故設(shè)置display:none;將其隱藏。
checkbox樣式
然后是最重要的label部分,在未點(diǎn)擊之前l(fā)abel呈現(xiàn)一個正方形,有基本的樣式。
基本樣式
在點(diǎn)擊方形框后,出現(xiàn)的對勾是通過偽元素::before和::after實(shí)現(xiàn)的,對勾實(shí)際為兩個矩形拼接而成,左側(cè)的矩形用::after元素表示,右側(cè)的矩形用::before元素表示。兩者的通用樣式通過如下代碼實(shí)現(xiàn)。
偽元素實(shí)現(xiàn)
然后是針對::before和::after所特有的樣式,因?yàn)閮烧叩奈恢煤托D(zhuǎn)的角度不同,代碼也會出現(xiàn)差異。
特有樣式
然后是定義的打鉤的動畫效果,這里使用keyframes關(guān)鍵字定義,考慮到瀏覽器兼容性,定義的動畫具有不同的前綴。定義的動畫也包括兩部分,首先是右側(cè)的矩形動畫效果。
右側(cè)矩形動畫效果
然后是左側(cè)矩形的動畫效果,同樣考慮到瀏覽器的兼容性,樣式代碼如下。
左側(cè)矩形動畫
至此,所有代碼都已講解完畢,如果運(yùn)行之后就會看到文章開始的動畫效果。
本篇文章主要講的是如何使用自定義的動畫完成checkbox效果,感興趣的可以直接去github上看源文件代碼,后續(xù)會寫一個跟開關(guān)switch有關(guān)的文章,敬請期待~
在之前的一篇文章《默認(rèn)的input標(biāo)簽太丑?教你如何使用CSS寫出帶動畫的樣式》中有講過如何實(shí)現(xiàn)一個漂亮的input標(biāo)簽樣式。
既然已經(jīng)折騰了,今天這篇文章我們就繼續(xù)折騰,看看如何通過CSS3實(shí)現(xiàn)一個帶動畫的checkbox樣式?
CSS3
感興趣的可以自行去github上看源文件,地址如下:
https://github.com/zhouxiongking/article-pages/blob/master/articles/beautifulCheckbox/beautifulCheckbox.html
checkbox作為多選框,在form表單中的使用頻率是非常高的,例如問卷調(diào)查的多選題,個人興趣愛好的選擇時都會用到多選框。
而瀏覽器默認(rèn)的checkbox樣式都很丑,看起來就是一個小小的方框,雖然Bootstrap已經(jīng)有好看的checkbox樣式,但是它不支持動畫,在交互上仍然存在缺陷,所以我們就試圖自己寫出一個帶動畫的checkbox效果。
首先我們來看看checkbox的動態(tài)效果圖(中間的黑色圓圈實(shí)際為錄制GIF圖時產(chǎn)生的,請忽略)
checkbox效果圖
接下來我們具體分析下頁面的元素組成,主要包括以下部分。
默認(rèn)的checkbox標(biāo)簽,將其display設(shè)置為none,隱藏起來。
label標(biāo)簽,表現(xiàn)為實(shí)際顯示的動態(tài)選中和未選中效果。
我們需要達(dá)到的效果是,在未選中checkbox時,默認(rèn)為灰色的邊框,白色的背景;在選中checkbox時,改變背景色,出現(xiàn)白色的打勾動畫效果。
在這部分,我們來具體分析下頁面的代碼組成。
HTML
首先是頁面的HTML部分代碼,如上一部分所示,頁面其實(shí)只有兩個元素組成,這兩個元素放在一個容器下,故HTML代碼如下所示。
HTML部分代碼
CSS
我們來看看CSS部分的代碼,因?yàn)镃SS部分代碼比較多,我們一一來分析。
首先是外層container的樣式,同時對頁面的html和body也做一些簡單處理,代碼如下所示。
container樣式
其次是checkbox標(biāo)簽的樣式,因?yàn)樵腸heckbox除了在傳輸數(shù)據(jù)時有用處,在頁面呈現(xiàn)上并沒有作用,故設(shè)置display:none;將其隱藏。
checkbox樣式
然后是最重要的label部分,在未點(diǎn)擊之前l(fā)abel呈現(xiàn)一個正方形,有基本的樣式。
基本樣式
在點(diǎn)擊方形框后,出現(xiàn)的對勾是通過偽元素::before和::after實(shí)現(xiàn)的,對勾實(shí)際為兩個矩形拼接而成,左側(cè)的矩形用::after元素表示,右側(cè)的矩形用::before元素表示。兩者的通用樣式通過如下代碼實(shí)現(xiàn)。
偽元素實(shí)現(xiàn)
然后是針對::before和::after所特有的樣式,因?yàn)閮烧叩奈恢煤托D(zhuǎn)的角度不同,代碼也會出現(xiàn)差異。
特有樣式
然后是定義的打鉤的動畫效果,這里使用keyframes關(guān)鍵字定義,考慮到瀏覽器兼容性,定義的動畫具有不同的前綴。定義的動畫也包括兩部分,首先是右側(cè)的矩形動畫效果。
右側(cè)矩形動畫效果
然后是左側(cè)矩形的動畫效果,同樣考慮到瀏覽器的兼容性,樣式代碼如下。
左側(cè)矩形動畫
至此,所有代碼都已講解完畢,如果運(yùn)行之后就會看到文章開始的動畫效果。
本篇文章主要講的是如何使用自定義的動畫完成checkbox效果,感興趣的可以直接去github上看源文件代碼,后續(xù)會寫一個跟開關(guān)switch有關(guān)的文章,敬請期待~
果您覺得該文章對您有幫助,讓更多人受用,請關(guān)注“鍵盤碼農(nóng)”,轉(zhuǎn)發(fā)該文章。謝謝您的支持!
今天跟大家寫了一份js的聯(lián)動全選的源碼,代碼少,清晰易懂。
效果是這樣的:
點(diǎn)擊全選下面的就會被全部全選,或者下面的被一一選擇,全選按鈕也會被選中。運(yùn)用復(fù)選框來實(shí)現(xiàn)的聯(lián)動全選的功能。
點(diǎn)擊上面的復(fù)選框就會被全選
Javascript:聯(lián)動全選
當(dāng)下放的復(fù)選框沒有被全選,最上面的全選按鈕未被選中
復(fù)選框聯(lián)動全選js代碼實(shí)現(xiàn):
<!DOCTYPE html>
<html>
<head>
<title></title>
<meta charset="utf-8">
<script type="text/javascript">
window.onload = function ()
{
var oBtn1 = document.getElementById('btn1');
var oBox = document.getElementById('box');
var oInputs = oBox.getElementsByTagName('input');
oBtn1.onclick = function ()
{
if (oBtn1.checked == true) {
for (var i = 0; i < oInputs.length; i++) {
oInputs[i].checked = true;
}
} else {
for (var i = 0; i < oInputs.length; i++) {
oInputs[i].checked = false;
}
}
}
//點(diǎn)擊每一個input框
for (var i = 0; i < oInputs.length; i++) {
oInputs[i].onclick = function ()
{
var n = 0;
for (var i = 0; i < oInputs.length; i++) {
if (oInputs[i].checked == true) {
n++;
}
}
if (n == oInputs.length) {
oBtn1.checked = true;
} else {
oBtn1.checked = false;
}
}
}
}
</script>
</head>
<body>
<h1>全選/全不選</h1>
<input type="checkbox" id="btn1">
<div id="box">
<input type="checkbox" name="">
<input type="checkbox" name="">
<input type="checkbox" name="">
<input type="checkbox" name="">
</div>
</body>
</html>
相對比較簡單,對于初學(xué)者應(yīng)該有很好的幫助!請關(guān)注鍵盤碼農(nóng)。后期繼續(xù)更新,如有什么看法請?jiān)谙路皆u論。第一時間為您解答哦!
*請認(rèn)真填寫需求信息,我們會在24小時內(nèi)與您取得聯(lián)系。