纯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;}
效果如下: