0

我需要在我正在使用的纯网格中添加排水沟。因为我需要默认情况下它应该只是像这个例子一样的常规纯网格 css:

<div class="pure-g">
    <div class="pure-u-1-2">
        <label for="username">username</label>
        <input id="username" />
    </div>
    <div class="pure-u-1-2">
        <label for="password">password</label>
        <input type="password" id="password" />
    </div>
</div>

到目前为止我尝试了什么:

[class^="pure-u-"] {
    margin-right: 24pt;
    padding-right:12pt;
}

[class^="pure-u-"]:last-of-type {
    margin:0;
    padding:0;
}

我也试过了,box-sizing但也没有用:

[class^="pure-u-"] {
    box-sizing: border-box;
    margin-right:12pt;
}

我还必须担心浏览器的支持。不是很好,但如果旧浏览器正确显示它们会很棒。


举例我有什么和我想要什么

4

3 回答 3

2

更新:

我找到了一种更好的方法来做到这一点,这也容易得多。

/* Add a gutter to Pure's Columns */
.pure-g {
  margin: 0 -1em;
}

.pure-g > div {
  padding: 0 1em;
}

而已。从下到上更容易阅读:在纯 g div 的所有 div 子项的左侧和右侧添加 1em 的间距。然后在纯g容器上,左右各减1em。从第一个和最后一个 pure-u-whatever 中取消填充。

为什么这样更好?

因为如果你连续拥有三个 pure-u-1-2,你最终不会得到不稳定的填充。


只需在 pure-g 的所有直接子 div 上添加左右填充(如果您遵循规范,则必须是 pure-u-blah 类)。然后删除第一个左边的填充,最后一个右边的填充。

理想情况下,我会使用边距,这样背景样式也会被隔开,但我无法让它发挥作用。此外,第一列和最后一列将比任何中间列稍宽,因为它们的排水沟少了一个。

.pure-g > div {
  padding: 0 1em;
}

.pure-g > div:first-child {
  padding-left: 0;
}

.pure-g > div:last-child {
  padding-right: 0;
}

对此类布局进行故障排除的一个好技巧是将以下行添加到您的 CSS:

* { box-shadow: 0 0 1px red; }

这将在所有内容周围添加一个微弱的红色边框,而不会像边框规则那样更改布局。

如果列与此代码垂直堆叠,请检查您的框大小。Pure 并没有奇怪地为网格设置它。我总是在某个地方的 reset.css 文件中为 * 设置这个。

.pure-g > div {
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  box-sizing: border-box;
}
于 2016-03-14T18:05:18.320 回答
0

您可以像在多列表单示例中那样向输入字段添加一个类吗?http://purecss.io/forms/#multi-column-form-with-pure-grids

<input id="first-name" class="pure-u-23-24" type="text">
于 2015-06-16T05:10:48.123 回答
0

这对我有用:

.pure-g > div
{
    box-sizing: border-box;
}
.pure-g > div:first-child
{
    padding-right: 12pt;
}
.pure-g > div:last-child
{
    padding-left: 12pt;
}
.pure-g > div :not(:first-child):not(:last-child)
{
    padding: 0 12pt;
}
于 2015-08-27T20:50:40.643 回答