css:使用label控制checkbox不生效的原因

今天有個簡單的需求,就是實現表單底部的勾選知情同意書的效果,如圖:
在這裏插入圖片描述
我想着玩意做了百八十遍豈不是手到擒來,於是我寫下了這樣的代碼:

<!DOCTYPE html>
<html>

<head>
  <title>測試</title>
  <style type="text/css">

  label {
    display: block;
    width: 20px;
    height: 20px;
    border: 1px solid #666;
  }

  input {
    display: none;
  }

  input:checked + label {
    border: 1px solid #f00;
  }
  </style>
</head>

<body>
  <div>
    <label for="agree"></label>
    <input type="checkbox" name="agree" id="agree">
  </div>
</body>

</html>

這,我點擊 label 怎麼沒有改變 border 爲 #f00,我開始慌了。。

解決

最後發現,input:checked + label 這裏的 + 是代表兄弟元素,兄弟元素一定是在該元素的下面,也就是我換一下 input 和 label 標籤的位置就好了

<body>
  <div>
    <input type="checkbox" name="agree" id="agree">
    <label for="agree"></label>
  </div>
</body>

這件事告訴我一個道理,遇到 bug 不要慌,一步一步縮小 bug 範圍,實在不行寫一個小 demo,最後你就知道問題出在哪了~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章