css 布局框架 工具,Semantic:来自未来的CSS布局框架

解读问题

问题1:它们不是语义架构

这是我从“纯化论者”口中听到过的最大的抱怨,自我在两年前创建1KB CSS Grid框架开始,CSS网格系统就规定标记和描述必须在一起。从grid_x的CSS类到HTML元素,表象信息与其他语义标记都是混合在一起,这些,都需要网页设计师自行添加。

浮动元素也必须同时清除,因为它常常会把不必要的元素添加到网页上。下图中的“clearing”DIV标签就是引用960.gs这套CSS框架:

%E5%9B%BE%E7%89%8711.png

问题2:它们是固定的

在固定宽度的布局下,CSS网格布局表现出色,在处理浮动元素的百分比时比较麻烦。然而,大多数的网格系统都提供浮动属性选项,这非常糟糕,当我们 在网格中插入列时,网格样式常常因此而扭曲变形。在下面的1KB CSS Grid的例子中,“.grid_6”的宽度百分比被设置50%,而 “.grid_3”则被设置为25%。

但是,当“.grid_3”出现在“.grid_6”单元格内时,这个定制的百分比就必须重新计算。虽然典型的网格系统只需要12条CSS规则就能指定所有列数的宽度,但一层的浮动网格就已需要144条规则(合理,但并不人性化)。

%E5%9B%BE%E7%89%8721.png

问题3:他们不会“响应”

响应交互的网页设计在今年甚为流行,虽然140 CSS Grid和Adapt.js等新工具能够让设计师根据屏幕尺寸或设备类型调整页面布局,但目前业内依然没有找到最优的布局方案。

错在工具

造成上面三大问题的直接“元凶”就是我们现有工具的局限性。或是通过给表现类添加标记,向我们的原则妥协;或坚守自我立场,完全放弃网格系统,这就是CSS留给我们的最后通牒。但是,我们并不能这样做,你说是吧?

确实是风云突变,虽然我们等待浏览器厂商为这个有缺陷的网格布局模块添加原生CSS语法支持,但我们期待的未来CSS技术现在已经降临了,通过LESS CSS框架,每个浏览器都可以支持所有CSS语法。

%E5%9B%BE%E7%89%873.jpg

LESS给CSS带来了强劲的新功能

LESS是什么?

你或许听说过LESS框架,但却可能从未真正接触并使用过。它跟其他工具(如SASS 和CleverCSS)不同,LESS完全是为重塑CSS语法而生的。与其说是在造物,我们更愿意说LESS是CSS的集大成者。LESS的CSS让你可以在CSS里使用变量、执行运算操作,甚至是可重用的Mixins语法。下面就是LESS的一些样例。

变量

一旦定义了某个值,你就可以在样式表中定义变量来重用这个值。

%E5%9B%BE%E7%89%8742.png

上面的例子,编译后显示如下:

%E5%9B%BE%E7%89%8751.png

运算

在CSS里对颜色或者其他数值进行加减乘除

%E5%9B%BE%E7%89%876.png

在这个例子里,1px乘以3的等同结果如下:

%E5%9B%BE%E7%89%877.png

Mixins语法

Mixins语法是最强大的一个功能点,它可以让整段CSS语句被重用。使用简单,你只需在另一个类中引用一个mixin的类名,更让人惊喜的是,LESS还能让你向mixin语句中传入参数。

%E5%9B%BE%E7%89%878.png

繁琐,浏览器新标准专属的CSS3语法充分证明mixins给我们带来的优势:

%E5%9B%BE%E7%89%8791.png

LESS的不足

刚接触LESS时,我对它也是抱有许多不信任的想法,但现在,我已经是它的忠实支持者。LESS样式简洁易读,而且支持代码重用。然而,LESS也存在一些需要注意的不足:

1. 必须被编译。为保证CSS代码不出任何差错,这是额外的一步。

2. 依赖LESS 文档和结构,已编译的CSS文件的体积可能比传统的CSS文件偏大。

编译LESS注释

若要编译LESS样式到CSS内,有三种实现方法。

让浏览器负责执行编译工作

正如它的命名,LESS.js 就是用JavaScript编写的,所以它可以在用户的浏览器直接编译成CSS代码。虽然这个方法让开发者很便利,但在作出决定前,我们不妨继续了解接下来的另外两种方法,这会比较恰当,因为在浏览器编译代码需要耗用一定的加载时间。

在服务器端预编译代码

我们可以使用Node.js在服务端预编译LESS.js,并且这已经移植到好几种服务端语言中。

使用桌面应用编译

LESS.app是一款Mac系统应用,它可以编译保存在你电脑中的本地文件。

LESS框架对CSS语法的改革为更强大的网页布局方法的到来打下了坚实基础。而这个强大方法就是The Semantic Grid System框架。它就是CSS网格布局的新星。

1. 具备语义特征;

2. 布局方式,既可固定,也可浮动;

3. 可响应的;

4. 允许实时直接在样式表中修改列宽和列间距。

%E5%9B%BE%E7%89%8710.jpg

The Semantic Grid System使用 LESS的CSS方法提供一种新的页面布局方式.

配置网格样式

听起来不像是真的?我们来了解它是怎么运作的吧!

首先,导入“Semantic”网格框架到你的LESS样式表中。

%E5%9B%BE%E7%89%87112.png

接下来,为列、列宽、列间距定义变量,并为它们设置一个初始值。这个初始值,最终将变成960像素宽。

%E5%9B%BE%E7%89%8712.png

网格已经配置好后,我们在页面布局时就可以使用了。

使用网格样式

现在,网格已经配置好了,假设,HTML页面上有两个标签元素(如下),而你希望它们是并排布局的。

%E5%9B%BE%E7%89%8713.png

要实现并排布局,我们只需向.column()的Mixin语句中传入“列数”即可。

%E5%9B%BE%E7%89%8714.png

上面的LESS编译后的代码样式如下:

%E5%9B%BE%E7%89%8715.png

点击这里查看最终效果。这种方法的最大不同点在于它没有在标记中使用丑陋的.grid_x 类。取而代之,列宽直接在样式表中被设置好,完全将陈述标记和表现样式表独立开来。这也是它被称为semantic 的一大原因。

那么,这套框架的幕后秘密是什么呢?

为了满足你的好奇心,下面就是一些关键的mixins代码。幸运的是,这些函数都是隐藏在 grid.less文件里,所以无需,也永远不必进行编辑。

%E5%9B%BE%E7%89%8716.png

浮动布局的实现

上面的例子展示了Semantic框架的固定布局功能,而百分比的浮动布局方式也同样很简单。为了从像素跳转到百分比,我们需要在原来的代码中增加一个变量:

%E5%9B%BE%E7%89%8717.png

无需更多操作,编译后的CSS代码如下:

%E5%9B%BE%E7%89%8718.png

响应布局的实现

没有一套先进的网格布局框架是完整的,除非我们能根据用户屏幕或者其他设备的大小调整页面布局。现在通过Semantic.gs,我们可以先查询设备信息并设置极值,点击查看效果图:

%E5%9B%BE%E7%89%8719.png

亲自尝试

就在几天前,Twitter推出了一个名为“Bootstrap”的项目,这个项目提供类似于Semantic的网格布局框架,这套框架也是使用LESS变量和Mixins构建。未来的CSS布局似乎越来越清晰了。

The Semantic Grid System给我们带来了最好的:强大且便利的CSS网格布局,以及将标记和表现分离的新想法。你也来下载“Semantic”吧,分享你的“Semantic”到GitHub,让我们知道你的想法!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值