2017-04-20 58 views
0

我想用CSS做一個自定義複選框,但不知道它是如何做到的。如何在自定義複選框中創建刻度線?

.custom-checkbox { 
 
    border: 3px solid #7e8a94; 
 
    float: right; 
 
    height: 20px; 
 
    width: 20px; 
 
    border-radius: 5px; 
 
    cursor: pointer; 
 
    display: inline-block; 
 
} 
 

 
.custom-checkbox.hover { 
 
    border: 3px solid #43D8B0; 
 
} 
 

 
.custom-checkbox.active { 
 
    border: 3px solid #43D8B0; 
 
} 
 

 
.custom-checkbox.active.checkmark {}
<input type='checkbox' class='checkbox'> 
 
<div class="custom-checkbox"> 
 
    <div class="checkmark"></div> 
 
</div>

我添加activecustom-checkbox上檢查,但不知道如何在一個盒子裏創建一個勾呢?

回答

2

您必須手動定製您的input &以使用僞元素的方式添加label以在您想要的複選框中獲得所需的效果。

另外,你可以在你的css中使用content: '✔';來點擊打勾。

我建你演示引用,請檢查下面的代碼:

[type="checkbox"]:not(:checked), 
 
[type="checkbox"]:checked { 
 
    position: absolute; 
 
    left: -9999px; 
 
} 
 

 
[type="checkbox"]:not(:checked)+label, 
 
[type="checkbox"]:checked+label { 
 
    position: relative; 
 
    padding-left: 25px; 
 
    cursor: pointer; 
 
} 
 

 
[type="checkbox"]:not(:checked)+label:before, 
 
[type="checkbox"]:checked+label:before { 
 
    content: ''; 
 
    position: absolute; 
 
    left: 0; 
 
    top: -5px; 
 
    width: 40px; 
 
    height: 40px; 
 
    background: #fff; 
 
    border-radius: 3px; 
 
    box-shadow: inset 0 1px 3px rgba(0, 0, 0, .1); 
 
    border-radius: 50%; 
 
    background-color: #5cf1b3; 
 
    outline: none; 
 
} 
 

 
[type="checkbox"]:not(:checked)+label:after, 
 
[type="checkbox"]:checked+label:after { 
 
    content: '✔'; 
 
    position: absolute; 
 
    top: 8px; 
 
    left: 10px; 
 
    font-size: 24px; 
 
    line-height: 0.8; 
 
    color: #fff; 
 
    transition: all .2s; 
 
} 
 

 
[type="checkbox"]:not(:checked)+label:after { 
 
    opacity: 0; 
 
    transform: scale(0); 
 
} 
 

 
[type="checkbox"]:checked+label:after { 
 
    opacity: 1; 
 
    transform: scale(1); 
 
}
<p> 
 
    <input type="checkbox" id="test1" /> 
 
    <label for="test1"></label> 
 
</p>

0

您可以在下面片斷

/* Base for label styling */ 
 
[type="checkbox"]:not(:checked), 
 
[type="checkbox"]:checked { 
 
    position: absolute; 
 
    left: -9999px; 
 
} 
 
[type="checkbox"]:not(:checked) + label, 
 
[type="checkbox"]:checked + label { 
 
    position: relative; 
 
    padding-left: 1.95em; 
 
    cursor: pointer; 
 
} 
 

 
/* checkbox aspect */ 
 
[type="checkbox"]:not(:checked) + label:before, 
 
[type="checkbox"]:checked + label:before { 
 
    content: ''; 
 
    position: absolute; 
 
    left: 0; top: 0; 
 
    width: 1.25em; height: 1.25em; 
 
    border: 2px solid #ccc; 
 
    background: #fff; 
 
    border-radius: 4px; 
 
    box-shadow: inset 0 1px 3px rgba(0,0,0,.1); 
 
} 
 
/* checked mark aspect */ 
 
[type="checkbox"]:not(:checked) + label:after, 
 
[type="checkbox"]:checked + label:after { 
 
    content: '✔'; 
 
    position: absolute; 
 
    top: .1em; left: .3em; 
 
    font-size: 1.3em; 
 
    line-height: 0.8; 
 
    color: #09ad7e; 
 
    transition: all .2s; 
 
} 
 
/* checked mark aspect changes */ 
 
[type="checkbox"]:not(:checked) + label:after { 
 
    opacity: 0; 
 
    transform: scale(0); 
 
} 
 
[type="checkbox"]:checked + label:after { 
 
    opacity: 1; 
 
    transform: scale(1); 
 
} 
 
/* disabled checkbox */ 
 
[type="checkbox"]:disabled:not(:checked) + label:before, 
 
[type="checkbox"]:disabled:checked + label:before { 
 
    box-shadow: none; 
 
    border-color: #bbb; 
 
    background-color: #ddd; 
 
} 
 
[type="checkbox"]:disabled:checked + label:after { 
 
    color: #999; 
 
} 
 
[type="checkbox"]:disabled + label { 
 
    color: #aaa; 
 
} 
 
/* accessibility */ 
 
[type="checkbox"]:checked:focus + label:before, 
 
[type="checkbox"]:not(:checked):focus + label:before { 
 
    border: 2px dotted blue; 
 
} 
 

 
/* hover style just for information */ 
 
label:hover:before { 
 
    border: 2px solid #4778d9!important; 
 
}
<p> 
 
    <input type="checkbox" id="test1" /> 
 
    <label for="test1">Red</label> 
 
    </p> 
 
    <p> 
 
    <input type="checkbox" id="test2" checked="checked" /> 
 
    <label for="test2">Yellow</label> 
 
    </p> 
 
    <p> 
 
    <input type="checkbox" id="test3" checked="checked" disabled="disabled" /> 
 
    <label for="test3">Green</label> 
 
    </p> 
 
    <p> 
 
     <input type="checkbox" id="test4" disabled="disabled" /> 
 
     <label for="test4">Brown</label> 
 
    </p>
定製檢查不同,不同的狀態 checkbox

1

您將需要使用:checked僞類。在下面的示例中,它使用span標記創建自定義複選框樣式,並使用僞元素:before以及特殊字符作爲標記。

.custom-checkbox input { 
 
    display: none; 
 
} 
 

 
.custom-checkbox span { 
 
    border: 3px solid #7e8a94; 
 
    float: right; 
 
    height: 20px; 
 
    width: 20px; 
 
    border-radius: 5px; 
 
    cursor: pointer; 
 
    display: flex; 
 
    justify-content: center; 
 
    align-items: center; 
 
} 
 

 
.custom-checkbox:hover span, 
 
.custom-checkbox input:checked + span { 
 
    border: 3px solid #43D8B0; 
 
} 
 

 
.custom-checkbox input:checked + span:before { 
 
    content: "✔"; 
 
}
<label class="custom-checkbox"> 
 
    <input type="checkbox"> 
 
    <span></span> 
 
</label>