栅格

创建完全响应式、流式且可嵌套的栅格布局。

UIkit 的栅格系统遵循移动优先方法,最多可容纳 10 个栅格列。它在每个栅格内使用具有预定义类的单元,这些类定义了列宽。也可以将栅格与弹性布局组件中的类结合使用,尽管它仅在现代浏览器中有效。


用法

要创建栅格容器,请将 .uk-grid 类添加到父元素。将 .uk-width-* 类之一添加到子元素以确定单元格的大小。栅格支持 1、2、3、4、5、6 和 10 个单元格分割。下表概述了可应用于单元格的 uk-width-* 类。

描述
.uk-width-1-1 填充可用宽度的 100%。
.uk-width-1-2 将栅格分成两半。
.uk-width-1-3.uk-width-2-3 将栅格分成三分。
.uk-width-1-4.uk-width-3-4 将栅格分成四份。
.uk-width-1-5.uk-width-4-5 将栅格分成五份。
.uk-width-1-6.uk-width-5-6 将栅格分成六份。
.uk-width-1-10.uk-width-9-10 将栅格分成十分。

我们在每组单元格类中都构建了有意的冗余,因此例如 .uk-width-5-10 类与 .uk-width-1-2 的效果相同。

示例

仔细查看以下栅格示例,它为您提供了所有基本 .uk-width-* 类的概览。

.uk-width-1-3
.uk-width-1-3
.uk-width-1-3
.uk-width-1-2
.uk-width-1-2
.uk-width-3-10
.uk-width-7-10

注意栅格没有相关的样式 CSS。在我们的示例中,我们使用了面板组件中的面板。

标记

这是一个简单的代码示例,展示了具有 2 列的默认栅格的样子

<div class="uk-grid">
    <div class="uk-width-1-2">...</div>
    <div class="uk-width-1-2">...</div>
</div>

响应式宽度

UIkit 提供了一些非常有用的响应式宽度类。基本上,它们的工作方式与通常的宽度类相同,只是它们带有前缀,因此它们仅在某些断点处生效。这些类可以与实用工具组件中的可见性类结合使用。这非常适合调整不同设备尺寸的布局和内容。

描述
.uk-width-* 影响所有设备宽度,栅格列并排显示。
.uk-width-small-* 影响 480px 及以上的设备宽度。栅格列将在较小的尺寸上堆叠。
.uk-width-medium-* 影响 768px 及以上的设备宽度。栅格列将在较小的尺寸上堆叠。
.uk-width-large-* 影响 960px 及以上的设备宽度。栅格列将在较小的尺寸上堆叠。

重要要在堆叠的栅格列之间创建边距,只需添加 data-uk-grid-margin 属性。

示例

.uk-width-medium-1-2 .uk-width-large-1-3
.uk-hidden-medium .uk-width-large-1-3
.uk-width-medium-1-2 .uk-width-large-1-3
.uk-width-1-2 .uk-width-medium-1-3
.uk-hidden-small .uk-width-medium-1-3
.uk-width-1-2 .uk-width-medium-1-3
.uk-width-1-1 .uk-visible-small
.uk-width-medium-1-1 .uk-visible-medium
.uk-width-large-1-1 .uk-visible-large

栅格间距

栅格会自动在列之间创建水平间距,在两个连续的栅格之间创建垂直间距。默认情况下,栅格间距在大屏幕上更宽。

示例

Lorem ipsum
Lorem ipsum
Lorem ipsum

大间距

要在栅格列之间应用大间距,只需添加 .uk-grid-large 类。

示例

Lorem ipsum
Lorem ipsum
Lorem ipsum

中等间距

要在栅格列之间应用中等大小的间距,只需添加 .uk-grid-medium 类。

示例

Lorem ipsum
Lorem ipsum
Lorem ipsum

小间距

要在栅格列之间应用较小的间距,只需添加 .uk-grid-small 类。

示例

Lorem ipsum
Lorem ipsum
Lorem ipsum

折叠间距

要完全删除间距,只需添加 .uk-grid-collapse 类。

示例

Lorem ipsum
Lorem ipsum
Lorem ipsum

嵌套栅格

您可以轻松地使用嵌套栅格扩展您的栅格布局。

示例

.uk-width-1-2
.uk-width-1-2
.uk-width-1-2

标记

<div class="uk-grid">
    <div class="uk-width-1-2">...</div>
    <div class="uk-width-1-2">
        <div class="uk-grid">
            <div class="uk-width-1-2">...</div>
            <div class="uk-width-1-2">...</div>
        </div>
    </div>
</div>

中心栅格

实用工具组件中添加 .uk-container-center 类以居中栅格列。

示例

.uk-container-center

栅格分隔线

添加 .uk-grid-divider 类以使用线条分隔栅格列。要使用水平线分隔栅格,只需将该类添加到 <hr><div> 元素。

示例

.uk-width-medium-1-3
.uk-width-medium-1-3
.uk-width-medium-1-3

.uk-width-medium-1-3
.uk-width-medium-1-3
.uk-width-medium-1-3

标记

<div class="uk-grid uk-grid-divider">...</div>
<hr class="uk-grid-divider">
<div class="uk-grid uk-grid-divider">...</div>

注意水平分隔线不能应用于任何带有 uk-push-*uk-pull-* 类的栅格。


源排序

您可以更改列的显示顺序,以在源代码中保留特定的列顺序。添加 .uk-push-* 类之一以将列向右移动,并添加 .uk-pull-* 类之一以将列向左移动。例如,这允许您为更宽的视口翻转列的显示顺序。这些类还可以用于偏移列,从而在它们之间创建额外的空间。

源排序对于 SEO 和响应式设计很有用,因为在窄视口中,栅格将根据标记的源顺序显示。

注意此功能仅与 .uk-width-medium-* 类之一结合使用时有效。

示例

.uk-width-medium-1-2 .uk-push-1-2
.uk-width-medium-1-2 .uk-pull-1-2
.uk-width-medium-2-5 .uk-push-3-5
.uk-width-medium-2-5 .uk-pull-2-5

标记

<div class="uk-grid">
    <div class="uk-width-medium-1-2 uk-push-1-2">...</div>
    <div class="uk-width-medium-1-2 uk-pull-1-2">...</div>
</div>

匹配列高度

栅格组件使用 Flexbox,因此栅格列的高度会自动匹配。要在不支持 Flexbox 的旧版浏览器中实现相同的效果,只需将 data-uk-grid-match 属性添加到您的栅格。如果您的栅格包裹成多行,则仅匹配同一行中的栅格列。要匹配所有行中的栅格列,只需使用 data-uk-grid-match="{row: false}"

示例

Lorem ipsum dolor sit amet。
Lorem ipsum dolor sit amet。
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam.

标记

<div class="uk-grid" data-uk-grid-match>...</div>

注意如果栅格列扩展到 100% 的宽度,则它们的高度将不再匹配。例如,如果它们在较窄的视口中垂直堆叠,这是有道理的。


匹配面板高度

如果您想匹配栅格中面板的高度,只需添加 .uk-grid-match 类。使用数据属性时,您需要添加 {target:'.uk-panel'} 选择器。

示例

Lorem ipsum dolor sit amet。
Lorem ipsum dolor sit amet。
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam.

标记

<div class="uk-grid uk-grid-match" data-uk-grid-match="{target:'.uk-panel'}">
    <div class="uk-width-medium-1-3">
        <div class="uk-panel">...</div>
    </div>
</div>

包裹多行

您还可以创建一个具有任意多列的栅格,这些列会自动断到下一行。只需添加 data-uk-grid-margin 属性即可在栅格行之间创建边距。通常,此布局是使用 <ul> 元素构建的。

示例

注意您还可以为栅格列应用自定义宽度。只需添加 .uk-width 类并使用内联样式定义宽度。此示例使用固定像素值作为宽度,就像您使用图像一样。

标记

<ul class="uk-grid" data-uk-grid-margin>

    <!-- These elements have a width in percent -->
    <li class="uk-width-medium-1-5">...</li>
    <li class="uk-width-medium-3-10">...</li>

    <!-- These elements have a width in pixel -->
    <li class="uk-width" style="width: 100px;">...</li>
    <li class="uk-width" style="width: 150px;">...</li>

</ul>

均匀栅格列

要创建一个栅格,使其子元素的宽度均匀分割,您无需将相同的类应用于栅格中的每个列表项。只需将 .uk-grid-width-* 类之一添加到栅格本身即可。

描述
.uk-grid-width-1-2 将栅格分成两半。
.uk-grid-width-1-3 将栅格分成三分。
.uk-grid-width-1-4 将栅格分成四份。
.uk-grid-width-1-5 将栅格分成五份。
.uk-grid-width-1-6 将栅格分成六份。
.uk-grid-width-1-10 将栅格分成十分。

示例

标记

<ul class="uk-grid uk-grid-width-1-5">
    <li>...</li>
    <li>...</li>
</ul>

响应式宽度

UIkit 还提供了响应式栅格宽度类。您可以应用这些类来保持均匀大小的栅格列,而不管设备宽度如何。

描述
.uk-grid-width-* 影响所有设备宽度。
.uk-grid-width-small-* 影响 480px 及以上的设备宽度。
.uk-grid-width-medium-* 影响 768px 及以上的设备宽度。
.uk-grid-width-large-* 影响 960px 及以上的设备宽度。
.uk-grid-width-xlarge-* 影响 1220px 及以上的设备宽度。

示例

标记

<ul class="uk-grid uk-grid-width-1-2 uk-grid-width-medium-1-3 uk-grid-width-large-1-5">
    <li>...</li>
    <li>...</li>
</ul>