问题描述
我需要使用html和CSS创建自定义复选框。到目前为止,我有:
HTML / CSS:
$ b $ 已勾选复选框应该是一个复选标记,其周围是正方形,而不仅仅是复选标记。搜索答案时,我只发现使用UTF-8字符或图像显示复选标记的情况。我无法使用这两者中的任何一种来完成我想要完成的任务。我只能使用纯CSS和HTML。有什么建议?
codepen在这里:
问题在于您使用的是相同的用于方形边框的伪元素和复选标记。简单的解决方案是继续在边界之前使用:before 伪元素,然后在之后使用:伪>元素的复选标记。
您必须将:伪元素相对到 .checkbox-custom 标签元素
以下是更新的代码:
.checkbox-custom {display:none;}。checkbox-custom-label {display:inline-block;位置:相对; vertical-align:middle; margin:5px; cursor:pointer;}。checkbox-custom + .checkbox-custom-label:before {content:'';背景:#fff; border-radius:5px; border:2px solid #ddd;显示:inline-block; vertical-align:middle;宽度:10px; height:10px; padding:2px; margin-right:10px;} checkbox-custom:checked + .checkbox-custom-label:after {content:; padding:2px;位置:绝对;宽度:1px; height:5px;边框:纯蓝色; border-width:0 3px 3px 0;转换:旋转(45度); top:2px; left:5px;}
< h3>复选框< /& H3>< DIV> < input id =checkbox-1class =checkbox-customname =checkbox-1type =checkbox> < label for =checkbox-1class =checkbox-custom-label>第一选择< / label>< / div>< div> < input id =checkbox-2class =checkbox-customname =checkbox-2type =checkbox> < label for =checkbox-2class =checkbox-custom-label>第二选择< / label>< / div>
I need to create a custom checkbox using only html and CSS. So far I have:
HTML/CSS:
.checkbox-custom { opacity: 0; position: absolute; } .checkbox-custom, .checkbox-custom-label { display: inline-block; vertical-align: middle; margin: 5px; cursor: pointer; } .checkbox-custom + .checkbox-custom-label:before { content: ''; background: #fff; border-radius: 5px; border: 2px solid #ddd; display: inline-block; vertical-align: middle; width: 10px; height: 10px; padding: 2px; margin-right: 10px; text-align: center; } .checkbox-custom:checked + .checkbox-custom-label:before { content: ""; display: inline-block; width: 1px; height: 5px; border: solid blue; border-width: 0 3px 3px 0; transform: rotate(45deg); -webkit-transform: rotate(45deg); -ms-transform: rotate(45deg); border-radius: 0px; margin: 0px 15px 5px 5px; }
<div> <input id="checkbox-1" class="checkbox-custom" name="checkbox-1" type="checkbox"> <label for="checkbox-1" class="checkbox-custom-label">First Choice</label> </div> <div> <input id="checkbox-2" class="checkbox-custom" name="checkbox-2" type="checkbox"> <label for="checkbox-2" class="checkbox-custom-label">Second Choice</label> </div>
The checked checkbox should be a checkmark with the square bordered around it instead of just a checkmark. Searching for answers, I have only found cases where the checkmark is displayed using a UTF-8 character or an image. I am not able to use either of these for what I am trying to accomplish. I am only able to use plain CSS and HTML. Any suggestions?
codepen here: http://codepen.io/alisontague/pen/EPXagW?editors=110
The problem is that you are using the same pseudo element for the square border and the checkmark. The simple solution would be to continue using the :before pseudo element for the border, and then use an :after pseudo element for the checkmark.
You would have to absolutely position the :after pseudo element relative to the parent .checkbox-custom label element.
Here is the updated code:
.checkbox-custom { display: none; } .checkbox-custom-label { display: inline-block; position: relative; vertical-align: middle; margin: 5px; cursor: pointer; } .checkbox-custom + .checkbox-custom-label:before { content: ''; background: #fff; border-radius: 5px; border: 2px solid #ddd; display: inline-block; vertical-align: middle; width: 10px; height: 10px; padding: 2px; margin-right: 10px; } .checkbox-custom:checked + .checkbox-custom-label:after { content: ""; padding: 2px; position: absolute; width: 1px; height: 5px; border: solid blue; border-width: 0 3px 3px 0; transform: rotate(45deg); top: 2px; left: 5px; }
<h3>Checkboxes</h3> <div> <input id="checkbox-1" class="checkbox-custom" name="checkbox-1" type="checkbox"> <label for="checkbox-1" class="checkbox-custom-label">First Choice</label> </div> <div> <input id="checkbox-2" class="checkbox-custom" name="checkbox-2" type="checkbox"> <label for="checkbox-2" class="checkbox-custom-label">Second Choice</label> </div>
这篇关于自定义复选框仅使用CSS和HTML的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!