纯CSS实现点击一个元素,背景颜色切换

基本思路: 将input与div间隔依次布局,并且将input与div设置相同宽高、相同定位,利用input的:check伪类控制各元素之间的层级关系

HTML如下:

<div class="all">
      <input type="checkbox" class="faux" />
      <div class="box box1"></div>

      <input type="checkbox" class="faux" />
      <div class="box box2"></div>

      <input type="checkbox" class="faux" />
      <div class="box box3"></div>
</div>

CSS如下:

      .all {
        width: 100px;
        height: 100px;
        position: relative;
      }
      .box {
        width: 100px;
        height: 100px;
        position: absolute;
        left: 0;
        top: 0;
      }
      .box1 {
        background: pink;
      }
      .box2 {
        background: wheat;
      }
      .box3 {
        background: skyblue;
      }
      .faux {
        top: 0;
        right: 0;
        position: absolute;
        z-index: 9;
        height: 100%;
        width: 100%;
        opacity: 0;
        cursor: pointer;
      }

      /* 第一轮循环 */
      .faux:checked {
        z-index: 8;
      }
      .faux:checked + .box {
        opacity: 0;
      }

      /* 第二轮循环 */
      .faux:checked:nth-child(1):checked {
        z-index: 9;
      }
      .faux:checked:nth-child(1) + .box {
        opacity: 1;
      }

      .faux:checked:nth-child(1) ~ .faux {
        z-index: 8;
      }
      .faux:checked:nth-child(1) ~ .faux + .box {
        opacity: 0;
      }

      .faux:checked:nth-child(1) ~ .faux:checked {
        z-index: 9;
      }
      .faux:checked:nth-child(1) ~ .faux:checked + .box {
        opacity: 1;
      }

  

效果如下:

 

posted @ 2019-05-20 19:08  JasmineGe  阅读(4195)  评论(0编辑  收藏  举报