谁能解释一下为什么勾选我的自定义复选框时没有出现勾选并帮助我解决这个问题?我试图复制W3Schools的例子,下面是我的代码:
.bottom {
display: flex;
justify-content: space-between;
width: 300px;
}
.left {
display: flex;
flex-direction: row;
position: relative;
}
/* Hide the actual checkbox */
input[type=checkbox] {
opacity: 0;
margin-right: 4px;
}
/* Create a custom checkbox*/
.checkbox::before {
content: "";
border: none;
border-radius: 2px;
height: 16px;
width: 16px;
position: absolute;
background-color: #737373;
}
.checkbox::after {
content: "";
border: 3px solid;
border-top: 0;
border-left: 0;
width: 4px;
height: 9px;
position: absolute;
top: 1px;
left: 5px;
transform: rotate(45deg);
opacity: 0;
transition: opacity 10ms;
}
.checkbox input:checked ~ .checkbox::after {
opacity: 1;
}
<div class="bottom">
<div class="left">
<div class="checkbox" style="margin-right: 3px;">
<input type="checkbox">
</div>
<span>Remember me</span>
</div>
<span>Need help?</span>
</div>
先谢谢你了!
2条答案
按热度按时间oprakyz71#
你在CSS的最后一个块中有一个问题,就在这里:
说明:
您正在使用优先选择器选择类名
checkbox
的元素。上面的css块意味着:“搜索类checkbox
的元素,并在其内部搜索一个输入元素,这是检查:checked
和然后搜索类checkbox
的元素,这是可用的选择的输入,这是设置检查或换句话说,搜索类checkbox
的元素,它前面是input:检查的元素,但在你的html中,你没有元素后的输入标签,因此它是不工作的。此外,:after
和:before
选择器与实际的输入复选框重叠,因此您无法点击它。通过将两个选择器的z-index
设置为-1来解决这一问题。更正后的代码片段如下:
我希望我的解释清楚,解决方案也在你这边工作。干杯!
ryhaxcpt2#
您的代码中有几个错误:
1.“remember me”文本应该在一个标签中链接到输入,否则它不会被选中
1.如果你完全隐藏输入,你应该把它设置为显示无,而不是不透明度0
此外,您应该添加JavaScript,以便在单击before时触发单击输入