How to style a HTML label for disabled input
我希望表单元素的标签显示为灰色,如果输入被禁用并且无法使其用于文本输入。 我尝试了以下方法:
1 2 3 4 5 6 7 8 9 10 11 | input:disabled { background:#dddddd; } input:disabled+label{color:#ccc;} <input type='checkbox' disabled id='check1'> <label for='check1'>Check</label> <label for='text1'>Text</label> <input type='text' id='text1' disabled> |
提斯
样式适用于复选框标签,但不适用于文本标签。 复选框是让您通过CSS设置标签样式的唯一输入类型吗?
我使用Firefox进行测试。
根据@andi的评论:
input:disabled+label means that the label is immediately AFTER the input. In your HTML, the label comes BEFORE the text input. (but there's no CSS for"before".)
他是完全正确的。但这并不能阻止我们以一些小技巧解决问题!
第一步:交换HTML元素顺序,以使
然后,有趣的是:使用CSS将用于文本输入的标签放置在左侧!
1 2 3 4 5 6 7 8 9 10 11 | input:disabled { background: #dddddd; } input:disabled+label { color: #ccc; } input[type=text]+label { float: left; } |
1 2 3 4 5 6 7 8 9 10 11 | <input type="checkbox" disabled="disabled" id="check1"> <label for="check1">Check</label> <br /> <input type="text" id="text1" disabled="disabled"> <label for="text1">Text</label> <br /> <input type="checkbox" id="check2"> <label for="check2">Check</label> <br /> <input type="text" id="text2"> <label for="text2">Text</label> |
您可以在CSS中使用属性选择器,例如https://jsfiddle.net/8pp6mpp5/1/
HTML
1 2 | <label disabled="disabled">Hola Mundo!</label></br> <label>Hola Mundo!</label>` |
的CSS
1 2 3 | label[disabled="disabled"]{ background-color: #AAA; } |
您还可以使用浮点数,并始终将标签放在输入演示后面
您将不得不将其包装在一个范围内(或其他任何元素)。
HTML:
1 2 3 4 5 6 7 8 9 | <span> <input type='checkbox' disabled id='check1'> <label for='check1'>Check</label> </span> <span> <input type='text1' id='text1' disabled> <label for='check'>Text</label> </span> |
CSS:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | span { display: inline-block; overflow: hidden; } input { float: right; } label { float: left; } input:disabled { background:#dddddd; } input + label { float: none; } input:disabled + label { color:#ccc; } |
此选择器
在此代码段中,标签位于禁用输入之后,因此标签元素为灰色
1 2 | <input type='checkbox' disabled id='check1'> <label for='check1'>Check</label> |
在这种情况下,标签在输入之前,因此选择器不适用于它
1 2 | <label for='text1'>Text</label> <input type='text' id='text1' disabled> |
可能的解决方案是将元素包装在一个额外的div中,然后将一个类名应用于div,类似这样
1 2 3 4 5 6 | <input type='checkbox' disabled id='check1'> <label for='check1'>Check</label> <label for='text1'>Text</label> <input type='text' id='text1' disabled> |
然后你可以这样写你的CSS
1 2 3 | .disabled label { color: #ccc; } |