带有选中和后标记的CSS表单复选框样式[重复]

Posted

技术标签:

【中文标题】带有选中和后标记的CSS表单复选框样式[重复]【英文标题】:css form checkbox styling with checked and after tags [duplicate] 【发布时间】:2013-05-02 00:33:22 【问题描述】:

我正在尝试在不使用 javascript 或 JQuery 的情况下设计表单。它包括一系列复选框。这个想法是如果未选中复选框,则在复选框之后显示某个 gif。否则,在它之后不显示任何内容。这是我的代码:

input[type=checkbox]::after

  content: url(images/unchecked_after.gif);
  position:relative;
  left:15px;
  z-index:100;

input[type=checkbox]:checked::after

  content:"";

它适用于 Chrome,但似乎不适用于 Firefox 或 IE。怎么了?

【问题讨论】:

input 是一个内容模型为空的元素——由于 ::after 伪元素被渲染为它们所应用元素的子节点,因此存在冲突。有些浏览器无论如何都允许这样做——有些则不允许。改用相邻的兄弟组合器来格式化您放在输入元素之后的元素。 w3.org/TR/2011/REC-css3-selectors-20110929/… 谢谢,这就解释了。但我仍然无法让它工作。例如,如果我在复选框后放置“p”标签,则以下 CSS 选择器不起作用: input[type=checkbox]:checked + p:after 【参考方案1】:

对我有用的跨浏览器解决方案是在复选框输入之后包含一个空标签(类“checkbox_label”),然后设置 IT 样式而不是复选框。

input[type=checkbox] + label:after

  content: url(images/unchecked_after.gif);
  position:relative;
  left:0px;
  top:1px;
  z-index:100;


input[type=checkbox]:checked + label:after

  content:"";


.checkbox_label

  height:0px;
  width:0px;
  display:inline-block;
  float:left;
  position:relative;
  left:20px;
  z-index:100;

【讨论】:

嘿,谢谢你的回答,你能提供一些参考或者什么叫 + 运算符...?在这个..上下文中 element1+element2 selector 选择紧跟在 element1 之后的 element2。【参考方案2】:

显然,规范不支持使用 ::before::after 伪元素。您的问题已回答here。希望对您有所帮助!

【讨论】:

我在 Firefox 20 和 IE10 中进行测试,这就是为什么我认为我做错了什么......但是什么? 我在 jsfiddle 上用 firefox 试了一下,可以重现你的错误。让我看看能不能找到解决办法。 我想我找到了问题所在。我已将其编辑到我的答案中。 不幸的是,将“输入”包装在“跨度”标签中也不起作用。该死,我想我得继续尝试不同的东西...... 嗯...将输入包装在 span 标签中对我有用。您确定将 ::after 样式应用于 span 标签而不是 input 标签吗?

以上是关于带有选中和后标记的CSS表单复选框样式[重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何根据复选框值设置标签样式? [复制]

使用带有复选框的html发布功能[重复]

内部带有 jQ​​uery 对话框的表单不提交

样式下拉列表与复选框

选中复选框时,数据表视图将值插入到字段中

[选中复选框时更改其他标签的样式