:checked + label 样式失效主因是HTML结构不满足相邻兄弟选择器要求:input与label必须同级紧邻、无空格换行注释,且input类型须为checkbox/radio并正确声明id;label不可包裹input;CSS需写全input:checked + label并检查优先级。
如果 :checked + label 样式没生效,大概率是 HTML 结构不满足相邻兄弟选择器的要求。
相邻兄弟选择器(+)只匹配**紧挨着**的下一个同级元素。也就是说,input 和 label 必须是同一父容器下的连续兄弟节点,中间不能有其他元素(包括空格、换行、注释等)。
:checked 伪类仅对 、 以及 有效。普通 text、button 等类型无法触发。
type 属性明确写出且拼写正确(如 type="checkbox",不是 type="check")id(虽然样式不依赖它,但关联 label 需要)如果把 input 写在 label 里面,那它们就不是兄弟关系,而是父子关系,+ 选择器完全失效。
即使结构正确,也可能被其他样式覆盖或存在低级错误:
input:checked + label(不是 :checked + label 单独写,缺少元素类型可能匹配不到)form label)或 !important 覆盖