rails + compass:直接使用haml + blueprint的优势

时间:2010-05-25 11:22:26

标签: ruby-on-rails css haml sass compass-sass

我在rails项目中使用haml(+ sass)有一些经验。我最近开始使用blueprintcss - 我唯一做的就是将blueprint.css转换为sass文件,并从那里开始编码。我甚至有一个rails generator默认包含所有这些。

似乎Compass完成了我的工作以及其他事情。我试图了解其他东西是什么 - 但文档/教程不是很清楚。

这些是我的结论:

  • Compass附带内置sass mixins ,可实现常见的CSS惯用法,例如带图标或水平列表的链接。我的解决方案没有提供类似的东西。 (指南针1分)。
  • Compass有几个命令行选项:您可以创建一个rails项目,但您也可以在现有的rails项目上“安装”它。我想,轨道发生器可以个性化来做同样的事情。 (TIE)。
  • Compass有两种模式使用蓝图:“基本”和“语义”用法。我不清楚这些之间的差异。使用我的rails生成器我只有一种模式,但似乎足够了。 (TIE)
  • 显然,除了蓝图(例如YUI)之外,Compass还准备使用其他框架。我找不到太多关于此的文档,我对它也不感兴趣 - 蓝图对我来说没问题(领带)。
  • 指南针的学习曲线似乎有点僵硬,文档似乎很少。学习可能有点困难。另一方面,我知道我自己的系统的来龙去脉,可以马上使用它。 (我的系统为1分)。

通过这种分析,我很想尝试Compass。

我的分析是否正确?我错过了任何关键点,还是我错误地评估了这些要点?

4 个答案:

答案 0 :(得分:25)

理想的目标是风格和内容的分离:它并不总是100%可行,但通过使用语义标记可以很好地完成。蓝图和其他CSS框架完全失败了。

Compass背后的最初想法是避免使用Blueprint生成的可视标记来污染HTML:如果您在标记中编写class="column-4",那么您也可以将style="width:160px"放在那里。在语义上它是相同的含义,并且维持相同的重复量。

Compass将像.column-4这样的Blueprint类转换为mixin,您可以将其应用于有意义的选择器:

#sidebar
  +column(4)

这样,您只需要在样式表中维护它,而不是在许多模板和HTML文件中维护它。

指南针是项目感知的。它将处理编译整个样式表树,甚至在运行compass watch时自动保存。

指南针提供了一些非常有用的功能,例如:

image_url 是一个可配置的功能,可以处理相对或绝对路径,甚至可以根据需要设置旋转资产主机。

CSS3模块负责处理圆角,阴影等所有特定于浏览器的样式规则。

常规实用程序为您一直所做的事情提供帮助,但重复次数较少(特别是对于跨浏览器问题)。这些是我经常使用的一些基本的:

  • + clearfix + pie-clearfix (跨浏览器清算方法)
  • + float 确保您不会忘记显示:在IE前面内联显示...(如果有时间删除旧的IE,则只需一次更改。)
  • +替换文字隐藏文字并定位图像替换背景。
  • + hover-link 将:悬停下划线规则添加到基本链接样式

您可以在新docs site for Compass上查看这些内容。

然后,除了内置的蓝图之外,Compass还提供了许多其他样式框架的功能。例如,请查看Susy,这是一个Sass原生布局框架,而不仅仅是一个CSS端口。它专注于柔性和流体网格。

答案 1 :(得分:5)

'语义模式'指的是使用比css框架附带的更多语义类名的可能性:.article vs .grid_1。我个人认为这是一个很大的选择。

答案 2 :(得分:2)

我不确定这些资源最近是否只显示过,但您是否看到了Compass CSS3 helpersGeneral utilities - (我认为都有详细记录) - 他们真的加快了速度我的界面建立了很多。

另一个很棒的资源是Compass plugins page

我个人喜欢将这些实用程序Sass文件复制到rubygem中并手动将它们包含在我的项目的Sass文件中,因为它感觉很奇怪,引用了存储在项目之外的Sass。

答案 3 :(得分:0)

指南针看起来对我来说也是一个很好的解决方案,但在尝试了一个项目后,我并没有真正看到使用它的巨大优势。和你一样,我对蓝图很好,我没有看到需要在haml / sass之上添加另一层。

我最终剥离了该项目的指南针,只是使用蓝图CSS文件的sass版本,然后从那里开始。我将任何自定义/附加样式存储在单独的sass文件中,就是这样。如果你只想保持简单,就不需要指南针或类似的东西。