開發(fā)自己的checkbox

CheckBox

效果圖

每日美圖

html結(jié)構(gòu)

            <div class="wch-checkbox-outline">
                <div class="wch-checkbox">
                    <div class="on">    
                        <span>ON</span>
                    </div>
                    <div class="separator-line">
                    </div>
                    <div class="off">   
                        <span>OFF</span>
                    </div>
                </div>
           </div>

主體由5個(gè)部分組成

  1. checkbox 外框
  2. checkbox主體
  3. on塊
  4. 灰色的分割線
  5. off塊

CSS

*{

    padding: 0;
    margin: 0;
    overflow: hidden;
}


html,body{
    height: 100%;
    font-size: 20px;
}

.demo{
    width: 100%;
    height: 100%;
    display: flex;
    justify-content: center;
    align-items: center;
    background-color: #fff;
}

.demo-container{
    
    display: block;

}


.wch-checkbox-outline{
    width:9rem;
    height: 3rem;
    border-radius: 4px;
    display: block;
    background-color: #f1eac7;
    box-sizing: border-box;
}

.wch-checkbox-outline .wch-checkbox{
    width: 100%;
    height: 100%;
    box-sizing: border-box;
    display: flex;
}




.wch-checkbox-outline .wch-checkbox .on{
    width:  80%;
    height: 100%;
    box-sizing: border-box;
    background-color:           #ffd8c3;
    display: flex;
    justify-content: center;
    align-items: center;
    transition:all 1s  ease 0.2s;
}


.wch-checkbox-outline .wch-checkbox .separator-line{
    width: 2%;
    height: 100%;
    box-sizing: border-box;
    background-color: #778899;
    display: flex;
    opacity:0.8;
    transform:rotate(0deg);

}


.wch-checkbox-outline .wch-checkbox .off{
    width: 18%;
    height: 100%;
    box-sizing: border-box;
    display: flex;
    justify-content: center;
    align-items: center;
    background-color:       #eaf3c9;
    transition:all  1s  ease 0.2s;
    opacity:0.3;
}


.wch-checkbox-outline .wch-checkbox .on span{
    
    width: 50%;
    color:  #fdb5b9;
    font: 1rem Arial,Verdana,"宋體";
    overflow: hidden;
    text-align: center;

}

.wch-checkbox-outline .wch-checkbox .off span{
    width: 50%;
    color: #bbbbee;
    font: 1rem Arial,Verdana,"宋體";
    overflow: hidden;
    text-align: center;
}

css的內(nèi)容有些多我會(huì)一個(gè)一個(gè)講解我當(dāng)時(shí)的思路

*{

    padding: 0;
    margin: 0;
    overflow: hidden;
}


html,body{
    height: 100%;
    font-size: 20px;
}

.demo{
    width: 100%;
    height: 100%;
    display: flex;
    justify-content: center;
    align-items: center;
    background-color: #fff;
}

.demo-container{
    
    display: block;

}

這一部分主要時(shí)全局消除padding 和 margin 避免計(jì)算大小的麻煩 并設(shè)置一下超出顯示區(qū)域時(shí)的反饋為隱藏;
后面設(shè)置html和body的高度為100%因?yàn)閔tml默認(rèn) 寬度100%時(shí) 是占據(jù)整個(gè)屏寬的 高度是父容器的大小,而頂級(jí)的html或者body沒有設(shè)置為100%的話,那高度一般都是有容器內(nèi)的元素大小決定的,所以這邊設(shè)置為100%是為了配合 demo 的樣式 width: 100%; height: 100%; display: flex;justify-content: center;align-items: center;讓我們演示的 組件能夠居中的顯示在屏幕中間,demo-container樣式有沒有都一樣這邊習(xí)慣塊級(jí)元素所以又加了一層 并設(shè)置 css display:block;。

.wch-checkbox-outline{
    width:9rem;
    height: 3rem;
    border-radius: 4px;
    display: block;
    background-color: #f1eac7;
    box-sizing: border-box;
}

.wch-checkbox-outline .wch-checkbox{
    width: 100%;
    height: 100%;
    box-sizing: border-box;
    display: flex;
}

wch-checkbox-outline設(shè)置了外邊框的圓角 wch-checkbox設(shè)置內(nèi)部布局方式為flex

.wch-checkbox-outline .wch-checkbox .on{
    width:  80%;
    height: 100%;
    box-sizing: border-box;
    background-color:   #ffd8c3;
    display: flex;
    justify-content: center;
    align-items: center;
    transition:all 1s  ease 0.2s;
}


.wch-checkbox-outline .wch-checkbox .separator-line{
    width: 2%;
    height: 100%;
    box-sizing: border-box;
    background-color: #778899;
    display: flex;
    opacity:0.8;
    transform:rotate(0deg);

}


.wch-checkbox-outline .wch-checkbox .off{
    width: 18%;
    height: 100%;
    box-sizing: border-box;
    display: flex;
    justify-content: center;
    align-items: center;
    background-color:       #eaf3c9;
    transition:all  1s  ease 0.2s;
    opacity:0.3;
}


.wch-checkbox-outline .wch-checkbox .on span{
    
    width: 50%;
    color:  #fdb5b9;
    font: 1rem Arial,Verdana,"宋體";
    overflow: hidden;
    text-align: center;

}

.wch-checkbox-outline .wch-checkbox .off span{
    width: 50%;
    color: #bbbbee;
    font: 1rem Arial,Verdana,"宋體";
    overflow: hidden;
    text-align: center;
}

這部分分別設(shè)置了on 分割線 和 off 以及 on和off內(nèi)的文字樣式 這邊需要注意的時(shí)為了點(diǎn)擊時(shí)顏色的變化需要在on和 off這兩個(gè)div設(shè)置 transition:all 1s ease 0.2s;

Js文件

$(".wch-checkbox .on").on("click",function(){

        $(this).css("width" ,"80%" );
        $(this).css("opacity" ,"1" );
        $(".wch-checkbox .off").css("width" ,"18%" );
        $(".wch-checkbox .off").css("opacity" ,"0.3" );
        $(".wch-checkbox").data("checked",true);

})

$(".wch-checkbox .off").on("click",function(){

        $(this).css("width" ,"80%" );
        $(this).css("opacity" ,"1" );
        $(".wch-checkbox .on").css("width" ,"18%" );
        $(".wch-checkbox .on").css("opacity" ,"0.3" );
        $(".wch-checkbox").data("checked",false);

})

組件以來jquery-3.4.1 主要綁定的是點(diǎn)擊on或者off時(shí)設(shè)置 checkbox的 checked 屬性為true或者false 還有就是on和 off被點(diǎn)擊時(shí) 寬度 顏色和透明度的細(xì)節(jié)設(shè)置。

源碼下載

源代碼可以點(diǎn)擊鏈接下載

??

至此基本講解完畢,人生的意義也許就是留下些什么吧 那就創(chuàng)造吧 ??。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 第一部分 HTML&CSS整理答案 1. 什么是HTML5? 答:HTML5是最新的HTML標(biāo)準(zhǔn)。 注意:講述HT...
    kismetajun閱讀 28,819評(píng)論 1 45
  • HTML 5 HTML5概述 因特網(wǎng)上的信息是以網(wǎng)頁的形式展示給用戶的,因此網(wǎng)頁是網(wǎng)絡(luò)信息傳遞的載體。網(wǎng)頁文件是用...
    阿啊阿吖丁閱讀 4,953評(píng)論 0 0
  • 問答題47 /72 常見瀏覽器兼容性問題與解決方案? 參考答案 (1)瀏覽器兼容問題一:不同瀏覽器的標(biāo)簽?zāi)J(rèn)的外補(bǔ)...
    _Yfling閱讀 14,156評(píng)論 1 92
  • meta基礎(chǔ)知識(shí) H5頁面窗口自動(dòng)調(diào)整到設(shè)備寬度,并禁止用戶縮放頁面 忽略將頁面中的數(shù)字識(shí)別為電話號(hào)碼 忽略And...
    Mycro閱讀 620評(píng)論 0 2
  • H5移動(dòng)端知識(shí)點(diǎn)總結(jié) 閱讀目錄 移動(dòng)開發(fā)基本知識(shí)點(diǎn) calc基本用法 box-sizing的理解及使用 理解dis...
    Mx勇閱讀 4,831評(píng)論 0 26

友情鏈接更多精彩內(nèi)容