XY 网格
v6.4 中全新设计的网格系统,以多种网格类型的形式内置了所有种类,包括边距网格、内边距网格、框架网格、块网格和垂直网格。
XY 网格基础
XY 网格的工作原理与标准浮动网格非常相似,但包含了许多只有 Flexbox 才能实现的有用功能,例如水平和垂直对齐、自动调整大小和完整的垂直网格。
浏览器支持
XY 网格在 Chrome、Firefox、Safari 6+、IE11、iOS 7+ 和 Android 4.4+ 中受支持。Flexbox 在 Android 2 中受支持,但可靠性不足以与此网格一起使用。(查看 Flexbox 浏览器支持。)我们建议仅在可以使用最前沿浏览器支持的项目上使用 XY 网格。
导入
XY 网格是默认的 Foundation 网格。它默认存在于 CDN 链接或包管理器的 foundation.css
中。在 Sass 中,默认情况下它将由 @include foundation-everything
生成(除非 $flex
或 $xy-grid
设置为 false)。
如果 $xy-grid
设置为 false,则使用 flex 网格。
如果 $flex
设置为 false,则使用浮动网格。
您可以使用以下命令手动生成 XY 网格
@import 'foundation';
@include foundation-xy-grid-classes(
/* options
$base-grid: true,
$margin-grid: true,
$padding-grid: true,
$block-grid: true,
$collapse: true,
$offset: true,
$vertical-grid: true,
$frame-grid: true
*/
);
基础知识
XY 网格的结构使用 .grid-x
、.grid-y
和 .cell
作为其基础。没有 定义间沟类型,单元格将简单地划分空间,没有任何间沟。
<div class="grid-x">
<div class="cell">full width cell</div>
<div class="cell">full width cell</div>
</div>
<div class="grid-x">
<div class="cell small-6">6 cells</div>
<div class="cell small-6">6 cells</div>
</div>
<div class="grid-x">
<div class="cell medium-6 large-4">12/6/4 cells</div>
<div class="cell medium-6 large-8">12/6/8 cells</div>
</div>
间沟
XY 网格的定义特征是能够和谐地使用边距和内边距网格。要定义网格类型,只需在网格上设置 .grid-margin-x
/.grid-margin-y
或 .grid-padding-x
/.grid-padding-y
。
<div class="grid-x grid-margin-x">
<div class="cell medium-6 large-4">12/6/4 cells</div>
<div class="cell medium-6 large-8">12/6/8 cells</div>
</div>
<div class="grid-x grid-padding-x">
<div class="cell medium-6 large-4">12/6/4 cells</div>
<div class="cell medium-6 large-8">12/6/8 cells</div>
</div>
网格容器
网格默认为可用空间的全部宽度。要水平包含它,请使用 grid-container
类。容器将居中,并且最大宽度等于您的 $grid-container
设置(默认为 1200px),以及等于您的 $grid-container-padding
设置的一半的左右内边距。
<div class="grid-container">
<div class="grid-x grid-margin-x">
<div class="cell small-4">cell</div>
<div class="cell small-4">cell</div>
<div class="cell small-4">cell</div>
</div>
</div>
流体网格容器
要将内容拉伸到可用空间的全部宽度,只需将 fluid
类添加到您的 grid-container
中。
<div class="grid-container fluid">
<div class="grid-x grid-margin-x">
<div class="cell small-4">cell</div>
<div class="cell small-4">cell</div>
<div class="cell small-4">cell</div>
</div>
</div>
完整网格容器
要将内容拉伸到可用空间的全部宽度并删除网格容器内边距,只需将 full
类添加到您的 grid-container
中。请注意,此变体主要用于 grid-margin-x
- 它也适用于 grid-padding-x
,但工作方式与 .grid-container.fluid
相同。
请注意,当您在具有 full
类的 grid-container
上使用 `grid-margin-x` 时,如果您的内容要接触视口的侧面,您还需要隐藏水平溢出才能使其正常工作。
最好的方法是: `body {overflow-x: hidden;}`
<div class="grid-container full">
<div class="grid-x grid-margin-x">
<div class="cell small-4">cell</div>
<div class="cell small-4">cell</div>
<div class="cell small-4">cell</div>
</div>
</div>
自动调整大小
如果将 .auto
或 .[size]-auto
类添加到单元格中,它将占用剩余空间。
<div class="grid-x grid-margin-x">
<div class="cell small-4">4 cells</div>
<div class="cell auto">Whatever's left!</div>
</div>
多个扩展单元格将平均共享剩余空间。
<div class="grid-x grid-margin-x">
<div class="cell small-4">4 cells</div>
<div class="cell auto">Whatever's left!</div>
<div class="cell auto">Whatever's left!</div>
</div>
还可以通过添加 .shrink
或 .[size]-shrink
类来使单元格_缩小_。这意味着它只会占用其内容所需的空间。
<div class="grid-x grid-margin-x">
<div class="cell shrink">Shrink!</div>
<div class="cell auto">Expand!</div>
</div>
响应式调整
要从百分比或缩小行为切换回自动行为,请使用 .[size]-auto
或 .[size]-shrink
类。在下面的示例中,单元格在小屏幕上堆叠,并在大型屏幕上变成等宽。
<div class="grid-x">
<div class="cell large-auto">One</div>
<div class="cell large-auto">Two</div>
<div class="cell large-auto">Three</div>
<div class="cell large-auto">Four</div>
<div class="cell large-auto">Five</div>
<div class="cell large-auto">Six</div>
</div>
折叠单元格 仅限 X 网格
.[size]-[gutter-type]-collapse
类允许您删除单元格间沟。
有时您不希望每个媒体查询都被折叠。在这种情况下,请使用您想要的媒体查询大小,并折叠并将其添加到您的网格元素中。示例显示了小间沟,中型及以上没有间沟。
<div class="grid-x grid-margin-x medium-margin-collapse">
<div class="cell small-6">
Gutters at small no gutters at medium.
</div>
<div class="cell small-6">
Gutters at small no gutters at medium.
</div>
</div>
偏移量 仅限 X 网格
偏移量通过对网格应用 margin-left
来工作。
<div class="grid-x grid-margin-x">
<div class="cell small-4 large-offset-2">Offset 2 on large</div>
<div class="cell small-4">4 cells</div>
</div>
块网格 仅限 X 网格
要在方向级别(而不是单个单元格级别)内定义单元格宽度,请将 .[size]-up-[n]
类添加到 grid-x
,其中 [n]
是每个方向要显示的单元格数,[size]
是应用效果的断点。
<div class="grid-x grid-padding-x small-up-2 medium-up-4 large-up-6">
<div class="cell">cell</div>
<div class="cell">cell</div>
<div class="cell">cell</div>
<div class="cell">cell</div>
<div class="cell">cell</div>
<div class="cell">cell</div>
</div>
块网格不适用于垂直网格。请改用在网格的每个单元格上应用大小的 基本布局。
寻找推/拉?
推和拉有点像一种黑客解决方案,并且仅对基于浮动的网格是必需的。但对于 flexbox,这种黑客是不需要的,因为 源顺序 可以轻松做到这一点。
垂直网格
XY 网格还支持垂直网格。只需应用 .grid-y
而不是 .grid-x
。内部单元格将自动移动以提供垂直而不是水平间距。
您还可以使用 .grid-margin-y
和 .grid-padding-y
应用边距或内边距,以将间距应用于单元格的顶部和底部。
请注意,要使垂直网格起作用,网格需要一个高度。您还可以使用 [网格框架](#grid-frame) 来创建 100% 视口高度的垂直网格(或 height:100%;如果嵌套)。
<div class="grid-y" style="height: 500px;">
<div class="cell small-6 medium-8 large-2">
6/8/2
</div>
<div class="cell small-6 medium-4 large-10">
6/4/10
</div>
</div>
网格框架
XY 网格包含 Foundation for Apps 的网格框架以及许多其他有用功能。首先,将 .grid-frame
添加到网格中。这会将网格设置为 100vh(浏览器窗口的全部高度)。
以下是一个您可以做什么的示例
<div class="grid-y medium-grid-frame">
<div class="cell shrink header medium-cell-block-container">
<h1>Grid Frame Header</h1>
<div class="grid-x grid-padding-x">
<div class="cell medium-4">
A medium 4 cell
</div>
<div class="cell medium-4 medium-cell-block">
<p style="width:80vw;">A medium 4 cell block... on medium this content should overflow and let you horizontally scroll across... one might use this for an array of options</p>
</div>
<div class="cell medium-4">
A medium 4 cell
</div>
</div>
</div>
<div class="cell medium-auto medium-cell-block-container">
<div class="grid-x grid-padding-x">
<div class="cell medium-4 medium-cell-block-y">
<h2>Independent scrolling sidebar</h2>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer lacus odio, accumsan id ullamcorper eget, varius nec erat. Nulla facilisi. Donec dui felis, euismod nec finibus vitae, dapibus quis arcu. Maecenas tempor et ipsum quis venenatis. Ut posuere sed augue sit amet efficitur. Sed imperdiet, justo id tempus rhoncus, est est viverra turpis, non vulputate magna lectus et nisl. Pellentesque ultrices porttitor vehicula. Ut aliquet efficitur ligula, a consectetur felis. Proin tristique ut augue nec luctus. Curabitur a sapien pretium, auctor elit a, efficitur erat. Donec tincidunt dui vel velit bibendum euismod. Cras vitae nibh dui. Aliquam erat volutpat. Etiam sit amet arcu a erat efficitur facilisis. Ut viverra dapibus turpis, et ornare justo. Integer in dui cursus, dignissim tortor a, hendrerit risus.</p>
<p>Suspendisse pulvinar, massa iaculis feugiat lobortis, dolor sapien vestibulum nulla, vel cursus tellus leo in lorem. Aliquam eu placerat urna. Suspendisse sed viverra orci, ut mattis neque. Fusce non ultrices nisi. In sagittis varius mollis. Quisque dolor quam, consectetur eu lacinia ac, ullamcorper vel arcu. Nullam mattis imperdiet nulla sed ornare. Praesent tristique, est id eleifend vestibulum, neque nibh condimentum ex, nec lobortis purus justo a libero. Phasellus id ex ac nunc hendrerit hendrerit. Nullam urna ipsum, rutrum at fringilla vel, venenatis non purus. Maecenas egestas ex vitae venenatis molestie. Ut et odio egestas, accumsan neque et, viverra nisl. Sed faucibus nec nulla sed imperdiet. Fusce quis sem ac urna semper tempor a id elit. Nulla fringilla vitae sapien a vehicula.</p>
</div>
<div class="cell medium-8 medium-cell-block-y">
<h2>Independent scrolling body</h2>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer lacus odio, accumsan id ullamcorper eget, varius nec erat. Nulla facilisi. Donec dui felis, euismod nec finibus vitae, dapibus quis arcu. Maecenas tempor et ipsum quis venenatis. Ut posuere sed augue sit amet efficitur. Sed imperdiet, justo id tempus rhoncus, est est viverra turpis, non vulputate magna lectus et nisl. Pellentesque ultrices porttitor vehicula. Ut aliquet efficitur ligula, a consectetur felis. Proin tristique ut augue nec luctus. Curabitur a sapien pretium, auctor elit a, efficitur erat. Donec tincidunt dui vel velit bibendum euismod. Cras vitae nibh dui. Aliquam erat volutpat. Etiam sit amet arcu a erat efficitur facilisis. Ut viverra dapibus turpis, et ornare justo. Integer in dui cursus, dignissim tortor a, hendrerit risus.</p>
<p>Suspendisse pulvinar, massa iaculis feugiat lobortis, dolor sapien vestibulum nulla, vel cursus tellus leo in lorem. Aliquam eu placerat urna. Suspendisse sed viverra orci, ut mattis neque. Fusce non ultrices nisi. In sagittis varius mollis. Quisque dolor quam, consectetur eu lacinia ac, ullamcorper vel arcu. Nullam mattis imperdiet nulla sed ornare. Praesent tristique, est id eleifend vestibulum, neque nibh condimentum ex, nec lobortis purus justo a libero. Phasellus id ex ac nunc hendrerit hendrerit. Nullam urna ipsum, rutrum at fringilla vel, venenatis non purus. Maecenas egestas ex vitae venenatis molestie. Ut et odio egestas, accumsan neque et, viverra nisl. Sed faucibus nec nulla sed imperdiet. Fusce quis sem ac urna semper tempor a id elit. Nulla fringilla vitae sapien a vehicula.</p>
<p>Nullam vestibulum lorem nec lectus egestas, nec ullamcorper diam maximus. Maecenas condimentum, nibh at blandit semper, ex erat tempus magna, id maximus neque velit accumsan nibh. Aenean dignissim lorem eu nisl laoreet vestibulum. Vivamus efficitur et augue vitae tincidunt. Etiam et magna felis. Integer mattis, nisi aliquet scelerisque blandit, ex mi sodales ante, eget accumsan quam magna et ligula. Curabitur id tristique leo. Proin rutrum mi vitae enim rhoncus, at cursus neque eleifend. Integer ultrices volutpat tellus ac porta. Fusce sollicitudin venenatis lacinia. Fusce ante lorem, gravida semper varius non, pharetra non erat. Sed dapibus arcu turpis, ac sollicitudin nibh lacinia vel. Nullam at enim porta, luctus metus sit amet, rutrum odio. Cras tempor enim vel pellentesque sollicitudin. Maecenas ullamcorper, sem non accumsan volutpat, neque tortor pulvinar orci, ut ultrices ligula lorem ut risus.</p>
<p>Aliquam facilisis, nibh eget posuere suscipit, arcu sapien iaculis odio, in molestie dolor lectus vitae sem. Cras id nunc mollis mi rutrum dapibus. Quisque rutrum a augue at scelerisque. Praesent faucibus ac enim vitae gravida. Sed et sodales elit. Duis magna lectus, interdum sit amet metus a, sagittis varius magna. Proin nibh lectus, egestas a luctus ut, dapibus et enim. Curabitur fringilla ipsum vitae nunc imperdiet consectetur eget non neque. Suspendisse ultricies odio quis lorem vulputate, ac vulputate turpis feugiat. Maecenas posuere rhoncus orci, in ornare velit suscipit tempor. Curabitur pretium nisl id lorem placerat consequat. In quis quam eros. Nam mattis elit eu quam sagittis, in varius erat tempor.</p>
<p>Fusce felis magna, pellentesque eget mollis a, rutrum id eros. Curabitur auctor varius arcu a consequat. Phasellus quis pulvinar enim, eu ultricies justo. Pellentesque risus libero, dapibus at erat ultricies, gravida varius erat. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Nulla tempus, justo ut laoreet mollis, nunc tellus convallis urna, vel pretium dui velit eget ligula. Aliquam semper sed nulla a molestie. Maecenas at egestas massa, vitae aliquam mi. Fusce nec sem egestas, pretium lacus non, tincidunt sapien. Sed tristique odio at ultricies vulputate. Integer et convallis augue, eu aliquam enim. Mauris ut faucibus diam. Donec vulputate nunc sed congue accumsan. Etiam lobortis nisi quis lacinia pharetra.</p>
</div>
</div>
</div>
<div class="cell shrink footer">
<h3>Here's my footer</h3>
</div>
</div>
网格框架页眉
一个中等 4 单元格块...在中等大小上,此内容应该溢出并让您水平滚动...可以将其用于一系列选项
独立滚动的侧边栏
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer lacus odio, accumsan id ullamcorper eget, varius nec erat. Nulla facilisi. Donec dui felis, euismod nec finibus vitae, dapibus quis arcu. Maecenas tempor et ipsum quis venenatis. Ut posuere sed augue sit amet efficitur. Sed imperdiet, justo id tempus rhoncus, est est viverra turpis, non vulputate magna lectus et nisl. Pellentesque ultrices porttitor vehicula. Ut aliquet efficitur ligula, a consectetur felis. Proin tristique ut augue nec luctus. Curabitur a sapien pretium, auctor elit a, efficitur erat. Donec tincidunt dui vel velit bibendum euismod. Cras vitae nibh dui. Aliquam erat volutpat. Etiam sit amet arcu a erat efficitur facilisis. Ut viverra dapibus turpis, et ornare justo. Integer in dui cursus, dignissim tortor a, hendrerit risus.
Suspendisse pulvinar, massa iaculis feugiat lobortis, dolor sapien vestibulum nulla, vel cursus tellus leo in lorem. Aliquam eu placerat urna. Suspendisse sed viverra orci, ut mattis neque. Fusce non ultrices nisi. In sagittis varius mollis. Quisque dolor quam, consectetur eu lacinia ac, ullamcorper vel arcu. Nullam mattis imperdiet nulla sed ornare. Praesent tristique, est id eleifend vestibulum, neque nibh condimentum ex, nec lobortis purus justo a libero. Phasellus id ex ac nunc hendrerit hendrerit. Nullam urna ipsum, rutrum at fringilla vel, venenatis non purus. Maecenas egestas ex vitae venenatis molestie. Ut et odio egestas, accumsan neque et, viverra nisl. Sed faucibus nec nulla sed imperdiet. Fusce quis sem ac urna semper tempor a id elit. Nulla fringilla vitae sapien a vehicula.
独立滚动的正文
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer lacus odio, accumsan id ullamcorper eget, varius nec erat. Nulla facilisi. Donec dui felis, euismod nec finibus vitae, dapibus quis arcu. Maecenas tempor et ipsum quis venenatis. Ut posuere sed augue sit amet efficitur. Sed imperdiet, justo id tempus rhoncus, est est viverra turpis, non vulputate magna lectus et nisl. Pellentesque ultrices porttitor vehicula. Ut aliquet efficitur ligula, a consectetur felis. Proin tristique ut augue nec luctus. Curabitur a sapien pretium, auctor elit a, efficitur erat. Donec tincidunt dui vel velit bibendum euismod. Cras vitae nibh dui. Aliquam erat volutpat. Etiam sit amet arcu a erat efficitur facilisis. Ut viverra dapibus turpis, et ornare justo. Integer in dui cursus, dignissim tortor a, hendrerit risus.
Suspendisse pulvinar, massa iaculis feugiat lobortis, dolor sapien vestibulum nulla, vel cursus tellus leo in lorem. Aliquam eu placerat urna. Suspendisse sed viverra orci, ut mattis neque. Fusce non ultrices nisi. In sagittis varius mollis. Quisque dolor quam, consectetur eu lacinia ac, ullamcorper vel arcu. Nullam mattis imperdiet nulla sed ornare. Praesent tristique, est id eleifend vestibulum, neque nibh condimentum ex, nec lobortis purus justo a libero. Phasellus id ex ac nunc hendrerit hendrerit. Nullam urna ipsum, rutrum at fringilla vel, venenatis non purus. Maecenas egestas ex vitae venenatis molestie. Ut et odio egestas, accumsan neque et, viverra nisl. Sed faucibus nec nulla sed imperdiet. Fusce quis sem ac urna semper tempor a id elit. Nulla fringilla vitae sapien a vehicula.
Nullam vestibulum lorem nec lectus egestas,nec ullamcorper diam maximus。Maecenas condimentum,nibh at blandit semper,ex erat tempus magna,id maximus neque velit accumsan nibh。Aenean dignissim lorem eu nisl laoreet vestibulum。Vivamus efficitur et augue vitae tincidunt。Etiam et magna felis。Integer mattis,nisi aliquet scelerisque blandit,ex mi sodales ante,eget accumsan quam magna et ligula。Curabitur id tristique leo。Proin rutrum mi vitae enim rhoncus,at cursus neque eleifend。Integer ultrices volutpat tellus ac porta。Fusce sollicitudin venenatis lacinia。Fusce ante lorem,gravida semper varius non,pharetra non erat。Sed dapibus arcu turpis,ac sollicitudin nibh lacinia vel。Nullam at enim porta,luctus metus sit amet,rutrum odio。Cras tempor enim vel pellentesque sollicitudin。Maecenas ullamcorper,sem non accumsan volutpat,neque tortor pulvinar orci,ut ultrices ligula lorem ut risus。
Aliquam facilisis,nibh eget posuere suscipit,arcu sapien iaculis odio,in molestie dolor lectus vitae sem。Cras id nunc mollis mi rutrum dapibus。Quisque rutrum a augue at scelerisque。Praesent faucibus ac enim vitae gravida。Sed et sodales elit。Duis magna lectus,interdum sit amet metus a,sagittis varius magna。Proin nibh lectus,egestas a luctus ut,dapibus et enim。Curabitur fringilla ipsum vitae nunc imperdiet consectetur eget non neque。Suspendisse ultricies odio quis lorem vulputate,ac vulputate turpis feugiat。Maecenas posuere rhoncus orci,in ornare velit suscipit tempor。Curabitur pretium nisl id lorem placerat consequat。In quis quam eros。Nam mattis elit eu quam sagittis,in varius erat tempor。
Fusce felis magna,pellentesque eget mollis a,rutrum id eros。Curabitur auctor varius arcu a consequat。Phasellus quis pulvinar enim,eu ultricies justo。Pellentesque risus libero,dapibus at erat ultricies,gravida varius erat。Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Nulla tempus,justo ut laoreet mollis,nunc tellus convallis urna,vel pretium dui velit eget ligula。Aliquam semper sed nulla a molestie。Maecenas at egestas massa,vitae aliquam mi。Fusce nec sem egestas,pretium lacus non,tincidunt sapien。Sed tristique odio at ultricies vulputate。Integer et convallis augue,eu aliquam enim。Mauris ut faucibus diam。Donec vulputate nunc sed congue accumsan。Etiam lobortis nisi quis lacinia pharetra。
语义化构建
XY 网格 CSS 是使用一组强大的 Sass mixin 生成的,您可以在自己的代码中使用它来构建语义网格。
网格容器
使用 xy-grid-container()
mixin 创建网格容器。它包含宽度在 $grid-container
中指定的网格。
.container {
@include xy-grid-container;
}
网格
使用 xy-grid()
mixin 创建网格。
.my-grid {
@include xy-grid;
}
间沟
使用 xy-gutters()
mixin 向项目添加间距。xy-cell
mixin 使用它来输出间距,但您可以使用它向任何您喜欢的东西添加响应式间距。这尤其强大,因为您可以指定您想要间距的位置,如下所示
.gallery-item {
@include xy-gutters($gutter-position: left right bottom);
}
单元格
使用 xy-cell()
mixin 创建单元格。有几种方法可以定义单元格的大小。xy-cell
接受一些不同的关键字以及特定的大小:full
(全宽)、auto
(自动宽度)和 shrink
(仅占用所需的空间)或任何分数(6
、50%
、1 of 2
或 1/2
...)。
.main-content {
// Use the full column count (100%)
@include xy-cell();
// Use a column count (33%);
@include xy-cell(4);
// Use a percentage (15%)
@include xy-cell(15%);
// Use a custom fraction (20%)
@include xy-cell(1 of 5);
}
单元格大小计算器也可以作为函数访问。这为您提供了百分比值,没有任何网格单元格 CSS。
.main-content {
width: xy-cell-size(1 of 7);
}
单元格由 3 部分组成:基准、大小和间距。为了避免重复属性,您可以使用 $output
选项选择要生成的部件,或者单独调用专用于每个部件的 XY 单元格 mixin。
.my-cell {
@include xy-cell(12, $gutters: none);
}
.my-cell.half-size {
@include xy-cell(6, $gutters: none, $output: (size));
// Or @include xy-cell-size(6);
}
有关参数的完整列表,请参阅 xy-cell mixin 的 Sass 文档。另请参阅 xy-cell-base、xy-cell-size 和 xy-cellgutters。
响应式网格
将 xy-cell
与 breakpoint()
mixin 配对以使您的网格具有响应性。xy-grid
mixin 将自动检测它所在的断点,但您可以使用 $breakpoint
选项强制它。请参阅下面的 Sass 文档,以了解每个 mixin 如何工作以及可用的参数。
.my-cell-medium-only-8 {
@include xy-cell();
// Generate a cell with a 8/12 width on medium breakpoint only
@include breakpoint(medium) {
@include xy-cell(8);
}
}
您还可以将它用于更高级的响应式单元格
// ... with a 8/12 width on medium breakpoint and above (with the medium gutters)
@include breakpoint(medium up) {
@include xy-cell(8);
}
// ... with a 8/12 width on medium, large and xlarge (with the corresponding gutters)
@include breakpoint(medium, large, xlarge up) {
@include xy-cell(8);
}
breakpoint
mixin,它将为每个断点复制其内容。请注意,仅将 breakpoint
用于应跨断点更改的属性。自定义块网格
使用 xy-grid-layout()
mixin 创建您自己的块网格。默认情况下,mixin 接受 2 个参数
- 列数
- 子选择器
有关参数的完整列表,请参阅下方的 Sass 文档。
这是一个示例
.gallery {
@include xy-grid;
@include xy-grid-layout(3, '.gallery-item');
}
输出以下 CSS
.gallery > .gallery-item {
width: calc(33.33333% - 1.25rem);
margin-right: 0.625rem;
margin-left: 0.625rem;
}
Sass 参考
变量
可以使用项目设置文件中的以下 Sass 变量来自定义此组件的默认样式。
名称 | 类型 | 默认值 | 描述 |
---|---|---|---|
$xy-grid |
布尔值 | true |
启用 XY 网格。 |
$grid-container |
数字 | $global-width |
网格容器的最大宽度。 |
$grid-columns |
数字 | 12 |
网格中使用的列数。 |
$grid-margin-gutters |
映射或长度 | "small": 20px |
使用边距网格时,不同屏幕尺寸下单元格之间的边距量。要仅使用一种尺寸,请将变量设置为数字而不是映射。 |
$grid-padding-gutters |
映射或长度 | $grid-margin-gutters |
使用填充网格时,不同屏幕尺寸下单元格中的填充量。要仅使用一种尺寸,请将变量设置为数字而不是映射。 |
$grid-container-padding |
映射或长度 | $grid-padding-gutters |
填充网格容器时要使用的填充量。 |
$grid-container-max |
数字 | $global-width |
应用于网格容器的最大宽度 |
$xy-block-grid-max |
数字 | 8 |
XY 块网格中的最大单元格数。 |
Mixin
我们使用这些 mixin 来构建此组件的最终 CSS 输出。您可以自己使用 mixin 来从我们的组件中构建自己的类结构。
xy-grid-frame
@include xy-grid-frame($vertical, $nested, $gutters, $breakpoint, $include-base);
修改网格以赋予其“框架”行为(无溢出、无换行、拉伸行为)
参数 | 类型 | 默认值 | 描述 |
---|---|---|---|
$vertical |
布尔值 | false |
网格是垂直的还是水平的。应与网格匹配。 |
$nested |
布尔值 | false |
网格是否嵌套。如果 nested 为 true,则将框架设置为 100% 高度,否则将为 100vh。 |
$gutters |
数字或映射 | null |
间距的映射或单个值。 |
$breakpoint |
字符串 | null |
间距映射中要从中获取尺寸的断点尺寸的名称。 |
$include-base |
布尔值 | true |
包括每个断点不变化的基本样式。 |
xy-cell-block
@include xy-cell-block($vertical);
修改单元格以赋予其“块”行为(自动溢出、惯性滚动)
参数 | 类型 | 默认值 | 描述 |
---|---|---|---|
$vertical |
布尔值 | false |
网格是垂直的还是水平的。应与网格匹配。 |
xy-cell-block-container
@include xy-cell-block-container;
网格框架内包含多个块的容器。通常用作 .cell
的修饰符,以允许单元格传递来自父级的 flex 尺寸约束/到子级。
xy-cell-base
@include xy-cell-base($size);
设置单元格的基本 flex 属性。
参数 | 类型 | 默认值 | 描述 |
---|---|---|---|
$size |
关键字 | full |
单元格的大小。接受 |
xy-cell-reset
@include xy-cell-reset($vertical);
重置单元格宽度(如果 vertical 为 true 则为高度)并去除其间距。
参数 | 类型 | 默认值 | 描述 |
---|---|---|---|
$vertical |
布尔值 | false |
设置为 true 以输出垂直(高度)样式而不是宽度。 |
xy-cell-size
@include xy-cell-size($size, $gutters, $gutter-type, $breakpoint, $vertical);
设置单元格的尺寸属性。
具有边距间距的单元格需要与间距相关的参数(默认情况下),因为间距包含在宽度中。
参数 | 类型 | 默认值 | 描述 |
---|---|---|---|
$size |
关键字或数字 | full |
单元格的大小。可以是 |
$gutters |
数字或映射 | $grid-margin-gutters |
间距的映射或单个值。 |
$gutter-type |
关键字 | margin |
要输出的间距类型。接受 |
$breakpoint |
字符串 | null |
间距映射中要从中获取尺寸的断点尺寸的名称。如果为 |
$vertical |
布尔值 | false |
设置为 true 以输出垂直(高度)样式而不是宽度。 |
xy-cell-gutters
@include xy-cell-gutters($gutters, $gutter-type, $gutter-position, $breakpoint, $vertical);
设置单元格的间距属性。
参数 | 类型 | 默认值 | 描述 |
---|---|---|---|
$gutters |
数字或映射 | $grid-margin-gutters |
间距的映射或单个值。 |
$gutter-type |
关键字 | margin |
要输出的间距类型。接受 |
$gutter-position |
列表 | null |
应用间距的位置。接受 |
$breakpoint |
字符串 | null |
间距映射中要从中获取尺寸的断点尺寸的名称。如果为 |
$vertical |
布尔值 | false |
要输出的间距方向。请参阅 |
xy-cell
@include xy-cell($size, $gutter-output, $gutters, $gutter-type, $gutter-position, $breakpoint, $vertical, $output);
为您的网格创建一个单元格。
参数 | 类型 | 默认值 | 描述 |
---|---|---|---|
$size |
关键字或数字 | full |
单元格的大小。可以是 |
$gutter-output |
布尔值 | null |
[已弃用] 是否输出间距。 |
$gutters |
数字或映射 | $grid-margin-gutters |
间距的映射或单个值。 |
$gutter-type |
关键字 | margin |
要输出的间距类型。接受 |
$gutter-position |
列表 | null |
应用间距的位置。接受 |
$breakpoint |
字符串 | null |
间距映射中要从中获取尺寸的断点尺寸的名称。如果为 |
$vertical |
布尔值 | false |
设置为 true 以输出垂直(高度)样式而不是宽度。 |
$output |
列表 | base size gutters |
要输出的单元格部分。您将需要单独生成单元格的其他部分,否则它可能无法正常工作。 |
xy-cell-static
在 v6.6.0 中已弃用
@include xy-cell-static($size, $gutter-output, $gutters, $gutter-type, $breakpoint, $vertical);
创建一个单断点大小的网格。用于生成我们的网格类。
xy-cell-static()
已弃用,并将被删除。请改用 xy-cell()
并使用 $output: (size gutters)
来不生成单元格基准。请参阅 https://git.io/foundation-6-6-0 上的迁移说明
参数 | 类型 | 默认值 | 描述 |
---|---|---|---|
$size |
关键字或数字 | full |
单元格的大小。可以是 |
$gutter-output |
布尔值 | true |
是否输出间距。对于边距间距始终为 |
$gutters |
数字或映射 | $grid-margin-gutters |
间距的映射或单个值。 |
$gutter-type |
关键字 | margin |
间距的映射或单个值。 |
$breakpoint |
字符串 | null |
间距映射中要从中获取尺寸的断点尺寸的名称。如果与 |
$vertical |
布尔值 | false |
设置为 true 以输出垂直(高度)样式而不是宽度。 |
xy-grid-collapse
@include xy-grid-collapse($selector, $gutter-type, $gutter-position, $min-breakpoint);
折叠网格及其中的单元格。
参数 | 类型 | 默认值 | 描述 |
---|---|---|---|
$selector |
字符串 | .cell |
要从中删除间距的子元素。 |
$gutter-type |
关键字 | margin |
要删除的间距类型。 |
$gutter-position |
列表 | right left |
要从中删除间距的位置。接受 |
$min-breakpoint |
关键字 | $-zf-zero-breakpoint |
|
xy-grid-container
@include xy-grid-container($width, $padding);
创建一个最大宽度容器,用于容纳您的网格内容。
参数 | 类型 | 默认值 | 描述 |
---|---|---|---|
$width |
数字 | $grid-container |
限制容器的宽度。 |
$padding |
数字 | $grid-container-padding |
容器的内边距。 |
xy-grid
@include xy-grid($direction, $wrap);
为您的弹性单元格创建一个容器。
参数 | 类型 | 默认值 | 描述 |
---|---|---|---|
$direction |
关键字 | horizontal |
内部单元格的水平或垂直方向。 |
$wrap |
布尔值 | true |
内部的单元格是否应该换行。 |
xy-gutters
@include xy-gutters($gutters, $gutter-type, $gutter-position, $negative);
为单元格/容器创建间 Gutter。
参数 | 类型 | 默认值 | 描述 |
---|---|---|---|
$gutters |
数字或映射 | $grid-margin-gutters |
间距的映射或单个值。 |
$gutter-type |
关键字 | margin |
要输出的 Gutter 类型。 接受 margin 或 padding。 |
$gutter-position |
列表 | right left |
应用 Gutter 的位置。 接受 |
$negative |
布尔值 | false |
是否将 Gutter 应用为负值。 通常用于嵌套网格。 |
xy-grid-layout
@include xy-grid-layout($n, $selector, $gutter-output, $gutters, $gutter-type, $gutter-position, $breakpoint, $vertical, $output);
调整子元素的大小,以便每行显示 $n
个项目。
参数 | 类型 | 默认值 | 描述 |
---|---|---|---|
$n |
数字 | 无 |
每行显示的元素数量。 |
$selector |
字符串 | '.cell' |
用于子元素的选择器。 |
$gutter-output |
布尔值 | null |
[已弃用] 是否输出间距。 |
$gutters |
数字或映射 | $grid-margin-gutters |
间距的映射或单个值。 |
$gutter-type |
关键字 | margin |
要输出的间距类型。接受 |
$gutter-position |
列表 | null |
应用间距的位置。接受 |
$breakpoint |
字符串 | null |
用于单元格生成的断点。 如果与 |
$vertical |
布尔值 | false |
设置为 true 以输出垂直(高度)样式而不是宽度。 |
$output |
列表 | base size gutters |
要输出的单元格部分。 您将需要单独生成单元格的其他部分,否则它可能无法正常工作。 |
xy-cell-offset
@include xy-cell-offset($n, $gutters, $gutter-type, $breakpoint, $vertical);
将列向右/下偏移 $n
列。
参数 | 类型 | 默认值 | 描述 |
---|---|---|---|
$n |
数字或列表 | 无 |
要偏移的大小。 您可以传入 |
$gutters |
数字或映射 | $grid-margin-gutters |
Gutter 映射或用于响应式 Gutter 的单个值。 |
$gutter-type |
关键字 | margin |
要使用的 Gutter 类型。 可以是 |
$breakpoint |
数字或数组或关键字 | null |
用于 |
$vertical |
布尔值 | false |
设置偏移的方向。 如果设置为 true,则将应用 margin-top。 |
函数
xy-cell-base
xy-cell-base($size)
返回单元格基准的适当 CSS flex 值。
参数 | 类型 | 默认值 | 描述 |
---|---|---|---|
$size |
关键字 | full |
单元格的大小。接受 |
xy-cell-gutters
xy-cell-gutters($gutters, $breakpoint)
计算单元格 Gutter 的大小。
参数 | 类型 | 默认值 | 描述 |
---|---|---|---|
$gutters |
数字或映射 | $grid-margin-gutters |
间距的映射或单个值。 |
$breakpoint |
字符串 | null |
Gutter 映射中要从中获取大小的断点大小的名称。 如果为 |
xy-cell-size
xy-cell-size($size)
返回单元格的百分比大小。
参数 | 类型 | 默认值 | 描述 |
---|---|---|---|
$size |
数字或列表 | $grid-columns |
制作单元格的大小。 您可以以多种格式传递值,例如 |
xy-cell-size-css
xy-cell-size-css($size, $gutters, $gutter-type, $breakpoint)
返回单元格大小的适当 CSS 值。
具有边距间距的单元格需要与间距相关的参数(默认情况下),因为间距包含在宽度中。
参数 | 类型 | 默认值 | 描述 |
---|---|---|---|
$size |
关键字或数字 | full |
单元格的大小。 可以是 |
$gutters |
数字或映射 | $grid-margin-gutters |
间距的映射或单个值。 |
$gutter-type |
关键字 | margin |
要输出的间距类型。接受 |
$breakpoint |
字符串 | null |
Gutter 映射中要从中获取大小的断点大小的名称。 如果为 |
xy-cell-offset
xy-cell-offset($n, $gutters, $gutter-type, $breakpoint)
返回偏移单元格的适当 CSS 值。
参数 | 类型 | 默认值 | 描述 |
---|---|---|---|
$n |
数字或列表 | 无 |
要偏移的大小。 您可以传入 |
$gutters |
数字或映射 | $grid-margin-gutters |
Gutter 映射或用于响应式 Gutter 的单个值。 |
$gutter-type |
关键字 | margin |
要使用的 Gutter 类型。 可以是 |
$breakpoint |
字符串 | null |
间距映射中要从中获取尺寸的断点尺寸的名称。如果与 |