CSS 视图大小切换(:has,:not选择器)

325 阅读1分钟

🧨快过年了,后端的知识点看不进去,又来琢磨css了。本来想写其它效果的,歪打正着搞出来了这个,还是很奇妙的。

效果展示

679068776a11f_679068776d909.gif

实现思路

主要是通过兄弟选择器 + 来达到点击时其他视图的变化效果。

其中难点在于如何点击后者,控制之前的兄弟标签(基本上网上给的答案都是不能实现的),但是可以间接通过 :has:not 选择器来配合实现。

以下这段是点击第4张元素,控制第3张元素的css代码(🙄你也可以理解为在第3张元素事先满足这些条件下,会有这种效果)。

.radio-item:nth-child(1):not(.radio:checked) + * + .radio-item:nth-child(3):not(.radio:checked):has(+ .radio-item .radio:checked) .item{
  transform: scale(0.5, 1.5);
}
  1. 控制 ①元素(不是选中)+ ②元素(不是选中)+ ③元素(没有选中)但存在(+ ④元素被选中)时满足以上条件的③元素样式;
  2. 即便我们不能直接控制之前的元素,但是我们可以事先要求之前的元素满足一定条件,来达到提前预判;

在线代码