如果输入被禁用并且无法使其用于文本输入,我希望表单元素的标签变灰。我已尝试以下方法:
input:disabled {
background:#dddddd;
}
input:disabled+label{color:#ccc;}
<input type='checkbox' disabled id='check1'>
<label for='check1'>Check</label>
<br>
<label for='text1'>Text</label>
<input type='text' id='text1' disabled>
Js Fiddle
样式对复选框标签有效,但对文本标签无效。复选框是唯一允许你通过css设计标签样式的输入类型吗?
我用Firefox进行测试。
6条答案
按热度按时间wvmv3b1j1#
根据@andi的评论:
input:disabled+label
表示标签紧跟在输入之后。在HTML中,标签在文本输入之前。(但是没有CSS表示“之前”。)他说得完全正确。但这不应妨碍我们用一点小伎俩来解决问题。
第一步:交换HTML元素的顺序,使
<label>
出现在<input>
之后,这将允许样式规则按预期工作。接下来是有趣的部分:使用CSS来定位左手的文本输入标签!
odopli942#
此选择器
input:disabled+label{color:#ccc;}
以放置在禁用的输入元素之后的标注元素为目标在此代码片段中,label位于禁用的输入之后,因此label元素为灰色
在本例中,标注位于输入之前,因此选择器不会应用于标注
可能的解决方案是将元素 Package 在一个额外的div中,并将一个类名应用于div,如下所示
然后你可以这样写你的css
vltsax253#
您可以在CSS中使用属性选择器,例如https://jsfiddle.net/8pp6mpp5/1/
超文本标记语言
中央支助系统
qhhrdooz4#
您还可以使用浮点数,并始终将标签放在输入Demo之后
您必须将它 Package 在一个span(或任何其他元素)中。
超文本:
CSS:
m3eecexj5#
我也有同样的问题:我创建了一个与label完全类似的只读输入,我在输入中添加了一组css样式来达到这个目标:
在CSS中:
在css风格下,输入有一个白色的背景,没有边框,没有鼠标光标,也没有点击事件...类似于标签的结尾!
wtlkbnrh6#
如果你想把标签放在输入之前,并使标签变亮,你可以使用:has伪类和~ sibling选择器: