javascript - 当与其关联的元素被禁用时,我可以将 <label> 变灰吗?

标签 javascript html css

当与其关联的 input 元素被禁用时,我想禁用 label。这是我的代码:

                <!-- TODO: Gray this label out initially. -->
                <label id="spacesPerIndentLabel">Spaces per indent: 4</label>
                <br>
                <input id="spacesPerIndent" type="text" disabled>

我不知道如何禁用标签。我尝试将 disabled 放在标签上,但没有成功,因为 label isn't an element that supports disabled .我也想到了选择

label + input:disabled { ... }

但这会选择禁用的 input 而不是 label。经过进一步研究,我发现 CSS 没有“前一个兄弟”选择器(比如 + 是“下一个兄弟”选择器)。

最佳答案

您可以使用 css flexbox 来定位您的元素。

https://jsfiddle.net/c1d81r8b/4/

HTML:

<div class="container">
  <input id="test1" type="text">
  <label for="test1">Test 1 label</label>
</div>
<br>
<br>
<div class="container">
  <input id="test2" type="text" disabled>
  <label for="test2">Test 2 label</label>
</div>

CSS:

.container {
  display: flex;
  flex-direction: column;
}

.container label {
  order: 1;
}

.container input {
  order: 2;
}

.container input[disabled] + label {
  background: grey;
}

这让您可以使用 CSS 设置元素的显示顺序,并允许您使用兄弟选择器。

参见 https://caniuse.com/#feat=flexbox浏览器支持说明。

关于javascript - 当与其关联的元素被禁用时,我可以将 <label> 变灰吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48372570/

相关文章:

css - jqGrid 中的行选择器列

javascript - 在 gulp 任务中删除文件

javascript - Highcharts 栏边框

javascript - 无法在 ng-repeat 中的复选框上设置 ng 模型

具有等高列的 CSS Fluid-Fixed 布局

javascript - HTML 中的可滚动堆叠图像

javascript - 如何使工具提示在 mouseenter 上保持可见?

php - mod_rewrite 的简单通配符?

html - 从下到右响应式布局列中的动态字段

html - 连续动态对齐缩略图