繪制按鈕其實很簡單函荣,只不過對于還沒自己動手繪制的“新人”來說唾戚,會有一點不知所措的感覺(其實我前天就是如此);
為了方便大家的學習警检,我決定寫篇基礎(chǔ)教程來為web界做一點小小的共貢獻
我認為按鈕的繪制分以下三個步驟
- 第一步孙援,繪制按鈕的輪廓
- 選擇合適的html標簽,設置輪廓的CSS
/* html代碼 */
<a href="#" class="button off"></a>
body{
background-color: #E6C9B6;
}
/* CSS樣式 */
/* 按鈕輪廓 */
.button{
display: block;
margin:100px auto;
position: relative;
width:100px;
height:40px;
border-radius: 50px;
border:1px solid #fff;
background-color: #E9E4E0;
}
效果圖
仿IOS-1.jpg
- 第二步扇雕,繪制按鈕的默認狀態(tài)
- 這一步很重要拓售,由于我們不會再給html文件添加其他的標簽,所以我們需要用 :after 偽類對按鈕進行CSS渲染
/* 接在上面繼續(xù)寫 */
.button:after{
display: block;
position: absolute; //相對按鈕的輪廓進行決定定位
top:2px;
bottom: 2px; //即設置top,又設置bottom使元素自動拉伸到最大
left:2px; //實際上镶奉,按鈕的寬度即為容器的高度-(top+bottom)
width:36px; //按鈕的寬度
line-height: 36px; //按鈕文字的高度础淤,如果不需要文字崭放,可移除
text-align: center;
text-transform: uppercase;
font-size: 16px;
background-color: #fff; //這里的背景顏色是按鈕的背景顏色
border:2px solid;
transition: all 500ms; //按鈕的動畫時長
}
實際上,做到這一步之后會發(fā)現(xiàn)鸽凶,在瀏覽器上的效果沒有一點變化币砂,還是之前的那樣子,不過不用著急玻侥,我們再加一點東西就很明顯了
- 在輪廓內(nèi)添加小按鈕
.off:after {
content: 'off';
border-radius:30px;
color: #999;
}
默認為off狀態(tài)
仿IOS-2.jpg
- 再接著繪制要切換的狀態(tài)
.on:after {
content: 'ON';
border-radius:30px;
transform: translate(56px, 0);
color:transparent;
background-color:#4BD429;
}
仿IOS-3.jpg
- 最后一步决摧,寫JS代碼進行切換
實際上,在CSS的切換之中凑兰,toggleClass是最為方便的掌桩。
但是!F币 拘鞋!
這種切換方法不能切換你要觸發(fā)的JS事件,
畢竟矢门,我們畫按鈕是為了完成某些功能盆色,
所以我采用的是這種方式,但也許并不是最好的
var zn=0;
$('.button').click(function(e){
if(zn==1){
$(this).removeClass("on").addClass("off");
//此處可填要觸發(fā)的事件
zn=0;
}else{
$(this).removeClass("off").addClass("on");
//此處可填要觸發(fā)的事件
zn=1;
}
});
到此,一個完整的開關(guān)按鈕就繪制完成了
感謝你能花3~5分鐘的時間閱覽我不專業(yè)的教程
PS:昨天要繪制一個按鈕控制燈泡的開關(guān)(實際上就是切換背景圖片)祟剔,然后我四周一看隔躲,看到了墻壁上的一個公牛開關(guān),既然是控制電燈的物延,我就想玩一玩仿真開關(guān)宣旱,忍著中午的睡意,還真勉強的給繪制出來了
繪制過程并不復雜叛薯,我也就不細說了浑吟,貼下效果圖和代碼,感興趣的可以自行看一下
仿真開關(guān).jpg
仿真-2.jpg
PS:我引用了一個初始化的CSS文件耗溜,可能需要
box-sizing:border-box;
<style type="text/css">
/*開關(guān)的輪廓*/
.button{
display: block;
position: relative;
width:160px;
height:180px;
border-radius: 5px;
background-color: #f1f1f1;
}
.button2{
display: block;
position: relative;
width:160px;
height:180px;
border-radius: 5px;
background-color: #f1f1f1;
}
/*指示燈*/
.indicate{
display: block;
position: absolute;
margin:60px 0 0 70px;
width: 20px;
height: 4px;
border-radius: 2px;
background-color: #A8C1C2;
z-index: 1;
transition: all 200ms;
}
.indicate_yes{
margin:69px 0 0 70px;
background-color: #A3D7E7;
}
/*開關(guān)內(nèi)部的小按鈕*/
.button:after{
display: block;
position: absolute;
top:40px;
bottom: 40px;
left:20px;
right:20px;
line-height: 52px;
border:1px solid #FFF;
transition: all 200ms;
}
.button2:after{
display: block;
position: absolute;
top:49px;
bottom: 31px;
left:20px;
right:20px;
line-height: 52px;
border:1px solid #FFF;
transition: all 200ms;
}
/*默認狀態(tài)的小按鈕*/
.on:after {
content: '';
border-radius: 5px;
/* CSS3的顏色漸變凸顯按鈕的凸出感 */
background: linear-gradient(#fff, #f2f2f2 80%,#fff);
/* CSS3的影音的綜合應用组力,繪制按鈕的邊緣,給予立體感 */
box-shadow: 0 1px 0 0 #fff,
0 3px 0.5px 0 #E7E9EA,
0 5px 0.5px 0 #DEDFDF,
0 6px 0.5px 0 #CCCCCD,
0 7px 0.5px 0 #C5C7C7,
0 8px 2px 0 #818283,
0 9px 2px 0 #A7A8A8;
}
/*關(guān)閉后的小按鈕*/
.off:after {
content: '';
border-radius: 5px;
background: linear-gradient(#fff, #f2f2f2 80%,#fff);
box-shadow: 0 -1px 0 0 #fff,
0 -3px 0.5px 0 #E7E9EA,
0 -5px 0.5px 0 #DEDFDF,
0 -6px 0.5px 0 #CCCCCD,
0 -7px 0.5px 0 #C5C7C7,
0 -8px 2px 0 #818283,
0 -9px 2px 0 #A7A8A8;
}
</style>
/* JS代碼 */
<script type="text/javascript">
$('.button').click(function(e) {
var toggle = this;
e.preventDefault();
$(toggle).toggleClass('on')
.toggleClass('off')
.toggleClass("button2");
//指示燈亮/滅
$(this).children(".indicate")
.toggleClass("indicate_yes");
});
//localStorage.clear();
</script>