【发布时间】:2023-03-17 19:19:02
【问题描述】:
在我的网站上,我有由伪元素的边界组成的三角形:before。我的问题是,如果我将这些三角形添加到列中的元素(column-count),则不是第一列中的三角形隐藏在前一列下。列有column-gap 集。我试过z-index: 不行。
小提琴:http://jsfiddle.net/aq9Laaew/208715/
.masonry{
column-count: 3;
column-gap: 1.5em;
}
.child {
height: 400px;
background: #EEE;
}
span{
left: -20px;
position: absolute;
z-index: 2;
}
span:before{
content: "";
display: inline-block;
width: 0;
height: 0;
border-style: solid;
border-width: 0 0 1.5em .5em;
border-color: transparent transparent #D36135 transparent;
z-index: 2;
}
<div class="container">
<div class="masonry p-1">
<div class="child">
<h1 class="position-relative">h1<span></span></h1>
</div>
<div class="child">
<h1 class="position-relative">h1<span></span></h1>
</div>
<div class="child">
<h1 class="position-relative">h1<span></span></h1>
</div>
<div class="child">
<h1 class="position-relative">h1<span></span></h1>
</div>
<div class="child">
<h1 class="position-relative">h1<span></span></h1>
</div>
<div class="child">
<h1 class="position-relative">h1<span></span></h1>
</div>
</div>
</div>
【问题讨论】:
-
从你的小提琴中取出代码并在此处将其转换为 sn-p。
-
.masonry{ column-count: 3; column-gap: 0; } .child { height: 400px; background: #EEE; margin-left:1.5em; } -
@Jasonbamber 可以,但第一列也会有剩余边距。当然我可以用 Javascript 删除它(获取孩子的坐标,检测是否在第一列中而不是删除),但这不是一个花哨的解决方案
-
.container{ overflow:hidden; } .masonry{ column-count: 3; column-gap: 0; margin-left:-0.75rem; } .child { height: 400px; background: #EEE; margin-left:1.5rem; } -
@Jasonbamber 回答,我会将其标记为解决方案
标签: html css pseudo-element css-multicolumn-layout