【问题标题】:Difficulty with checkbox hack syntax复选框 hack 语法的困难
【发布时间】:2017-10-02 20:15:23
【问题描述】:

我想在选中复选框时设置标签样式并显示 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 css checkbox


【解决方案1】:

您需要重新排列 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>

【讨论】:

  • 感谢您的帮助!非常感谢。
猜你喜欢
  • 2019-01-30
  • 2015-02-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多