我有以下HTML/CSS代码:
.item {
border: 1px solid gray;
text-align: center;
box-sizing: border-box;
padding: 10px;
}
.flex-row {
width: 100%;
display: flex;
justify-content: space-around;
margin-top: 10px;
}
<div class="flex-row">
<div class="item" style="width: 25%;">
25%
</div>
<div class="item" style="width: 25%;">
25%
</div>
<div class="item" style="width: 10%;">
10%
</div>
<div class="item" style="width: 20%;">
20%
</div>
<div class="item" style="width: 20%;">
20%
</div>
</div>
<div class="flex-row">
<div class="item" style="width: 50%;">
50%
</div>
<div class="item" style="width: 18%;">
18%
</div>
<div class="item" style="width: 12%;">
12%
</div>
<div class="item" style="width: 20%;">
20%
</div>
</div>
ngFor
中生成的,但这并不重要。)我想在flexbox中间插入间距,以便可以检测悬停和鼠标按下事件,如下所示:
.item {
border: 1px solid gray;
text-align: center;
box-sizing: border-box;
padding: 10px;
}
.spacer {
width: 25px;
}
.spacer:hover {
cursor: pointer;
background-color: blue;
}
.flex-row {
width: 100%;
display: flex;
justify-content: space-around;
margin-top: 10px;
}
<div class="flex-row">
<div class="item" style="width: 25%;">
25%
</div>
<div class="spacer" (mousedown)="someFunction()"></div>
<div class="item" style="width: 25%;">
25%
</div>
<div class="spacer" (mousedown)="someFunction()"></div>
<div class="item" style="width: 10%;">
10%
</div>
<div class="spacer" (mousedown)="someFunction()"></div>
<div class="item" style="width: 20%;">
20%
</div>
<div class="spacer" (mousedown)="someFunction()"></div>
<div class="item" style="width: 20%;">
20%
</div>
</div>
<div class="flex-row">
<div class="item" style="width: 50%;">
50%
</div>
<div class="spacer" (mousedown)="someFunction()"></div>
<div class="item" style="width: 18%;">
18%
</div>
<div class="spacer" (mousedown)="someFunction()"></div>
<div class="item" style="width: 12%;">
12%
</div>
<div class="spacer" (mousedown)="someFunction()"></div>
<div class="item" style="width: 20%;">
20%
</div>
</div>
(mousedown)
调用的语法,只需知道我想在单击间隔器时调用一个函数)问题在于间隔器破坏了flexbox的流程(如预期)。两个25%的元素不再与后面一行的50%元素完美对齐。
我发现可以使用
border-box
在Flex元素之间添加空格并保持对齐,但我无法弄清楚如何在不破坏布局的情况下跟踪鼠标悬停/单击事件。
display: grid
而不是 flexbox? - IronFlaredisplay: grid
是可以的。 - Christian ScillitoengFor
传递的索引传递到所调用的函数中。 - Christian Scillitoe