tables.less 4.3 KB
Newer Older
1
//
2
3
// Tables
// --------------------------------------------------
Jacob Thornton's avatar
Jacob Thornton committed
4

5

6
7
table {
  max-width: 100%;
8
  background-color: @table-bg;
9
}
10
11
12
th {
  text-align: left;
}
13
14


15
// Baseline styles
Jacob Thornton's avatar
Jacob Thornton committed
16

17
.table {
Jacob Thornton's avatar
Jacob Thornton committed
18
  width: 100%;
19
  margin-bottom: @line-height-computed;
20
  // Cells
21
22
23
  > thead,
  > tbody,
  > tfoot {
24
25
26
    > tr {
      > th,
      > td {
27
        padding: @table-cell-padding;
28
29
30
31
32
        line-height: @line-height-base;
        vertical-align: top;
        border-top: 1px solid @table-border-color;
      }
    }
33
  }
34
  // Bottom align for column headings
35
  > thead > tr > th {
36
    vertical-align: bottom;
37
    border-bottom: 2px solid @table-border-color;
38
39
  }
  // Remove top border from thead by default
40
41
42
43
44
45
  > caption + thead,
  > colgroup + thead,
  > thead:first-child {
    > tr:first-child {
      > th,
      > td {
46
47
48
        border-top: 0;
      }
    }
49
50
  }
  // Account for multiple tbody instances
51
  > tbody + tbody {
52
    border-top: 2px solid @table-border-color;
53
  }
Mark Otto's avatar
Mark Otto committed
54
55
56

  // Nesting
  .table {
57
    background-color: @body-bg;
Mark Otto's avatar
Mark Otto committed
58
  }
59
60
}

61

62
// Condensed table w/ half padding
63

64
.table-condensed {
65
66
67
  > thead,
  > tbody,
  > tfoot {
68
69
70
    > tr {
      > th,
      > td {
71
        padding: @table-condensed-cell-padding;
72
73
      }
    }
74
  }
75
76
77
}


78
// Bordered version
79
80
//
// Add borders all around the table and between all the columns.
81

82
.table-bordered {
83
  border: 1px solid @table-border-color;
84
  > thead,
85
86
  > tbody,
  > tfoot {
87
88
89
    > tr {
      > th,
      > td {
90
        border: 1px solid @table-border-color;
91
      }
liuyl's avatar
liuyl committed
92
    }
93
  }
94
95
96
97
  > thead > tr {
    > th,
    > td {
      border-bottom-width: 2px;
98
99
    }
  }
Jacob Thornton's avatar
Jacob Thornton committed
100
101
}

102

103
// Zebra-striping
104
//
105
// Default zebra-stripe styles (alternating gray and transparent backgrounds)
106

107
108
109
110
111
112
.table-striped {
  > tbody > tr:nth-child(odd) {
    > td,
    > th {
      background-color: @table-bg-accent;
    }
113
114
115
116
  }
}


117
// Hover effect
118
//
119
// Placed here since it has to come after the potential zebra striping
120

121
122
123
124
125
126
.table-hover {
  > tbody > tr:hover {
    > td,
    > th {
      background-color: @table-bg-hover;
    }
127
128
129
  }
}

130

131
// Table cell sizing
132
//
133
// Reset default table behavior
134

boomsb's avatar
boomsb committed
135
table col[class*="col-"] {
136
137
138
  float: none;
  display: table-column;
}
139
table {
140
141
  td,
  th {
boomsb's avatar
boomsb committed
142
    &[class*="col-"] {
143
144
145
146
      float: none;
      display: table-cell;
    }
  }
147
148
}

149

150
// Table backgrounds
151
//
152
153
// Exact selectors below required to override `.table-striped` and prevent
// inheritance to nested tables.
154

Chris Rebert's avatar
Chris Rebert committed
155
156
157
158
159
160
161
162
163
164
165
166
.table {
  > thead,
  > tbody,
  > tfoot {
    > tr {
      > td.active,
      > th.active,
      &.active > td,
      &.active > th  {
        background-color: @table-bg-active;
      }
    }
167
  }
168
}
169

170
// Generate the contextual variants
ggam's avatar
ggam committed
171
172
173
.table-row-variant(success; @state-success-bg; @state-success-border);
.table-row-variant(danger; @state-danger-bg; @state-danger-border);
.table-row-variant(warning; @state-warning-bg; @state-warning-border);
174
175
176
177


// Responsive tables
//
178
// Wrap your tables in `.table-responsive` and we'll make them mobile friendly
179
180
181
// by enabling horizontal scrolling. Only applies <768px. Everything above that
// will display normally.

182
@media (max-width: @screen-xs-max) {
183
184
  .table-responsive {
    width: 100%;
185
    margin-bottom: (@line-height-computed * 0.75);
186
187
    overflow-y: hidden;
    overflow-x: scroll;
188
    -ms-overflow-style: -ms-autohiding-scrollbar;
189
    border: 1px solid @table-border-color;
190
    -webkit-overflow-scrolling: touch;
191

192
    // Tighten up spacing
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
    > .table {
      margin-bottom: 0;

      // Ensure the content doesn't wrap
      > thead,
      > tbody,
      > tfoot {
        > tr {
          > th,
          > td {
            white-space: nowrap;
          }
        }
      }
    }

    // Special overrides for the bordered tables
    > .table-bordered {
      border: 0;

      // Nuke the appropriate borders so that the parent can handle them
      > thead,
      > tbody,
      > tfoot {
        > tr {
          > th:first-child,
          > td:first-child {
            border-left: 0;
          }
          > th:last-child,
          > td:last-child {
            border-right: 0;
          }
        }
227
228
229
230
231
232
233
      }

      // Only nuke the last row's bottom-border in `tbody` and `tfoot` since
      // chances are there will be only one `tr` in a `thead` and that would
      // remove the border altogether.
      > tbody,
      > tfoot {
234
235
236
237
238
239
240
        > tr:last-child {
          > th,
          > td {
            border-bottom: 0;
          }
        }
      }
241

242
243
244
    }
  }
}