我正在尝试通过设置我自己的单选按钮和复选框的样式来启动我的 Web 表单。为此,我隐藏了单选框/复选框本身,并使用 :after 伪类在标签上创建了一个状态指示元素,如下所示:
.pn_multi label{
display: inline-block;
border: 1px dotted #FFF;
opacity: 0.6;
text-align: center;
}
.pn_multi label:hover{
border: 1px dotted #444;
opacity: 0.8;
}
.pn_multi input[type=radio]:checked + label, .pn_multi input[type=checkbox]:checked + label {
background: #CCE6FF;
border: 1px dotted #FFF;
opacity: 1.0;
position: relative;
}
/* generic icon */
.pn_multi input[type=radio]:checked + label:after, .pn_multi input[type=checkbox] + label:after {
display: block;
position: absolute;
right: 1px;
bottom: 1px;
overflow: hidden;
/* a lot more styling here, took out for space */
}
/* specific icon colors*/
.pn_multi input[type=checkbox] + label:after {
content: "\2714 ";
background: #FF9393;
color: #F22;
border: 1px solid #F22;
}
.pn_multi input[type=radio]:checked + label:after, .pn_multi input[type=checkbox]:checked + label:after {
content: "X ";
background: #97FF97;
color: #063;
border: 1px solid #063;
}
现在,这对收音机非常有效。我点击标签,小复选框出现在标签上,没有其他。但问题是复选框:虽然选中的复选框仍然显示绿色复选框,但未选中的复选框根本不显示,而不是应该显示的红色复选框。好像
.pn_multi input[type=checkbox] + label:after
部分根本没有抓住,或者像 :checked 伪类会覆盖它的独立。
我在这里错过了什么重要的东西吗?
问候