根据你的职业经验,haml和sass有没有被证明是有用的?以何种方式?
Haml很好用,我经常使用它,但单单使用Sass就已经非常值得了,特别是在构建复杂样式表时。例如,CSS中最糟糕的问题之一就是在为选择器命名时需要做很多重复性工作。在CSS中,你必须这样做:
#navbar ul
#navbar ul li a
#navbar ul li a:hover
使用Sass,您可以自然地嵌套这些后代元素。
#navbar
ul
margin: 0
padding: 0
list-style: none
width: 100%
li
margin: 0
float: left
margin-right: 10px
border: 1px solid #000
a
text-decoration: none
&:hover
color: red
您还可以使用变量
!border_color = #333
.box
border = 1px "solid" !border_color
而且您可以使用它们进行数学运算
!measure = 18px
!text_size = !measure / 1.5
body
font-size = !text_size
line-height = !measure
h1
font-size = !measure
margin-bottom = !measure
h2
font-size = !measure + 2
#wrapper
width = !measure * 50
你也可以分享代码
=rounded
-moz-border-radius: 4px
-webkit-border-radius: 4px
border-radius: 4px
border: 1px solid #000
.box
+rounded
这个工具非常强大,你有必要学习它。同时,最终结果是普通的CSS,可以进行转换。
不要忘记css2sass,它可以将你现有的CSS转换为Sass文件!
如果想要的话,你可以在http://rendera.heroku.com/上尝试一些示例。这是我建立的一个网站,帮助人们学习HTML5和CSS3,并支持HAML和SASS。
还要看看StaticMatic(staticmatic.rubyforge.org),它是一个使用HAML和SASS进行静态网站制作的神奇工具。它会生成可以上传到静态主机的网站,并拥有类似Ruby on Rails的布局和模板系统。
回答你提出的问题,“值得吗”,答案是肯定的。能够使用变量、轻松地按选择器分组以及通过模块共享代码可以使复杂的样式表更容易维护。构建样式表并不需要很长时间,而且你可以使用优秀的Compass框架进一步扩展功能。例如,你可以将960.gs或Blueprint模块混合到现有的样式表中,这样就不必改变代码的标记。将所有标记添加960.gs及其“grid_12”和“container_12”类可能是不可能的,但使用Compass和Sass却非常容易。
Sass还可以更轻松地为开发模式拥有多个样式表,并生成单个样式表用于生产,从而提高客户端性能(在页面加载时减少对服务器的调用)。
HAML也有其自身的优点,虽然它们不像Sass那么明显。HAML确实使嵌套元素和声明DIV变得非常容易...例如,使用普通的960.gs就很容易与HAML配合使用:
#header.container_12
.grid_12
%h1 Welcome!
#middle.container_12
.grid_8
%h2 Main content
.grid_4
%h3 Sidebar
输入工作量大大减少。如果你决定出于某种原因在所有这些内容周围添加一个包装器,只需将整个内容缩进到一个新标签下即可。
希望这有所帮助。我 <3 Sass。
.table
.thead
.tr
.tr
<table>
<thead>
<tr>...</tr>
<tr>...</tr>