CSS Toggle Switch没有类/ id

时间:2016-05-11 10:02:59

标签: html css checkbox toggle

我正在为我的大学网络工程课程开展一个项目。我们必须创建某种学校管理站点,并且现在只允许使用纯HTML和CSS,我们在CSS中使用没有类和ID的限制,只允许选择器。

现在我想在页面中添加一个切换开关按钮,我找到了这个网站(https://proto.io/freebies/onoff/),您可以在其中创建自己的切换按钮。但是你收到的代码适用于我不允许使用的类,所以我试图改变代码,以便它只使用选择器,但它不起作用。 也许有人可以帮助我理解我的错误(除了复制代码片段而不是解决问题)。

div:last-of-type {
  position: relative;
  width: 67px;
  -webkit-user-select: none;
  -moz-user-select: none;
  -ms-user-select: none;
}
input[type="checkbox"] {
  display: none;
}
label {
  display: block;
  overflow: hidden;
  cursor: pointer;
  height: 22px;
  padding: 0;
  line-height: 22px;
  border: 2px solid #CCCCCC;
  border-radius: 22px;
  background-color: #FA1212;
  transition: background-color 0.3s ease-in;
}
label:before {
  content: "";
  display: block;
  width: 22px;
  margin: 0px;
  background: #FFFFFF;
  position: absolute;
  top: 0;
  bottom: 0;
  right: 43px;
  border: 2px solid #CCCCCC;
  border-radius: 22px;
  transition: all 0.3s ease-in 0s;
}
input[type="checkbox"]:checked + label {
  background-color: #28CF25;
}
input[type="checkbox"]:checked + label,
input[type="checkbox"]:checked +label:before {
  border-color: #28CF25;
}
input[type="checkbox"]:checked + label:before {
  right: 0px;
}
<div>
  <input type="checkbox" name="onoffswitch" checked>
  <label for="myonoffswitch"></label>
</div>

1 个答案:

答案 0 :(得分:3)

您不需要使用课程,只要标签的for="..."与输入id="..."相同,并且标签出现正确< strong>在输入标记之后。

label元素上的for属性链接到input元素上的id属性,浏览器完成剩下的工作。

下面的快速演示演示了这一点:

&#13;
&#13;
html{background:rgba(0,0,0,0.4);text-align:center;font-size:2em;}
input:checked + label {
  background: lime;
}
input:checked + label {
  color: red;
}
input + label {
  display: inline-block;
  height: 40px;
  border-radius: 25px;
  width: 100px;
  background: tomato;
  position: relative;
  transition: all 0.4s;
  cursor: pointer;
  border: 5px solid lightgray;
  box-shadow: inset 2px 2px 5px black, 2px 2px 5px black;
}
input[type="checkbox"] {
  display: none;
}
input + label:before {
  content: "";
  position: absolute;
  background: white;
  height: 30px;
  width: 30px;
  top: 5px;
  transition: all 0.4s;
  left: calc(100% - 35px);
  border-radius: 50%;
  box-shadow: 2px 2px 5px black;
}
input:checked + label:before {
  left: 5px;
}
&#13;
Click My toggle Checkbox
<br/><br/>
<div>
  <input type="checkbox" id="myonoffswitch" />
  <label for="myonoffswitch"></label>
</div>
&#13;
&#13;
&#13;