CSS框架和语义类名称

A bulldozer pushing the letters C S S

关于CSS框架(例如BlueprintYUI Grids960.gs )最常见的抱怨之一是,它们要求设计人员通过在HTML文档中添加表示性类名称来弄脏手指,如下所示:

<div class="span-9 last">
<div class="grid_6 alpha">

诸如"span-9"类的类名称确实让设计人员感到烦恼,他们关心其HTML代码的质量,因为它们描述了元素的外观 。 这实际上应该留给您网站样式表中定义的CSS属性。 W3C QA技巧“ 在考虑到语义的情况下使用class特别很好地解释了表示类名称的问题:

好名字不会改变。 想想为什么你想要的东西以某种方式,并没有真正了解它应该如何看。 外观总是可以改变的,但外观的原因保持不变。

也许您是务实的人,对这种事情没有任何疑问,或者由于CSS语言的局限性而认为这是必然的恶行。 尽管如此,出于这个原因,仍有很多前端忍者拒绝使用CSS框架。

然而,事实证明,最新的CSS框架系列为表示性类名称问题提供了巧妙的解决方案。

蓝图CSS是CSS布局框架的祖父,现在在其下载包中包含一个名为compress.rb的聪明Ruby脚本。 在Blueprint的compress.rb:演练中 ,Blueprint作者Joshua Clayton解释了如何使用脚本使用您自己的语义类名称来生成Blueprint样式表的自定义版本。

该过程归结为编写一个简单的配置文件,该文件告诉脚本如何将Blueprint的呈现类名称映射到您自己的语义上有意义的类名称。 该文件将如下所示:

demo:
  path: /Users/kyank/Documents/myproject
  semantic_classes:
    ".header, .footer": ".span-24, div.span-24"
    ".content": ".span-18, div.span-18"
    ".sidebar": ".span-6, div.span-6,
                 .last, div.last"

semantic_classes部分提供了映射。 在此示例中, headerfooter类将为24个网格单元宽, content类将为18个网格单元宽。 sidebar类将为6个网格单元宽,其行中的最后一个块。

编写此配置文件后,您只需运行compress.rb脚本,即可在指定路径中生成定制版本的Blueprint样式表文件(screen.css,print.css和ie.css)。 样式表将包含类似这样的规则,这些规则将网格尺寸应用于您的自定义类名称:

/* semantic class names */
.content {float:left;margin-right:10px;
  width:710px;}

…就像这样,您将获得Blueprint CSS的所有布局功能,而无需任何HTML技巧!

如果用Ruby脚本手动编译样式表听起来有点麻烦(可能是这样(特别是如果您在未安装Ruby的Windows计算机上进行开发),那么服务器端CSS框架可能是您更好的选择。

所有主要的服务器端编程语言都涌现出CSS框架。 两个著名的例子包括Compass (用于Ruby)和Scaffold (用于PHP)。 这些框架使您可以使用其他语言功能编写样式表,并在将样式表发送到浏览器时自动将其编译为标准CSS代码。

例如,使用Scaffold,您可以这样编写样式表:

@grid {
  column-width:30;
  column-count:24;
  right-gutter-width:20;
  baseline:20;
  unit:px;
}
.header, .footer {
  +columns(24);
}
.content {
  +columns(18);
}
.sidebar {
  +columns(6);
  +last;
}

@grid规则设置了Scaffold的layout插件的选项,然后像+columns(24); 当浏览器请求样式表时,(称为mixins )被编译为标准CSS属性。

这些只是最新CSS框架对那些批评者批评的一种方式,这些批评者抱怨必须牺牲HTML代码质量才能使用它们。 现在,您可以享受经过良好测试的布局框架的所有好处,并按您的条件将它们应用于HTML代码。

(照片: 恩鲍尔

From: https://www.sitepoint.com/css-frameworks-semantic-class-names/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值