html - 复选框黑客语法的困难

标签 html css checkbox

我想在选中复选框时既设置标签样式又显示 div。我找到了做其中之一的方法,但不是两者都做,我不明白为什么。请注意,两个示例中的 CSS 完全相同,并且是:

input {
  display: none
}

.layerpic {
  height: 100px;
  width: 100px;
  background: red;
  opacity: 1;
  float: left;
}

label {
  clear: none;
  float: left;
}

.xyz input:checked + .layerpic{
    opacity: 0.5;
}

.xyz input:checked + label {
    font-weight: bold;
}

现在是 HTML。此示例允许 div 受到影响,但标签不会受到影响。请注意,唯一的区别在于标签位于输入之前的 html:

<div class ="xyz">
  <label class="ribs" for="hider2">Hide layer</label>
  <input type="checkbox" id="hider2">
  <div class="layerpic"> hi
  </div>
</div>

此示例允许标签受到影响,但不会影响 div:

<div class ="xyz">
  <input type="checkbox" id="hider2">
  <label class="ribs" for="hider2">Hide layer</label>
  <div class="layerpic"> hi
  </div>
</div>

谁能解释为什么仅通过翻转哪个 HTML 先出现就会影响不同的元素,并且是否有可能在选中复选框时同时影响两个元素?

最佳答案

您需要重新排列您的 HTML,然后使用 + ~ 选择器

input {
  display: none
}

.layerpic {
  height: 100px;
  width: 100px;
  background: red;
  opacity: 1;
  float: left;
}

label {
  clear: none;
  float: left;
}

.xyz input:checked+.layerpic {
  opacity: 0.5;
}

.xyz input:checked~label {
  font-weight: bold;
}
<div class="xyz">
  <input type="checkbox" id="hider2">
  <div class="layerpic"> hi</div>
  <label class="ribs" for="hider2">Hide layer</label>
</div>

关于html - 复选框黑客语法的困难,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43786454/

相关文章:

css - CSS的性能与代码库组织

javascript - 限制可选择的 DOM 复选框

java - 如何使用Java代码在Android中将复选框添加到 'Grid View'

javascript - 我应该将 Javascript 放在 HTML 文件的头部还是主体中?

html - 内联对齐标题和文本区域但填充窗口宽度

html - 文本不会留在 DIV 内

python - 带有附加命令的 Tkinter 复选框

javascript - 如何从应用的 css 类中清除表单?

html - last-child 的 Bootstrap 导航边框

html - 使用CSS缩小div中的文本字体大小