【发布时间】:2013-10-13 17:18:51
【问题描述】:
我在理解如何使用 Susy Next 生成以下布局时遇到了一些问题。
虽然这对于 strait CSS 来说是相当困难的,但我似乎无法在 Susy 中干净利落地做这件事,或者根本就没有。
这里需要注意的是,我不能在布局中添加任何额外的包装器,它只有四个 DIV 块并且必须这样。另一个需要注意的是,我真的更喜欢使用 Susy Next(我目前使用的是 alpha4)。
真的有点希望我只是没有看到树林中的树木,因为我只使用了几个星期的 Susy。
来源顺序为:
first
second
third
fourth
需要的布局是:
-----------------------------------------
| fourth | first |
| ----------------------------
| | second | third |
-----------------------------------------
更新 1。
更新以添加我当前的 CSS 解决方案,为了完整起见,我已经包含了标记和所有影响页面的 CSS:
<main>
<div class="container">
<div class="region region-first"></div>
<div class="region region-second"></div>
<div class="region region-third"></div>
<div class="region region-fourth"></div>
</div>
</main>
.container {
*zoom: 1;
max-width: 73.75em;
margin-left: auto;
margin-right: auto;
padding: 0 1.25em;
}
.container:after {
content: "";
display: table;
clear: both;
}
* {
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
box-sizing: border-box;
}
main .region:first-child {
width: 66.1016949%;
float: right;
}
main .region:nth-child(2) {
clear: right;
float: right;
margin-right: 33.8983051%;
width: 32.2033898%;
}
main .region:nth-child(3) {
margin-right: -66.1016949%;
width: 32.2033898%;
float: right;
}
main .region:last-child {
width: 32.2033898%;
margin: 0;
}
解决方案的一些想法?
我开始研究 Susy Next 的内部结构,并尝试直接调用 span() 函数来获取宽度,万岁这在我只需要 width: 值的情况下有效,但是......
...我正在做的margin-right: span(4 + $gutter) 边距值需要与 push 或 pre 将返回的值相同,但我不太了解它们如何工作的所有内部结构,我的“神奇浮动” " 0.75 计算 $gutter 时稍微不准确,它可能是正确的,但当然改变 set-grid 中的值并且它可能是错误的,所以它充其量只是一个粗略的猜测。
我需要的是一种获得与 pre 将返回的值相同的值的方法,但当然只是该值,或者只是一种更好的方法来完成整个事情:)
.region {
&:first-child {
@include span(8 omega of 12);
}
&:nth-child(2) {
$gutter: $gutters * .75;
margin-right: span(4 + $gutter);
width: span(4);
float: right;
clear: right;
}
&:nth-child(3) {
margin-right: - span(8);
width: span(4);
float: right;
}
&:last-child {
width: span(4);
}
}
【问题讨论】:
-
我不认为这在 CSS 中实际上是直截了当的。我从来没有见过没有一些复杂性、设置高度或 JS 的情况下完成它。在 CSS 中可以做的任何事情都可以通过 Susy 实现。如果您向我展示 CSS 解决方案,我将向您展示如何使用 Susy 创建它。 :)
-
纯 CSS 无法满足您的要求。这只能使用浮动来完成,并且源顺序必须是 4、1、2、3。Flexbox 将允许您重新排序,但您根本无法获得这种布局(4 和 1 在一行中,2和下一行的 3 个)。
-
哇,伙计们,好的,我更新了我的帖子以包含我为布局原型而手工制作的 CSS 和标记 - 你是对的,也许它不是那么困难:) @cimmanon,是的,它是可能的,也许我解释得不对,我尝试添加图像,但我还没有足够的街头信誉:) 我可以截取浏览器的屏幕截图并将其发布到某个地方,如果你愿意的话,我发现很难解释一下我的意思,我的 ascii 艺术不是很好。
标签: css grid sass susy-compass