在使用 masonry.js 时,有没有办法防止行比其他行拥有更多的元素?
Is there a way to prevent rows on having more elements than other rows when using masonry.js?
https://codepen.io/codepen_user_123/pen/xxgXYqY
$('.grid').masonry({
itemSelector: '.grid-item',
columnHeight: 1360,
gutterHeight: 120;
});
所以我用它来创建一个非砖石类型的网格,但问题是有时我在同一个而不是一个上得到两个元素。
下图描述了我要查找的内容:
你看到每行只有 5 个元素,在提供的代码笔中,有些行比其他行有更多的元素,因为有足够的 space 可以在该行的某些列上容纳 1 个以上的元素,所以有没有办法防止这种情况发生?我无法让它工作。
我会给你一个有点奇怪的答案......但你可能甚至不需要砌体(以及 JS 和 jQuery 就此而言)来实现你想要实现的目标。我认为在这种情况下,简单的 HTML 和 CSS 答案是合适的。 CSS 中有一个相对较新的功能,称为 CSS Grid。这是一个接近您想要的示例。布局的所有主要代码都在这里。
.grid {
grid-template-columns: repeat(5, 1fr);
grid-auto-rows: auto;
grid-gap: 12px;
display: grid;
}
<div class="grid">
<div>1</div>
<div>2</div>
<div>3</div>
<div>4</div>
<div>5</div>
<div>6</div>
<div>7</div>
<div>8</div>
<div>9</div>
<div>10</div>
</div>
下面是一个更完整的示例,其中包含与您上图相似的样式:
.grid {
grid-template-columns: repeat(5, 1fr);
grid-auto-rows: auto;
grid-gap: 12px;
display: grid;
}
/* unnecessary stylistic changes below here */
.grid {
--color-1: rgb(252,151,36);
--color-2: rgb(240,67,60);
--color-3: rgb(97,125,138);
}
body {
font-size: 32px;
font-family: Arial;
color: white;
background-color: rgb(56,64,70)
}
.grid > * {
text-align: center;
padding: 0.7em;
}
.grid > *:nth-child(3n + 1) {
background-color: var(--color-1);
}
.grid :nth-child(3n + 2) {
background-color: var(--color-2);
}
.grid > *:nth-child(3n) {
background-color: var(--color-3);
}
.grid > *:nth-child(4n + 1) {
height: 75px;
}
.grid :nth-child(4n + 2) {
height: 150px;
}
.grid :nth-child(4n + 3) {
height: 50px;
}
.grid :nth-child(4n) {
height: 125px;
}
<div class="grid">
<div>1</div>
<div>2</div>
<div>3</div>
<div>4</div>
<div>5</div>
<div>6</div>
<div>7</div>
<div>8</div>
<div>9</div>
<div>10</div>
</div>
https://codepen.io/codepen_user_123/pen/xxgXYqY
$('.grid').masonry({
itemSelector: '.grid-item',
columnHeight: 1360,
gutterHeight: 120;
});
所以我用它来创建一个非砖石类型的网格,但问题是有时我在同一个而不是一个上得到两个元素。
下图描述了我要查找的内容:
你看到每行只有 5 个元素,在提供的代码笔中,有些行比其他行有更多的元素,因为有足够的 space 可以在该行的某些列上容纳 1 个以上的元素,所以有没有办法防止这种情况发生?我无法让它工作。
我会给你一个有点奇怪的答案......但你可能甚至不需要砌体(以及 JS 和 jQuery 就此而言)来实现你想要实现的目标。我认为在这种情况下,简单的 HTML 和 CSS 答案是合适的。 CSS 中有一个相对较新的功能,称为 CSS Grid。这是一个接近您想要的示例。布局的所有主要代码都在这里。
.grid {
grid-template-columns: repeat(5, 1fr);
grid-auto-rows: auto;
grid-gap: 12px;
display: grid;
}
<div class="grid">
<div>1</div>
<div>2</div>
<div>3</div>
<div>4</div>
<div>5</div>
<div>6</div>
<div>7</div>
<div>8</div>
<div>9</div>
<div>10</div>
</div>
下面是一个更完整的示例,其中包含与您上图相似的样式:
.grid {
grid-template-columns: repeat(5, 1fr);
grid-auto-rows: auto;
grid-gap: 12px;
display: grid;
}
/* unnecessary stylistic changes below here */
.grid {
--color-1: rgb(252,151,36);
--color-2: rgb(240,67,60);
--color-3: rgb(97,125,138);
}
body {
font-size: 32px;
font-family: Arial;
color: white;
background-color: rgb(56,64,70)
}
.grid > * {
text-align: center;
padding: 0.7em;
}
.grid > *:nth-child(3n + 1) {
background-color: var(--color-1);
}
.grid :nth-child(3n + 2) {
background-color: var(--color-2);
}
.grid > *:nth-child(3n) {
background-color: var(--color-3);
}
.grid > *:nth-child(4n + 1) {
height: 75px;
}
.grid :nth-child(4n + 2) {
height: 150px;
}
.grid :nth-child(4n + 3) {
height: 50px;
}
.grid :nth-child(4n) {
height: 125px;
}
<div class="grid">
<div>1</div>
<div>2</div>
<div>3</div>
<div>4</div>
<div>5</div>
<div>6</div>
<div>7</div>
<div>8</div>
<div>9</div>
<div>10</div>
</div>