css 如何制作合适的单选输入切换按钮?

o8x7eapl  于 2022-12-24  发布在  其他
关注(0)|答案(1)|浏览(130)

我试图在CSS中做一个切换按钮来改变计算器页面的主题,但是选择器只对第三个主题有效,当我选择第二个单选按钮时,它就移动到开始。

.form-choice {

        #first:checked + .slider:before {
          transform: translateX(0px);
          background-color: red;
        }

        #second:checked + .slider:before {
          transform: translateX(15px);
          background-color: black;
        }

        #third:checked + .slider:before {
          transform: translateX(45px);
          background-color: yellow;
        }
      }
<div class="theme-selector">
          <div id="theme-name">Theme</div>
          <div class="theme-form">
            <div class="form-name">
              <label for="first">1</label>
              <label for="second">2</label>
              <label for="third">3</label>
            </div>
            <div class="form-choice">
              <input type="radio" id="first" name="choice" />
              <input type="radio" id="second" name="choice" />
              <input type="radio" id="third" name="choice" />
              <span class="slider"></span>
            </div>
          </div>
        </div>

我希望滑块根据选定的主题移动。

ibps3vxo

ibps3vxo1#

您在CSS中使用了错误的选择器。+选择器被称为"相邻兄弟"选择器。它将只选择第二个元素,只要它紧跟在第一个元素之后。
~是一个"通用兄弟"选择器,它不具有必须紧跟在第一个元素之后的相同条件。
试试看:

#first:checked ~ .slider:before {
   transform: translateX(0px);
   background-color: red;
}

#second:checked ~ .slider:before {
   transform: translateX(15px);
   background-color: black;
}

#third:checked ~ .slider:before {
   transform: translateX(45px);
   background-color: yellow;
}

相关问题