您可以在 CSS 本身中执行此操作,使用“悬停”选择器和“nth-of-type”。
选择每第三行:
:nth-of-type(3), :nth-of-type(7), :nth-of-type(13), :nth-of-type(15)
和第四行:
:nth-of-type(4), :nth-of-type(8), :nth-of-type(12), :nth-of-type(16)
并赋予其飞出框必要的属性。
演示:http ://dabblet.com/gist/3765761
标记:
<div class='box'>1
<div class='fly-out'></div>
</div>
<div class='box'>2
<div class='fly-out'></div>
</div>
<div class='box right-aligned'>3
<div class='fly-out'></div>
</div>
<div class='box right-aligned'>4
<div class='fly-out'></div>
</div>
<div class='box'>5
<div class='fly-out'></div>
</div>
<div class='box'>6
<div class='fly-out'></div>
</div>
<div class='box right-aligned'>7
<div class='fly-out'></div>
</div>
<div class='box right-aligned'>8
<div class='fly-out'></div>
</div>
<div class='box'>9
<div class='fly-out'></div>
</div>
<div class='box'>10
<div class='fly-out'></div>
</div>
<div class='box right-aligned'>11
<div class='fly-out'></div>
</div>
<div class='box right-aligned'>12
<div class='fly-out'></div>
</div>
<div class='box'>13
<div class='fly-out'></div>
</div>
<div class='box'>14
<div class='fly-out'></div>
</div>
<div class='box right-aligned'>15
<div class='fly-out'></div>
</div>
<div class='box right-aligned'>16
<div class='fly-out'></div>
</div>
CSS:
* {
margin: 0;
padding: 0;
box-sizing: border-box; /* paulirish.com/2012/box-sizing-border-box-ftw/ */
position: relative;
}
body {
width: 440px;
margin: 0 auto;
}
.box {
width: 100px;
height: 100px;
border: 1px solid #999;
float: left;
margin: 5px;
}
.fly-out {
position: absolute;
top: 0;
background: rgba(0,0,0,.4);
opacity: 0;
z-index: -1;
}
.box:hover .fly-out {
z-index: 1;
opacity: 1;
height: 100%;
width: 210px;
}
.box:nth-of-type(3):hover .fly-out,
.box:nth-of-type(7):hover .fly-out,
.box:nth-of-type(11):hover .fly-out,
.box:nth-of-type(15):hover .fly-out,
.box:nth-of-type(4):hover .fly-out,
.box:nth-of-type(8):hover .fly-out,
.box:nth-of-type(12):hover .fly-out,
.box:nth-of-type(16):hover .fly-out,
.right-aligned {
left: -110px;
right: 0;
background: rgba(0,0,120,.7);
}
在您的标记中,“工具提示”位于框外,并且具有“可见性:隐藏”,这很像给它“不透明度:0”。虽然看不到,但它仍然存在。要真正使它对布局不可用,您需要“显示:无”,但是您将无法使用 CSS 转换正确地对其进行动画处理。
注意:就像下面评论中提到的 Christofer Eliason 一样,':nth-of-type' 选择器没有得到很好的支持,因此您可以为每个 div 添加一个类,以便让弹出窗口右对齐或查看使用 'nth-of-type' 的 jquery 版本:https ://stackoverflow.com/a/4761510/604040 。
我使用了 ':nth-of-type' 选择器,因为您可以从 CSS 本身控制飞出的对齐方式,如果它们是动态添加的,则无需将类添加到新框,这在数学上可能有点复杂(至少为了我)。
但是,如果您对此感到满意,我已经在每行的第 3 和第 4 框中添加了一个类“.right-aligned”,您可以在 CSS 中删除此块,您仍然很好:
.box:nth-of-type(3):hover .fly-out,
.box:nth-of-type(7):hover .fly-out,
.box:nth-of-type(11):hover .fly-out,
.box:nth-of-type(15):hover .fly-out,
.box:nth-of-type(4):hover .fly-out,
.box:nth-of-type(8):hover .fly-out,
.box:nth-of-type(12):hover .fly-out,
.box:nth-of-type(16):hover .fly-out