常规的两个正方形在不使用rotate旋转的情况下摆成\型或者/型,因为ui设计的原因导致两图中间存在元素碰触体积交汇处(红框标注的位置)
红色和黄色是实际展示图形(这俩图形由于ui已经做好的,没法使用旋转来调位置),灰色是元素碰触体积
这种情况下该如何让鼠标离开红色或者黄色进入对方的实体图形范围而无视碰触体积范围便让当前层z-index在最上层?
下面是上面图形的模拟样式:
<ul class="test" style="width: 500px; height: 500px;position: relative;">
<li class="test-red" style="width: 100px; height: 100px; background: rgba(0,0,0, 0.3);position: absolute;top: 50px;left: 50px;">
<i style="display: block; width: 100px; height: 100px; background: rgba(224,89,55, 0.5);transform: rotate(45deg);"></i>
</li>
<li class="test-blue" style="width: 100px; height: 100px; background: rgba(0,0,0, 0.3);position: absolute;top: 130px;left: 130px;">
<i style="display: block; width: 100px; height: 100px; background: rgba(193,196,95, 0.5);transform: rotate(45deg);"></i>
</li>
</ul>
两个元素必然有层叠关系,也就是交叉区域只有第二个
li
的覆盖在上面,第一个li
的交叉区域会被挡住。方案:用事件代理给
ul
元素设置mouseover
监听,并给移入的li
添加类,除当前移入的li
之外,其余的全都设置鼠标穿透pointer-events: none
。css:
js: