整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          原生CSS3教你寫一個漂亮的,帶動畫的checkbox效果


          在之前的一篇文章《默認的input標簽太丑?教你如何使用CSS寫出帶動畫的樣式》中有講過如何實現一個漂亮的input標簽樣式。

          既然已經折騰了,今天這篇文章我們就繼續折騰,看看如何通過CSS3實現一個帶動畫的checkbox樣式?

          CSS3

          感興趣的可以自行去github上看源文件,地址如下:

          https://github.com/zhouxiongking/article-pages/blob/master/articles/beautifulCheckbox/beautifulCheckbox.html

          checkbox

          checkbox作為多選框,在form表單中的使用頻率是非常高的,例如問卷調查的多選題,個人興趣愛好的選擇時都會用到多選框。

          而瀏覽器默認的checkbox樣式都很丑,看起來就是一個小小的方框,雖然Bootstrap已經有好看的checkbox樣式,但是它不支持動畫,在交互上仍然存在缺陷,所以我們就試圖自己寫出一個帶動畫的checkbox效果。

          首先我們來看看checkbox的動態效果圖(中間的黑色圓圈實際為錄制GIF圖時產生的,請忽略)

          checkbox效果圖

          具體組成

          接下來我們具體分析下頁面的元素組成,主要包括以下部分。

          1. 默認的checkbox標簽,將其display設置為none,隱藏起來。

          2. label標簽,表現為實際顯示的動態選中和未選中效果。

          我們需要達到的效果是,在未選中checkbox時,默認為灰色的邊框,白色的背景;在選中checkbox時,改變背景色,出現白色的打勾動畫效果。

          代碼組成

          在這部分,我們來具體分析下頁面的代碼組成。

          • HTML

          首先是頁面的HTML部分代碼,如上一部分所示,頁面其實只有兩個元素組成,這兩個元素放在一個容器下,故HTML代碼如下所示。

          HTML部分代碼

          • CSS

          我們來看看CSS部分的代碼,因為CSS部分代碼比較多,我們一一來分析。

          首先是外層container的樣式,同時對頁面的html和body也做一些簡單處理,代碼如下所示。

          container樣式

          其次是checkbox標簽的樣式,因為原生的checkbox除了在傳輸數據時有用處,在頁面呈現上并沒有作用,故設置display:none;將其隱藏。

          checkbox樣式

          然后是最重要的label部分,在未點擊之前label呈現一個正方形,有基本的樣式。

          基本樣式

          在點擊方形框后,出現的對勾是通過偽元素::before和::after實現的,對勾實際為兩個矩形拼接而成,左側的矩形用::after元素表示,右側的矩形用::before元素表示。兩者的通用樣式通過如下代碼實現。

          偽元素實現

          然后是針對::before和::after所特有的樣式,因為兩者的位置和旋轉的角度不同,代碼也會出現差異。

          特有樣式

          然后是定義的打鉤的動畫效果,這里使用keyframes關鍵字定義,考慮到瀏覽器兼容性,定義的動畫具有不同的前綴。定義的動畫也包括兩部分,首先是右側的矩形動畫效果。

          右側矩形動畫效果

          然后是左側矩形的動畫效果,同樣考慮到瀏覽器的兼容性,樣式代碼如下。

          左側矩形動畫

          至此,所有代碼都已講解完畢,如果運行之后就會看到文章開始的動畫效果。

          結束語

          本篇文章主要講的是如何使用自定義的動畫完成checkbox效果,感興趣的可以直接去github上看源文件代碼,后續會寫一個跟開關switch有關的文章,敬請期待~

          果圖:

          移入:

          <html>
          <body>
           
          	<table border="1">
          		<tr>
          			<th><input type="checkbox" onclick="swapCheck()" /></th>
          			<th>Month</th>
          			<th>Savings</th>
          		</tr>
          		<tr>
          			<td><input type="checkbox" /></td>
          			<td>January</td>
          			<td>$100</td>
          		</tr>
          		<tr>
          			<td><input type="checkbox" /></td>
          			<td>February</td>
          			<td>$150</td>
          		</tr>
          	</table>
           
          	<script type="text/javascript"
          		src="http://apps.bdimg.com/libs/jquery/2.1.1/jquery.min.js"></script>
           
          	<script type="text/javascript">
          		//checkbox 全選/取消全選
          		var isCheckAll = false;
          		function swapCheck() {
          			if (isCheckAll) {
          				$("input[type='checkbox']").each(function() {
          					this.checked = false;
          				});
          				isCheckAll = false;
          			} else {
          				$("input[type='checkbox']").each(function() {
          					this.checked = true;
          				});
          				isCheckAll = true;
          			}
          		}
          	</script>
           
          </body>
          </html>
          


          主站蜘蛛池模板: 一区二区三区在线免费| 亚洲一区AV无码少妇电影☆| 日本一区二区在线播放| 亚洲AV无码一区二区三区系列| 内射白浆一区二区在线观看| 性色AV 一区二区三区| 日韩精品无码一区二区三区AV| 国产亚洲3p无码一区二区| 久久精品国产第一区二区三区 | 亚洲男女一区二区三区| 色综合视频一区中文字幕| 美女免费视频一区二区| 波多野结衣在线观看一区二区三区| 一级毛片完整版免费播放一区| 国产精品无码一区二区三级| 亚洲香蕉久久一区二区| 国产成人一区二区在线不卡| 一本AV高清一区二区三区| 成人中文字幕一区二区三区| 国产拳头交一区二区| 国产亚洲一区二区在线观看 | 午夜影院一区二区| 一区二区三区久久精品| 无码精品黑人一区二区三区| 夜夜高潮夜夜爽夜夜爱爱一区| 一区在线免费观看| 91精品一区二区综合在线| 四虎永久在线精品免费一区二区| 高清国产AV一区二区三区| 色婷婷亚洲一区二区三区| 亚洲乱码一区二区三区在线观看| 亚洲码欧美码一区二区三区| 成人区人妻精品一区二区不卡视频| 亚洲视频免费一区| 香蕉在线精品一区二区| 成人欧美一区二区三区在线视频| 国产成人高清精品一区二区三区 | 国产未成女一区二区三区| 亚洲日韩激情无码一区| 国产成人无码aa精品一区| 麻豆一区二区三区精品视频 |