2012-12-23 24 views
1

试图使表HAML,我有以下几点:每隔一行|在Haml的表的第N列

%table 
    %tbody 
    %tr 
     %th{:rowspan => 2} Name 
     %th{:class => "leftBorderS", :colspan => 5} Monday 
     %th{:class => "leftBorderS", :colspan => 5} Tuesday 
     %th{:class => "leftBorderS", :colspan => 5} Wednesday 
     %th{:class => "leftBorderS", :colspan => 5} Thursday 
     %th{:class => "leftBorderS", :colspan => 5} Friday 
     %th{:class => "leftBorderS", :colspan => 5} Saturday 
    %tr 
     - 6.times do 
     %th{:class => "leftBorderS"} A 
     %th{:class => "leftBorderD"} B 
     %th{:class => "leftBorderD"} C 
     %th{:class => "leftBorderD"} D 
     %th{:class => "leftBorderD"} E 

    - @data.each do |row| 
     %tr 
     - row.each do |column| 
      %td{:class => "leftBorderD"}= column 

CSS类:由轨道器传递

table { 
    border-collapse: collapse; 
} 
th { 
    border: 1px solid #ccc; 
    padding: 0.2em; 
} 
.weeklyReview .leftBorderS { 
    border-left: 1px solid black; 
    text-align: center; 
} 
.weeklyReview .leftBorderD { 
    border-left: 1px dotted orange; 
} 
.weeklyReview .rowGray { 
    background-color: gray; 
} 
.weeklyReview .rowWhite { 
    background-color: white; 
} 

样本数据:

@data = [["adam", 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5], ["boy", 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5], ["charles", 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5], ["david", 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5], ["echo", 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5], ["foxtro", 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5], ["gamma", 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5], ["helio", 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5], ["indigo", 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5],] 

问题出现在代码的最后部分。我希望每个其他%tr的颜色不同。目前默认是灰色的,但这仍然意味着其他每个人都必须是白色的,所以我只做了两个班级来切换两者)。同样为了分隔日子,只有某些%tds会有一个固定的左边框,否则它们会有一个虚线的边框。

对于HAML标记:

  1. 你如何通过每隔一行步骤?
  2. 你如何仅将n th实例应用于数据单元?

什么我have,它应该看起来like

我主要是在寻找语法,因为它可以应用于数据单元格,行,列或任何需要解析或步进的东西。

回答

4

这看起来像一个CSS问题。

使用nth-of-type,忘掉所有这些额外的类:

table { 
    background-color: salmon; 
} 

th { 
    background: salmon; 
} 

tr:nth-of-type(2n) { 
    background: salmon; 
} 
tr:nth-of-type(2n+1) { 
    background: lightblue; 
} 

您还可以使用列做到这一点:

td:nth-of-type(5n-3) { 
    color: white 
} 
+0

首先,你吹我的脑海里,不知道有CSS Jquery-ish功能。非常感谢。包含'%col's还是通过第n个td罚款访问它会更好吗? –

+1

我会亲自去做第n次。此外,这里有一个[小工具](http://codepen.io/sacha/full/cAJEo)帮助解决混淆(至少对我来说)第n个语法。 – bookcasey

相关问题