使用 Drupal 视图输出,我想使用浮动跨度显示查询结果的平铺网格,如此处所述
请参阅 sassmeister css 源代码中的评论,以更好地解释我想要实现的目标。
非常感谢任何帮助。
你犯了三个错误。
您使用了旧的 Singularity 1.0 语法:
$grids: 12;
$gutters: 1/3;
从 Singularity 1.2 开始,正确的语法如下:
@include add-grid(12);
@include add-gutter(1/3);
请参阅创建网格wiki 页面。
content-box
2. 使用盒子尺寸模型对网格项目使用填充默认情况下,浏览器使用content-box
盒子大小模型。这意味着元素的最终宽度是通过添加元素宽度、元素填充和元素边框来计算的。
奇点跨越网格项目,使它们占据容器宽度的 100%。将填充和宽度应用于网格项后,生成的宽度将超过 100%,并且一行中的最后一个网格项下降到下一行。
这个问题有两种解决方案:
不要在网格项目最外层的容器上使用填充和边框。如果您需要填充和/或边框,请创建一个子容器:
<div class="tile">
<div class="tile-border-padding">item one</div>
</div>
将 box-sizing 模型切换为border-box
. 这是推荐的方法。通常应用于页面border-box
上的所有元素。
最简单的方法是安装Toolkit Sass 库并导入其kickstart模块。此模块应用以下 CSS:
*, *:before, *:after {
-moz-box-sizing: border-box;
box-sizing: border-box;
}
img, video {
max-width: 100%;
height: auto;
}
如您所见,它适用border-box
于所有元素并使所有图像和视频都具有响应性。如果您不希望图像具有响应性,请考虑使用 Compass 中的box-sizing mixin 或简单地手动应用 box-sizing。
大多数网格系统,Singularity 也不例外,遵循这条规则:如果行中有N
项目,则该行中的排水沟数将为N - 1
.
换句话说,如果您想要连续 4 个项目,则应该有 4 个项目和 3 个装订线。Singularity 将计算这样的项目和装订线宽度,即 4 个项目 + 3 个装订线导致 100% 的宽度。
| |
[ITEM][gutter] [ITEM][gutter] [ITEM][gutter] [ITEM]
Singularity 的float-span(3)
mixin 将右装订线应用于元素。所以当你这样做时
.tile { @include float-span(3); }
您最终会连续获得 4 个项目 + 4 个排水沟,由此产生的宽度将超过容器的 100%,并且该行中的最后一个项目及其排水沟将下降到下一行。
| |
[ITEM][gutter] [ITEM][gutter] [ITEM][gutter] [ITEM][gutter]
解决方案是明确告诉 Singularity 每行中的最后一项不应有装订线:
.tile {
@include float-span(3);
&:nth-child(4n+4) {
@include float-span(3, last);
}
}
我们在:nth-child(Xn + Y)
这里使用伪类。X
是每行中的项目Y
数,是一行中目标项目的数量。由于我们针对的是每行中的最后一项,X
因此等于Y
。
这是修复了所有这些问题的演示:http: //sassmeister.com/gist/5b6f0dbe99c7129a8ef6
祝你今天过得愉快!