Я пытаюсь поднять свои веб-формы, стилизуя свои собственные радиокнопки и флажки. Для этого я скрываю само радио/флажок и создаю на этикетке элемент, указывающий состояние, с помощью псевдокласса :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 перезапишет свой автономный.
Я пропустил что-то важное здесь?
С Уважением