我使用的是Susy 2.0。我正在构建一个固定宽度的站点(将在后期阶段响应)。但是,我认为我的问题适用于使用Susy作为静态或流体。
以下是我的全局设置:
$susy: (
container: auto,
columns: 12,
column-width: 62px,
math: static,
gutters: 1/3,
);
根据关于静态网站的Susy 2.0文档,我将容器设置为自动,并且我允许列宽设置决定容器元素的宽度。
我想在容器上应用一些左右填充,这样当视口在移动设备上变窄时,两侧都会有一点呼吸空间。
最好的方法是什么?如果我只是将padding-left和padding-right(在纯CSS中)应用于我的容器元素,这会破坏网格。容器不再宽,不足以包含Susy的列宽计算。
我有' box-sizing'普遍设置为边界框'在我的CSS中。如果我在容器元素上使用' content-box'覆盖它,则网格行为正确。我实际上期待相反的事情吗?
解决方案是否应用'框大小调整:内容框'到我的容器元素?或者在Susy中有一个设置我可以申请我失踪了吗?我觉得可能有。如果可能的话,我宁愿让Susy处理所有网格计算。
我的问题也适用于响应/流体设计,因为即使我给容器设置一个特定的宽度并删除了“列宽”,我仍然会遇到同样的问题。和'数学'设置。
答案 0 :(得分:10)
目前,在容器上设置content-box
并添加自己的填充是最好的方法。虽然border-box
对大多数事情更为明智,但有时content-box
才有意义,而且我认为这是一个很好的例子。它的工作原理是因为Susy设置了容器宽度,并且填充将添加到其中,而不是被减去,这意味着您仍然拥有网格所需的空间。
我愿意再次考虑某种类型的grid-padding
功能,但在Susy 1中,似乎它引起的问题多于它解决的问题。我将不得不通过更好的方式来思考。如果你有想法,我总是感兴趣!
答案 1 :(得分:2)
对于网格填充,我通常会做这样的事情。效果很好,不需要进一步的复杂化:)
.container {
@include container($susy);
padding-left: 15px;
padding-right: 15px;
}
答案 2 :(得分:0)
一般情况下,您需要添加关键字" static"到容器,它给你一个静态网站,但你需要包括"数学:流体"设置为您提供基于百分比的网站。否则,正如您在问题中提到的那样,"容器不再宽,不足以包含Susy的列宽计算"。
Susy设置
您仍然可以拥有基于边框的网站。将global-box-sizing:border-box添加到设置中。你还需要改变" math:static" to" math:fluid"这样你的所有单位都是百分比。
边框包含
添加" @include border-box-sizing;"在@suzy设置之外。您可能必须在" @import"指南针&#34 ;;"
中包含指南针<强>容器强>
你需要包含&#34;静态&#34;作为参数。容器采用&#34;布局&#34;参数(http://susydocs.oddbird.net/en/latest/toolkit/#container)。 &#34;布局&#34;变量由关键字(http://susydocs.oddbird.net/en/latest/shorthand/#shorthand-layout)组成。 &#34;关键字&#34;包括&#34;静态&#34; (http://susydocs.oddbird.net/en/latest/shorthand/#term-keywords)。
完整示例
$susy: (
container: auto,
columns: 12,
column-width: 62px,
math: fluid,
global-box-sizing: border-box,
gutters: 1/3
);
@include border-box-sizing;
.container {
@include container(static);
padding: 1%;
}
现在可以在不破坏网站的情况下将填充添加到容器或任何其他元素。
答案 3 :(得分:0)
如果您可以在容器宽度本身的相同模式(相对或固定)中添加一些边距,则可以减小容器的宽度,并使用margin: 0 auto
将其置于其父级中心。
像这样,每边有5%的填充:
.my-container {
@include container(90%);
margin: 0 auto;
}
如果Susy支持CSS函数作为容器宽度,即使使用相对容器宽度也可以使用固定数量的像素,例如每边10px:
.my-container {
@include container(calc(100% - 20px));
margin: 0 auto:
}
不幸的是,这不起作用。当然,如果你可以在容器周围添加一个包装div,你可以在那里设置宽度和边距并使用container(100%)
。