Susy2教程
Susy是一个创建高度订制grid的实用工具,Susy2已经正式发布了,如果你喜爱Susy1,那么你一定也会喜欢上Susy2,因为它提供了更多的灵活性。
本教程分为两部分,在教程中,我将分享如何使用Susy2创建Complex AG Grid。
为什么使用Susy
就像我上面提到的,Susy使你可以轻松的创建各种类型的grid,并且不需要大量的数学计算,Susy的美丽之处在于,它从HTML中分离出了视图的CSS。
如果你在之前使用过传统的grid框架,比如Foundation和Bootstrap,你肯定已经知道,这些框架的grid都有着固定的宽度和视图,而且,如果你想更改你的布局,你必须在HTML代码中添加新的class。
Susy完全抛弃了这种布局方式,你可以只关注CSS类的目的,然后给它使用一个grid。
当然,我知道这说起来很抽象、很难理解,与其一直在这讲原理,如果我们马上开始使用Susy2来构建一个复杂的grid系统,采用Arnaud Guera (AG)设计,包含10个栏目,这个grid看起来就像这样:
安装Susy2
如果你没有安装过Susy2
Susy需要依赖Sass,你可以使用下面的命令安装:
|
|
如果你已经安装了Susy2
如果你已经安装了Susy2,并且在你的环境中有Ruby RVM,你可以使用gem更新:
|
|
如果不成功的话,你可以尝试下一个方法,或者先安装Ruby RVM。
第二种安装Susy2的方法要手动进行,首先卸载上面的两个gem包,重新安装它们,不使用更新来安装的话可以更好的避免错误。
|
|
现在你已经安装了Susy2,我们开始配置Susy2。
配置Susy2
如同原来的版本,使用Susy2,需要在config.rb文件中调用susy。
|
|
然后你需要在样式表中导入并使用susy。
|
|
Susy2有大量的默认全局配置,你可以修改这些配置:
|
|
你可以使用默认配置,或者修改配置,这取决于你想要如何使用Susy,我将会在另一篇教程中更深入的介绍它的默认配置。你现在可以立即使用默认配置的Susy,但是因为我喜爱使用border-box和rem单位,所以我要修改一些默认配置:
|
|
请记住,Susy默认是流式布局,这意味着外面的容器元素的宽度是100%的。
如果你想要使用Susy的固定宽度和视图,修改math
为static
,这两种模式主要的不同会在另一片教程中讲解。
还有,你必须在项目中包含compass,初始配置看起来大致是这样的:
|
|
AG Grid的HTML和CSS代码
我已经在Susy1教程中创建了同样的AG Grid,所以HTML代码跟原来是一样的。
|
|
简单讲,如果内容是在另一个div里面的,你应该在上一个div里面嵌套它。
举个例子,AG4到AG7会嵌套在AG2里面,AG8、AG9和AG10会嵌套在AG10里面。
grid background的CSS代码也是一样的。
|
|
好了,现在我们可以投身于更多的Susy的细节。
导入Susy2 Mixin和函数
在正式使用Susy2完成grid之前,我们需要知道三个非常重要的被用于Susy的Mixin和函数,如果你明白了这些内容,你就可以使用Susy做任何事情。
The Container Mixin
首先,你需要给Susy定义一个容器,来使用它的神奇的计算能力。
|
|
container mixin有一个可选的length
参数,允许你设置容器的最大宽度,如果没有这个值,Susy默认的使用max-width: 100%;
代替。
如果你是使用静态grid,Susy建议让Susy自动为你计算最大宽度。
为了使用自动计算,你可以省略length
参数。
|
|
Span (Mixin)
span mixin是Susy布局的核心,Susy使它非常灵活。
我通常使用Susy的方式来写我的布局。
|
|
如果你使用Susy1,你将会注意到这和span-column
Mixin十分相像,仅有一点点区别。
让我来打破它,详细的解释下这里发生了什么:
<width>
refers to the number of columns the element going to take up.- [
<wide / wider>
]is a optional argument lets you expand the width of the column to include 1 or 2 more gutters respectively
of is a keyword to let Susy know that the layout is coming up. <layout>
is the context of the container, along with other optionals that define the layout. (Context refers to the number of columns the parent container is made up of).- [
<last>
] is an optional argument that tells Susy that this element is supposed to be the last item in the row.
请看这个例子:
|
|
Span (Function)
Span Function与Span Mixin相似,唯一例外的是它返回元素的宽度,在这你仅仅需要<width>
、<wide/wider>
和<layout>
。
|
|
这个函数使我们不需要像以前那样使用margin和padding,而是更容易的实现对齐元素,现在你可以仅仅使用Span Function来在Pad上获得正确的宽度。
Gutter Function
Gutter Function仅关注一个问题 - 上下文环境。
|
|
在使用Sysu2时,还有很多重要的函数需要你了解。
使用Sysu2构建AG Grid
使用Sysu的第一件事就是创建容器,在这个例子中我们的容易是.container
。
|
|
我们已经知道了容器会控制浮动的元素,我们将要给它清除浮动。
|
|
首先,我们在AG1、AG2和AG3上创建布局,经过考虑,我们的容器大概需要占据10个栏目,AG1和AG3每个占2个栏目,剩余的被AG2占用,AG2需要清除浮动,并作为AG4到AG10的容器。
|
|
如果你现在看一下输出,它大概是这样的:
AG4和AG5嵌套在AG2里面,它们每个占3个栏目。
|
|
AG4和AG5漂亮的到位了。
AG6占2个栏目,AG7占4个栏目,并且AG7是这一行的最后一个项目,或许现在你已经知道该怎么做了。
|
|
最后,让我们完成AG Grid的最后一小部分。
|
|