使用隱藏複選框創建具有狀態的樣式 - 例如,當動畫下拉,自定義複選框等時 - 是一種非常流行的技術。使用JavaScript來做同樣的事也很容易。哪個更適合CSS狀態:checkbox或javascript?
這兩種策略都有什麼缺點嗎?我在任何一個策略尋找性能差異,呈現/重繪/迴流,兼容性,代碼規範,SEO等
function toggle() {
var cb = document.getElementById('checkbox-js');
if (cb.className === 'checkbox') {
cb.className = "checkbox checked";
} else {
cb.className = "checkbox";
}
}
input[type="checkbox"] {
display: none;
}
.checkbox {
display: inline-block;
font-size: 20px;
border: 1px solid #AAA;
width: 32px;
height: 32px;
line-height: 32px;
vertical-align: middle;
}
.checkbox:before {
width: 32px;
height: 32px;
content: "x";
color: white;
text-align: center;
display: inline-block;
}
input[type="checkbox"]:checked + .checkbox:before {
color: #333;
}
.checkbox.checked:before {
color: #333;
}
<div class="css-only">
<label>
CSS Only:
<input placeholder="Name" type="checkbox" />
<span class="checkbox"></span>
</label>
</div>
<br>
<br>
<br>
<div class="with-js">
<label>
With JS:
<span onClick="toggle()" class="checkbox" id="checkbox-js"></span>
</label>
</div>
是的,我想如果我想要的只是一個複選框,這是一個有效的點。我後悔在我的例子中使用複選框:P – ecc