2017-03-02 76 views
0

是否可以添加一个:after伪元素:enabled伪类的某些类型/类只在纯CSS?添加:在之后:启用CSS伪类

为样本,根据您的饲料的背影,我想大约有残疾人无线电无边框(原谅我不能定心:after元素):https://jsfiddle.net/msdobrescu/z398jjoj/20/

+0

如果你能告诉我们你想要做什么,我们也许能够提供一个很好的解决方案,而不是你can_ _yes或_No你can't_ – LGSon

+0

嗨迈克,看到基于新增小提琴比如我更新的答案,如果您需要进一步的帮助,请在下面留言。 – Stickers

+0

嗯,这很好,但我从asp.net获得标记,所以我不会改变它。 – mike

回答

2

:enabled CSS伪类表示任何支持元素。它通常用于我相信的表单元素。除非你声明:disabled为元素,否则:enabled是默认状态。

而且大多数表单元素不允许有任何伪元素,如<input><select><textarea> ...但有些是允许的,如<button>

button:enabled:after { 
 
    content: "*" 
 
}
<button>Button</button> 
 
<button enabled>Button</button> 
 
<button disabled>Button</button>

对于不具有伪元素的元素,你可以使用兄弟选择+~,跨度标签来达到同样的效果。根据你的代码

input[type="radio"]:enabled + span:after { 
 
    content: "*" 
 
}
<input name="test" type="radio"> 1 <span></span> 
 
<input name="test" type="radio" enabled> 2 <span></span> 
 
<input name="test" type="radio" disabled> 3 <span></span>

例子,也是在圆的中心所做的收音机。

  • jsFiddle - 带修改标记结构的纯CSS。

  • jsFiddle - 使用jQuery和原始标记结构。

1

:after只能与具有元素工作关闭标签+它不适用于标签<select>。 而且:enabled通常与表单一起使用,所以不会一起工作。

如果您使用表格更容易将其元素包装在<div>中,然后只需将其添加:after即可。

您也可以分享您的代码以更好地理解问题。

2

你不能那样做。您无法在表单元素上添加:before:after伪。基本上它们在容器元素内呈现。

你可以做的是除了你输入一个空元素最好的,说span和使用选择像

input[type=text]:enabled + span:after { 
    /* Props goes here */ 
}