关于CSS框架(例如Blueprint , YUI Grids和960.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
部分提供了映射。 在此示例中, header
和footer
类将为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/