整合營銷服務商

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

          免費咨詢熱線:

          原生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>
          


          主站蜘蛛池模板: 91香蕉福利一区二区三区| 日韩精品无码一区二区三区免费| 伊人色综合网一区二区三区 | 区三区激情福利综合中文字幕在线一区亚洲视频1 | 色狠狠一区二区三区香蕉蜜桃| 任你躁国语自产一区在| 美女免费视频一区二区三区| 人妖在线精品一区二区三区| 伦理一区二区三区| 日韩精品一区二区三区国语自制| 久久91精品国产一区二区| 中文日韩字幕一区在线观看| 日韩在线一区二区三区视频| 国产精品电影一区| 国产一区在线mmai| 久久综合亚洲色一区二区三区| 丝袜无码一区二区三区| jizz免费一区二区三区| 一区二区在线视频观看| 久久一区二区三区免费| 亚洲人AV永久一区二区三区久久| 国产成人无码精品一区不卡| 无码日韩人妻av一区免费| 国产av一区最新精品| 精品国产一区二区二三区在线观看| 无码国产精品久久一区免费 | 亚洲一区二区三区四区在线观看| 午夜性色一区二区三区不卡视频| 久久久久成人精品一区二区| 国产无套精品一区二区| 精品视频一区二区三区四区| 国产一区二区久久久| 国产免费一区二区三区| 久久毛片一区二区| 国产成人精品一区二区三在线观看| 亚洲一区二区三区高清不卡| 国产福利视频一区二区| 无码日韩人妻AV一区二区三区| 国产福利一区二区三区| 好爽毛片一区二区三区四 | 视频在线观看一区二区|