在制作網頁的過程中,經常需要實現點擊切換背景圖片的效果,本文關注的是表單中checkbox背景圖片切換的實現。如圖,在輸入用戶名和密碼后,用戶需要選擇是否記住密碼
圖片背景為白色表示未勾選狀態 ,背景為藍色表示勾選狀態
。
HTML源碼如下:
1 <div class="check"> 2 <input id="checkbox1" class="checkbox" type="checkbox" checked ="checked" /><label>記住密碼</label> 3 </div>
其中checkbox 默認為勾選狀態。
設置樣式,CSS代碼如下:
1 .check{ 2 text-align: right; 3 font-size:24px; 4 height: 50px; 5 width: 150px; 6 background: url(img/btn_1.png) left center no-repeat; 7 } 8 .checkbox{ 9 width:50px; 10 height: 50px; 11 vertical-align: middle; 12 filter:alpha(opacity=0); 13 -moz-opacity:0; 14 -khtml-opacity: 0; 15 opacity: 0; 16 } 17 label { 18 vertical-align: middle; 19 }
將checkbox透明度設為0,再以背景圖片來代替復選框就能得到帶有勾選圖片的效果。默認為記住密碼的勾選狀態,btn_1.png 即為背景為藍色的勾選圖片。值得注意的是,將 input 標簽與 label 標簽同時加上 vertical-align: middle; 屬性才能實現文字與復選框垂直居中對齊。
接下來實現單擊切換checkbox背景圖片的效果,1.9版本以下的 jQuery 里的 toggle() 方法可以直接實現切換:
1 toggle(objs) { 2 $(objs).each(function(){ 3 if ($(this).is(':hidden')) $(this).show(); else $(this).hide(); 4 }); 5 }
然而 jQuery 1.9及以上版本已經刪除了該方法,因此可以用原生 javascript 來實現,具體代碼如下:
$(document).ready(function(){ var flag = 1; $(".check").click(function(){ if(flag == 1){ $(".check").css("background","url(img/btn_1.png) left center no-repeat"); flag = 0; } else{ $(".check").css("background","url(img/btn_2.png) left center no-repeat"); flag = 1; } }) });
其中 btn_2.png 為背景為白色的未勾選圖片。
至此,點擊復選框,就可實現背景圖片的任意切換。