教你用CSS3/JS繪制自己想要的按鈕

繪制按鈕其實很簡單函荣,只不過對于還沒自己動手繪制的“新人”來說唾戚,會有一點不知所措的感覺(其實我前天就是如此);
為了方便大家的學習警检,我決定寫篇基礎(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>

END

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末抖拴,一起剝皮案震驚了整個濱河市燎字,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌阿宅,老刑警劉巖候衍,帶你破解...
    沈念sama閱讀 221,576評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異洒放,居然都是意外死亡蛉鹿,警方通過查閱死者的電腦和手機往湿,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,515評論 3 399
  • 文/潘曉璐 我一進店門妖异,熙熙樓的掌柜王于貴愁眉苦臉地迎上來惨好,“玉大人,你說我怎么就攤上這事随闺。” “怎么了蔓腐?”我有些...
    開封第一講書人閱讀 168,017評論 0 360
  • 文/不壞的土叔 我叫張陵矩乐,是天一觀的道長。 經(jīng)常有香客問我回论,道長散罕,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,626評論 1 296
  • 正文 為了忘掉前任傀蓉,我火速辦了婚禮欧漱,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘葬燎。我一直安慰自己误甚,他們只是感情好,可當我...
    茶點故事閱讀 68,625評論 6 397
  • 文/花漫 我一把揭開白布谱净。 她就那樣靜靜地躺著窑邦,像睡著了一般。 火紅的嫁衣襯著肌膚如雪壕探。 梳的紋絲不亂的頭發(fā)上冈钦,一...
    開封第一講書人閱讀 52,255評論 1 308
  • 那天,我揣著相機與錄音李请,去河邊找鬼瞧筛。 笑死,一個胖子當著我的面吹牛导盅,可吹牛的內(nèi)容都是我干的较幌。 我是一名探鬼主播,決...
    沈念sama閱讀 40,825評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼认轨,長吁一口氣:“原來是場噩夢啊……” “哼绅络!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起嘁字,我...
    開封第一講書人閱讀 39,729評論 0 276
  • 序言:老撾萬榮一對情侶失蹤恩急,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后纪蜒,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體衷恭,經(jīng)...
    沈念sama閱讀 46,271評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,363評論 3 340
  • 正文 我和宋清朗相戀三年纯续,在試婚紗的時候發(fā)現(xiàn)自己被綠了随珠。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片灭袁。...
    茶點故事閱讀 40,498評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖窗看,靈堂內(nèi)的尸體忽然破棺而出茸歧,到底是詐尸還是另有隱情,我是刑警寧澤显沈,帶...
    沈念sama閱讀 36,183評論 5 350
  • 正文 年R本政府宣布软瞎,位于F島的核電站,受9級特大地震影響拉讯,放射性物質(zhì)發(fā)生泄漏涤浇。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,867評論 3 333
  • 文/蒙蒙 一魔慷、第九天 我趴在偏房一處隱蔽的房頂上張望只锭。 院中可真熱鬧,春花似錦院尔、人聲如沸蜻展。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,338評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽铺呵。三九已至,卻和暖如春隧熙,著一層夾襖步出監(jiān)牢的瞬間片挂,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,458評論 1 272
  • 我被黑心中介騙來泰國打工贞盯, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留音念,地道東北人。 一個月前我還...
    沈念sama閱讀 48,906評論 3 376
  • 正文 我出身青樓躏敢,卻偏偏與公主長得像闷愤,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子件余,可洞房花燭夜當晚...
    茶點故事閱讀 45,507評論 2 359

推薦閱讀更多精彩內(nèi)容